美文网首页
命令行音乐库管理工具beets配置实战——按照歌单管理音乐

命令行音乐库管理工具beets配置实战——按照歌单管理音乐

作者: mudssky | 来源:发表于2020-02-13 00:08 被阅读0次

    命令行音乐库管理工具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安装插件的时候会自动安装上,所以不用操心了。

    还有这些插件默认都是自动开启的,所以就不需要我们操心配置了。基本上不用怎么配置。

    有以下几点要注意

    1. 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
    

    ​ 这个软件默认情况下是这三种目录

    1. default就是按照专辑来分目录
    2. singleton是当发现一个文件夹中不是一个专辑的时候,而是不同的单曲的时候会采用的方式
    3. 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次。但是我这里网不好,所以还没配。

    相关文章

      网友评论

          本文标题:命令行音乐库管理工具beets配置实战——按照歌单管理音乐

          本文链接:https://www.haomeiwen.com/subject/niihfhtx.html