通过命令行组织音乐?

通过命令行组织音乐?

我有一个相当不错的歌曲库,可以从我的 Google 音乐帐户中获取。但是,现在这些歌曲没有结构,只有单个文件夹中的大量歌曲。

有没有一个命令行工具可以读取这些内容,并为我标记/排序?我知道有很多基于 UI 的工具可以做到这一点,但我的服务器是无头的。

答案1

我找到了甜菜,这几乎就是我所期望的。这是一个用 Python 编写的命令行工具,可以为您标记、排序和清理音乐库。插件可能性也相当不错。

答案2

您可以使用外置工具从音乐文件中读取 ID3 标签。然后在脚本中使用此信息重命名/移动文件,使其结构更易读。

$ exiftool Martin_Garrix-Animals_\(Original_Mix\).mp3 
ExifTool Version Number         : 10.00
File Name                       : Martin Garrix - Animals (Original Mix).mp3
Directory                       : .
File Size                       : 12 MB
File Modification Date/Time     : 2014:01:13 11:10:16-02:00
File Access Date/Time           : 2016:01:14 10:03:18-02:00
File Inode Change Date/Time     : 2015:12:27 00:39:21-02:00
File Permissions                : rwxrwxr-x
File Type                       : MP3
File Type Extension             : mp3
MIME Type                       : audio/mpeg
MPEG Audio Version              : 1
Audio Layer                     : 3
Audio Bitrate                   : 320 kbps
Sample Rate                     : 44100
Channel Mode                    : Joint Stereo
MS Stereo                       : On
Intensity Stereo                : Off
Copyright Flag                  : True
Original Media                  : True
Emphasis                        : None
ID3 Size                        : 57933
Band                            : Martin Garrix
Album                           : Animals
Beats Per Minute                : 128
Genre                           : Progressive House
Track                           : 1
Year                            : 2013
User Defined URL                : http://www.edmexqlusiv.com/
Picture MIME Type               : image/jpeg
Picture Type                    : Front Cover
Picture Description             : 
Picture                         : (Binary data 55457 bytes, use -b option to extract)
Title                           : Animals (Original Mix)
Artist                          : Martin Garrix
Comment                         : Downloaded from
Date/Time Original              : 2013
Duration                        : 0:05:04 (approx)

答案3

我拼凑了这个脚本,它应该可以满足您的要求。它读取当前目录中每个文件的 ID3 标签(cd首先读取包含所有音乐文件的目录),查找艺术家、专辑和标题标签,然后将文件移动到artist/album/title.extension,并在必要时创建文件夹结构。

#!/bin/bash
#Install id3 command line tool, if not installed
if [ -z "`dpkg -s id3 | grep 'Status: install'`" ]; then
    sudo apt-get install id3
fi
IFS=$'\n'
for f in *; do
    #Skip directories
    [ -d "$f" ] && continue
    tags=($(id3 -l "$f" | sed -re 's/\s{2,}([^:])/\n\1/g' | egrep ':.+'))
    for l in ${tags[@]}; do
        [ -n "`echo $l | egrep '^Title'`" ] && TITLE="`echo $l | sed -re 's/^.*?: //'`"
        [ -n "`echo $l | egrep '^Artist'`" ] && ARTIST="`echo $l | sed -re 's/^.*?: //'`"
        [ -n "`echo $l | egrep '^Album'`" ] && ALBUM="`echo $l | sed -re 's/^.*?: //'`"
    done
    mkdir -p "$ARTIST/$ALBUM"
    mv "$f" "$ARTIST/$ALBUM/$TITLE.$(echo $f | sed -re 's/.*\.([^.]*$)/\1/g')"
done

答案4

顺便说一下,我在 repos 中找到了 mussort,它使用命令行执行按 Artist/Album 排序的简单任务。只需在文件夹中输入 mussort . 即可。不过它还会重命名文件并用 _ 替换空格。

更多信息:https://manpages.ubuntu.com/manpages/trusty/man1/mussort.1.html

或者,你可以使用exiftoolexiftool '-Directory<${Artist;}/${Album;}' "$filepath"

相关内容