命令行音乐库管理工具beet配置实战——按照歌单管理音乐
花了两天时间,把官方文档基本熟悉了,终于掌握满足我的需求的使用方式了。这一篇算是一个总结。从零开始按照这篇文章配置就能达到和我一样的效果。
通常我们国人使用的各种网络音乐软件,比如qq音乐,网易云音乐这些都是按照歌单管理音乐的。我们会把不同类型的歌放到不同的歌单。所以这里我们的目录结构就是一个个代表歌单的文件夹。
01.准备工作
第一步,安装beet,可以在安装python之后,用python的包管理工具pip来安装
pip install beets
第二步,安装需要的插件
执行 pip install beets[chroma,fetchart,fromfilename,lastgenre,lyrics,web]
需要安装的几个插件分别的作用是:
- chroma 生成音乐指纹,通过音乐指纹来检索音乐
- fetchart 获取音乐的封面图片
- fromfilename 给beet提供从文件名中获取歌曲相关信息的功能。因为beet默认是从metadata中获取信息,对于有些metadata比较贫乏的音乐,安装这个插件就可以从文件名中猜tag,比如说歌名就是文件名的文件。。。
- lastgenre ,从last.fm网站上获取genre信息,也就是音乐分类用的标签
- lyrics 从 Lyric Wiki, Musixmatch, Genius.com,还有google查询api 4个地方获取歌词
- web 提供web接口,可以通过浏览器访问你的音乐库。
安装完之后,我们要在配置文件中把插件添加上,其中个别插件的依赖也要注意安装上
python包的依赖在执行pip安装插件的时候会自动安装上,所以不用操心了。
还有这些插件默认都是自动开启的,所以就不需要我们操心配置了。基本上不用怎么配置。
有以下几点要注意
- chroma需要安装一个计算音乐指纹的工具,在windows平台下可以安装命令行工具 Chromaprint,去这个网站下载一个命令行工具,加入环境变量即可
02.配置文件
配置文件的目录,在windows下默认是%APPDATA%\beets\config.yaml
,这个文件的位置没有提供修改的方法。
使用beet config --paths
可以显示配置文件的位置
001.音乐库路径配置
首先我们需要配置音乐库的位置
比如像我这样配置,配置文件在目标目录也备份一份,这样以后拷贝的时候,直接把整个音乐文件夹考走,换台电脑还能接着用。
library: C:/MusicLibrary/musiclibrary.db
directory: C:/MusicLibrary
import下面可以配置一些导入式选项,默认行为是复制音乐到你的音乐库,如果你不想复制,可以这么做,
注意yaml文件中不能出现tab键,应该使用空格,而且键和值中间也要有一个空格
import:
copy: no
move: yes
不过我这里就按照默认配置来了
我这里要设置的是默认打开日志,同样是在import section的下面设置。这里设置的是日志的文件名,默认是在%APPDATA%\beets\
目录
import:
log: musiclibrary.log
002.插件配置
然后,把插件加入配置文件中。之后这些插件各自有自己的配置项,如果你想改变默认行为,就去查看相关的文档吧。
这里只要在配置文件中加这么一行:
# 添加插件
plugins: [fetchart,lyrics,lastgenre,fromfilename,web,chroma]
插件全部添加完后,可以使用 beet version
命令,查看是否安装成功
我这里是如下成功的显示
beets version 1.4.9
Python version 3.7.2
plugins: chroma, fetchart, fromfilename, lastgenre, lyrics, web
003.音乐库路径格式配置,按歌单的样式来
然后是最关键的一步。这里使用了beets的自定义字段的功能。我们导入歌单的时候,可以使用set命令设置一个自定义字段playlist,值定为歌单名,那么我们在配置文件中,就可以按照不同的歌单名来配置路径。
我们先来看看他默认的配置:
paths:
default: $albumartist/$album%aunique{}/$track $title
singleton: Non-Album/$artist/$title
comp: Compilations/$album%aunique{}/$track $title
这个软件默认情况下是这三种目录
- default就是按照专辑来分目录
- singleton是当发现一个文件夹中不是一个专辑的时候,而是不同的单曲的时候会采用的方式
- comp 则是当专辑的音乐家有多名的时候,因为default除了专辑名最上层的目录是音乐家,有多名的时候分给哪一个都很困扰,很好理解
$
符号后面跟的是beets数据库中使用的字段,大部分都利用了音频的元数据metadata,小部分是数据库内建字段
使用beet fileds
命令查看支持的字段,包括自己的自定义字段
这里我的结果是:
Item fields:
acoustid_fingerprint
acoustid_id
added
album
album_id
albumartist
albumartist_credit
albumartist_sort
albumdisambig
albumstatus
albumtype
arranger
artist
artist_credit
artist_sort
asin
bitdepth
bitrate
bpm
catalognum
channels
comments
comp
composer
composer_sort
country
day
disc
disctitle
disctotal
encoder
filesize
format
genre
grouping
id
initial_key
label
language
length
lyricist
lyrics
mb_albumartistid
mb_albumid
mb_artistid
mb_releasegroupid
mb_releasetrackid
mb_trackid
media
month
mtime
original_day
original_month
original_year
path
r128_album_gain
r128_track_gain
releasegroupdisambig
rg_album_gain
rg_album_peak
rg_track_gain
rg_track_peak
samplerate
script
singleton
title
track
tracktotal
year
Album fields:
added
album
albumartist
albumartist_credit
albumartist_sort
albumdisambig
albumstatus
albumtotal
albumtype
artpath
asin
catalognum
comp
country
day
disctotal
genre
id
label
language
mb_albumartistid
mb_albumid
mb_releasegroupid
month
original_day
original_month
original_year
path
r128_album_gain
releasegroupdisambig
rg_album_gain
rg_album_peak
script
year
Item flexible attributes:
data_source
playlist
Album flexible attributes:
可以看到,Item flexible attributes这一项里面多了一个playlist,这个就是我添加的字段。
我的按照歌单配置的路径是这样的:
其中%
开头的是beets支持的模板函数,具体有哪些请自行查询官方文档
这里的%aunique{}
是起到防止标题重名的作用
很明显地看到,我这里都是简单的两层目录,而且按照playlist字段的属性,分别设置了不同的目录,也就是歌单。
path:
playlist:AnimeSongs: AnimeSongs/$title%aunique{}
playlist:JapaneseSongs: JapaneseSongs/$title%aunique{}
03.开始使用
经过上面的步骤,最基本的配置就完成了。
接下来我们就可以导入音乐了
把原先自己的文件夹的音乐,使用beets导入
beet import --singletons --set=playlist=AnimeSongs 'favorite anime songs'
其中 --singletons
是把目录作为单曲导入,设置playlist字段。指定目录。
beets就会自动把歌曲导入音乐库,如果你要move而不是copy音乐(节省文件传输操作的时间),加上--move选项。
执行命令后除了导入,其实主要的一个操作是从网上搜索元数据来修改你的音乐的元数据,包括封面,歌词等等,如果和网上数据库搜索到的信息不一致,beets会提示你修改。
具体怎么选择看我发表的第一篇beets的文章
把你的音乐导入完后,就可以体验到数据库带来的强大搜索功能了。
有些音乐的信息https://musicbrainz.org/ 里面找不到,你也可以自己在这个网站上编辑数据,做做贡献。还有音乐指纹插件,可以配置一个上传用的id,用你的音乐指纹数据帮助网站扩大数据库。具体怎么获取apikey看这篇get an API key
# 使用acoustid提交自己音乐文件的指纹信息,帮助 Acoustid database 收集信息
acoustid:
apikey: LWu4LZ7tLQ
还有歌词插件可以配置谷歌api,每天免费查100次。但是我这里网不好,所以还没配。
网友评论