python音乐管理命令行工具beets的使用(音频转码,标签管理,web音乐播放器,音乐数据库)

音乐管理命令行工具beets的使用(音频转码,标签管理,web音乐播放器,音乐数据库)

01.功能介绍

github上有的功能介绍,谷歌翻译一下贴过来

  • 提取或计算您可能需要的所有元数据:专辑封面,歌词,流派,节奏,ReplayGain级别或声学指纹。
  • 从MusicBrainz,Discogs和Beatport获取元数据。 或者使用歌曲的文件名或其声学指纹来猜测元数据。
  • 将音频转码为您喜欢的任何格式。
  • 检查您的音乐库中是否有重复的曲目和专辑,或者缺少曲目的专辑。
  • 清理其他不那么出色的工具留下的粗糙标签。
  • 从文件的元数据嵌入和提取专辑封面。
  • 通过Web浏览器以图形方式浏览音乐库,并在任何支持HTML5音频的浏览器中播放。
  • 从命令行分析音乐文件的元数据。
  • 使用会说MPD协议并具有多种惊人接口的音乐播放器来聆听您的音乐库。

02.安装

这是基于python开发的软件,可以使用pip包管理器来安装。

pip install beets

然后可以查看帮助文档
beet -h

beet.exe
Usage:
  beet COMMAND [ARGS...]
  beet help COMMAND

Options:
  --format-item=FORMAT_ITEM
                        print with custom format
  --format-album=FORMAT_ALBUM
                        print with custom format
  -l LIBRARY, --library=LIBRARY
                        library database file to use
  -d DIRECTORY, --directory=DIRECTORY
                        destination music directory
  -v, --verbose         log more details (use twice for even more)
  -c CONFIG, --config=CONFIG
                        path to configuration file
  -h, --help            show this help message and exit

Commands:
  config            show or edit the user configuration
  fields            show fields available for queries and format strings
  help (?)          give detailed help on a specific sub-command
  import (imp, im)  import new music
  list (ls)         query the library
  modify (mod)      change metadata fields
  move (mv)         move or copy items
  remove (rm)       remove matching items from the library
  stats             show statistics about the library or a query
  update (upd, up)  update the library
  version           output version information
  write             write tag information to files

可以去看官方的帮助文档 https://beets.readthedocs.io/en/stable/index.html

官网 https://beets.io/

03.快速上手

001.首先进行一些基础的配置

输入下面的命令找到配置文件的位置

beet config -p

我是win10系统,显示的地址是这样的C:\Users\yonghuming\AppData\Roaming\beets\config.yaml

输入下面的命令会打开默认编辑器编辑配置文件,会根据$editor变量确定你的默认编辑器

beet config -e

我这边没有设置默认编辑器,所以直接用notepad打开那个文件。

一开始配置文件是空的,需要你加上一点东西。

首先是指定你的音乐文件夹的目录

directory: C:/MySQMusic
library: C:/MySQMusic/musiclibrary.db

这个软件的默认设定会假定你要创建一个新的有组织的音乐库,当你使用import命令时会把对象清理干净(加标签,标签纠错之类)后复制到你的音乐库文件夹里面。

如果你不要复制,而是移动文件,加入下面的一条

import:
    move: yes

如果你想保持现在的目录结构(这个应该是最常用的,这样就能兼容我原来按歌单建的文件夹了),只纠正标签,那么在import下面加上copy: no

ps:它默认的目录结构是歌手》专辑》歌这样子,对于我这种听歌从来不按专辑,哪首好听就把哪首加歌单的人来说没什么意义

如果你想保持原来的标签不修改,文件名也不重命名,那么在import后面加上write:no

这样就是既不拷贝,也不修改,只是把歌曲信息录入数据库而已。

然后这个软件自动修改标签后,修改之前的标签也会留在数据库里,你还可以把他们变回来。

使用命令beet config -d,查看默认配置,看看总共有哪些配置,然后我们照着这个配置文件修改就可以了

library: library.db
directory: ~/Music
import:
    write: yes
    copy: yes
    move: no
    link: no
    hardlink: no
    delete: no
    resume: ask
    incremental: no
    incremental_skip_later: no
    from_scratch: no
    quiet_fallback: skip
    none_rec_action: ask
    timid: no
    log:
    autotag: yes
    quiet: no
    singletons: no
    default_action: apply
    languages: []
    detail: no
    flat: no
    group_albums: no
    pretend: no
    search_ids: []
    duplicate_action: ask
    bell: no
    set_fields: {}

clutter: [Thumbs.DB, .DS_Store]
ignore:
- .*
- '*~'
- System Volume Information
- lost+found
ignore_hidden: yes

replace:
    '[\\/]': _
    ^\.: _
    '[\x00-\x1f]': _
    '[<>:"\?\*\|]': _
    \.$: _
    \s+$: ''
    ^\s+: ''
    ^-: _
path_sep_replace: _
asciify_paths: no
art_filename: cover
max_filename_length: 0

aunique:
    keys: albumartist album
    disambiguators: albumtype year label catalognum albumdisambig releasegroupdisambig
    bracket: '[]'

overwrite_null:
    album: []
    track: []

plugins: []
pluginpath: []
threaded: yes
timeout: 5.0
per_disc_numbering: no
verbose: 0
terminal_encoding:
original_date: no
artist_credit: no
id3v23: no
va_name: Various Artists

ui:
    terminal_width: 80
    length_diff_thresh: 10.0
    color: yes
    colors:
        text_success: green
        text_warning: yellow
        text_error: red
        text_highlight: red
        text_highlight_minor: lightgray
        action_default: turquoise
        action: blue

format_item: $artist - $album - $title
format_album: $albumartist - $album
time_format: '%Y-%m-%d %H:%M:%S'
format_raw_length: no

sort_album: albumartist+ album+
sort_item: artist+ album+ disc+ track+
sort_case_insensitive: yes

paths:
    default: $albumartist/$album%aunique{}/$track $title
    singleton: Non-Album/$artist/$title
    comp: Compilations/$album%aunique{}/$track $title

statefile: state.pickle

musicbrainz:
    host: musicbrainz.org
    ratelimit: 1
    ratelimit_interval: 1.0
    searchlimit: 5

match:
    strong_rec_thresh: 0.04
    medium_rec_thresh: 0.25
    rec_gap_thresh: 0.25
    max_rec:
        missing_tracks: medium
        unmatched_tracks: medium
    distance_weights:
        source: 2.0
        artist: 3.0
        album: 3.0
        media: 1.0
        mediums: 1.0
        year: 1.0
        country: 0.5
        label: 0.5
        catalognum: 0.5
        albumdisambig: 0.5
        album_id: 5.0
        tracks: 2.0
        missing_tracks: 0.9
        unmatched_tracks: 0.6
        track_title: 3.0
        track_artist: 2.0
        track_index: 1.0
        track_length: 2.0
        track_id: 5.0
    preferred:
        countries: []
        media: []
        original_year: no
    ignor: []
    required: []
    ignored_media: []
    ignore_data_tracks: yes
    ignore_video_tracks: yes
    track_length_grace: 10
    track_length_max: 30

具体参数的解释,看这篇帮助文档 https://beets.readthedocs.io/en/stable/reference/config.html

002.导入音乐库

导入音乐库之前注意要做好备份,因为这个操作设计到修改文件和移动文件相关的操作。

有两种把你的音乐库加入数据库的方式

a)使用现存的元数据,不进行改动

b) 让beet自动查询数据来修改你的音乐的元数据,添加标签之类的。

如果是方式b的话,可能消耗很长时间,并且有些修改操作会询问你。

执行下面的命令。import你想导入的目录即可,这样就会自动修改标签了

$ beet import /path/to/my/music

如果你不想自动修改标签,使用-A选项,表示don’t autotag

$ beet import -A /my/huge/mp3/library

除了导入音乐库,添加新音乐的时候也是用import命令

03.自动标签机制

001.机制解释

beet import 命令在一个文件夹中执行后会自动把音乐文件加入到你的音乐库,并且给他们完善标签。(除非你传递-noautotag选项) import默认设定在导入音乐的过程中有一些假定的限制,

  • 音乐必须按照专辑分目录,每个专辑都是一个目录。这个设定也有一些例外,
    • 一、比如看起来像是多碟专辑的目录,比如两个目录名字都含有disk,或者都含有cd加上数字,这些会进入一个专辑里
    • 二、如果你把一个目录中不小心混了多个目录,可以用beet把他们根据元数据(metadata)重新分好目录,用--group-albums选项
  • 音乐标签可能很不完善,默认会根据存在的元数据来查找tag,但是还有其他的一些解决方案,
    • 使用E和I选项描述如何从MusicBrainz查找专辑或者歌曲
    • 使用听歌识曲插件Acoustid plugin
    • 使用FromFilename plugin 插件,可以从文件名帮助猜测tag。比如 ’03 Call Me Maybe.mp3‘这样的文件名包含歌名的。
  • 目前支持的格式有 MP3, AAC, FLAC, ALAC, Ogg Vorbis, Monkey’s Audio, WavPack, Musepack, Windows Media, Opus, and AIFF

002.选项

To import music, just say beet import MUSICDIR. There are, of course, a few command-line options you should know:

  • beet import -A: don’t try to autotag anything; just import files (this goes much faster than with autotagging enabled)
  • beet import -W: when autotagging, don’t write new tags to the files themselves (just keep the new metadata in beets’ database)
  • beet import -C: don’t copy imported files to your music directory; leave them where they are
  • beet import -m: move imported files to your music directory (overrides the -c option)
  • beet import -l LOGFILE: write a message to LOGFILE every time you skip an album or choose to take its tags “as-is” (see below) or the album is skipped as a duplicate; this lets you come back later and reexamine albums that weren’t tagged successfully
  • beet import -q: quiet mode. Never prompt for input and, instead, conservatively skip any albums that need your opinion. The -ql combination is recommended.
  • beet import -t: timid mode, which is sort of the opposite of “quiet.” The importer will ask your permission for everything it does, confirming even very good matches with a prompt.
  • beet import -p: automatically resume an interrupted import. The importer keeps track of imports that don’t finish completely (either due to a crash or because you stop them halfway through) and, by default, prompts you to decide whether to resume them. The -p flag automatically says “yes” to this question. Relatedly, -P flag automatically says “no.”
  • beet import -s: run in singleton mode, tagging individual tracks instead of whole albums at a time. See the “as Tracks” choice below. This means you can use beet import -AC to quickly add a bunch of files to your library without doing anything to them.
  • beet import -g: assume there are multiple albums contained in each directory. The tracks contained a directory are grouped by album artist and album name and you will be asked to import each of these groups separately. See the “Group albums” choice below.

003.相似度

当导入音乐库时,相似度低的匹配会向你询问。

$ beet imp witchinghour
Tagging:
    Ladytron - Witching Hour
(Similarity: 98.4%)
* Last One Standing      -> The Last One Standing
* Beauty                 -> Beauty*2
* White Light Generation -> Whitelightgenerator
* All the Way            -> All the Way...

004.选择

When beets needs your input about a match, it says something like this:

Tagging:
    Beirut - Lon Gisland
(Similarity: 94.4%)
* Scenic World (Second Version) -> Scenic World
[A]pply, More candidates, Skip, Use as-is, as Tracks, Enter search, enter Id, or aBort?

When beets asks you this question, it wants you to enter one of the capital letters: A, M, S, U, T, G, E, I or B. That is, you can choose one of the following:

  • A: Apply the suggested changes shown and move on.
  • M: Show more options. (See the Candidates section, below.)
  • S: Skip this album entirely and move on to the next one.
  • U: Import the album without changing any tags. This is a good option for albums that aren’t in the MusicBrainz database, like your friend’s operatic faux-goth solo record that’s only on two CD-Rs in the universe.
  • T: Import the directory as singleton tracks, not as an album. Choose this if the tracks don’t form a real release—you just have one or more loner tracks that aren’t a full album. This will temporarily flip the tagger into singleton mode, which attempts to match each track individually.
  • G: Group tracks in this directory by album artist and album and import groups as albums. If the album artist for a track is not set then the artist is used to group that track. For each group importing proceeds as for directories. This is helpful if a directory contains multiple albums.
  • E: Enter an artist and album to use as a search in the database. Use this option if beets hasn’t found any good options because the album is mistagged or untagged.
  • I: Enter a metadata backend ID to use as search in the database. Use this option to specify a backend entity (for example, a MusicBrainz release or recording) directly, by pasting its ID or the full URL. You can also specify several IDs by separating them by a space.
  • B: Cancel this import task altogether. No further albums will be tagged; beets shuts down immediately. The next time you attempt to import the same directory, though, beets will ask you if you want to resume tagging where you left off.

005.候选选项

If you choose the M option, or if beets isn’t very confident about any of the choices it found, it will present you with a list of choices (called candidates), like so:

Finding tags for "Panther - Panther".
Candidates:
1. Panther - Yourself (66.8%)
2. Tav Falco's Panther Burns - Return of the Blue Panther (30.4%)
# selection (default 1), Skip, Use as-is, or Enter search, or aBort?

Here, you have many of the same options as before, but you can also enter a number to choose one of the options that beets has found. Don’t worry about guessing—beets will show you the proposed changes and ask you to confirm them, just like the earlier example. As the prompt suggests, you can just hit return to select the first candidate.

04.高级使用

这里主要是关于配置文件和各种插件的。

001.获取封面,专辑类别和歌词

配置中加入这三个插件即可

plugins: fetchart lyrics lastgenre

注意,有些插件有自己特殊依赖需要单独安装,使用pip安装即可

pip install beets[fetchart,lyrics,lastgenre]

002.自定义文件和文件夹名

关于路径名配置有一个文档 可以看 https://beets.readthedocs.io/en/stable/reference/config.html#path-format-config

为了灵活设置文件夹名和文件名有两点需要知道:

  • 模板函数,可以用来给你的路径名加上一点逻辑操作,比如,找到一个艺术家的首字母 %upper{%left{$albumartist,1}}
  • 如果需要更加灵活, Inline Plugin 这个插件可以支持使用python代码生成文件名,还是获取艺术家首字母的例子initial: albumartist[0].upper()

003.使你的音乐能通过网络访问

安装 Web Plugin插件,beet web 运行服务器后,你可以通过地址用浏览器访问。

004.格式转换

安装 Convert Plugin插件,需要安装ffmpeg,查看它的帮助文档https://beets.readthedocs.io/en/stable/plugins/convert.html

005.存储自定义字段

beets数据库有很多内置字段,你也可以自己设置一些新字段

比如说你想决定音乐什么时候播放,比如说某音乐家的音乐适合派对的时候播放

你需要创造一个context属性在记录这个值,使用modify命令

beet modify context=party artist:'beastie boys'

执行这个命令后,beets会询问你让你做出选择

你也可以用自己定义的字段来查询

beet ls context:mope

自定义字段甚至可以用在文件名定义中

删除操作,执行下面的代码

beet modify context! artist:'beastie boys

006.手动设置路径样式

之前有讲过整体的路径样式的配置。但是有时候,你想要对某些音乐进行独立配置。

比如说有些你不怎么喜欢的音乐,但是为了播放给朋友和家人听需要保存。

我们就可以像上面005一样用一个灵活的属性来存储一个标记用于分类

比如

beet modify bad=1 christmas

然后你就可以查询这个字段了。可以用不同的排序方式,也可以在配置文件中进行配置

paths:
    bad:1: Bad/$artist/$title
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容