如何获取所有音乐的歌词并将它们存储在文件中?

Bha*_*rat 14 software-recommendation tag lyrics

我有一个很大的音乐库(其中大部分是.mp3& .m4a),但没有一个有歌词。是否有任何程序或插件可以通过查询互联网自动为我的所有音乐添加歌词?

因为我通常没有互联网连接,所以我需要一个程序来自动将所有歌词添加到音乐文件标签中,以便我可以离线查看它们。

cpr*_*prn 5

这是一个半答案,因为我不知道您的环境,我提供的代码仅用作示例 - 按原样运行它不会造成任何伤害,但我不能给出任何保证。

这样的任务可以使用简单的 bash 脚本来处理,例如,在下面的示例中,我使用 eyeD3 来提取艺术家和标题,然后使用免费的 wikilyrics 镜像来获取歌词,然后再次使用 eyeD3 来保存新标签。我鼓励每个使用此代码的人查找另一个歌词 API,因为一遍又一遍地利用相同的服务可能被视为恶意。

#!/bin/bash

_TPL='http://makeitpersonal.co/lyrics?artist=<artist>&title=<title>'
_SRY="Sorry, We don't have lyrics for this song yet."

[ "$1" ] && _PATH="$1" || _PATH=$PWD

cd $_PATH

for _FILE in {*.mp3,*.m4a}; do
    if [[ -r $_FILE ]]; then
        _SONG=$(eyeD3 --no-color "$_FILE" | grep title)

        _ARTIST="${_SONG#*"artist: "}"
        _TITLE="${_SONG%"artist: "*}"
        _TITLE="${_TITLE#"title: "}"

        echo -n "$_ARTIST - $_TITLE"

        _ARTIST="${_ARTIST// /+}"
        _TITLE="${_TITLE// /+}"
        _URL="${_TPL//"<artist>"/$_ARTIST}"
        _URL="${_URL//"<title>"/$_TITLE}"

        _LYRICS=$(wget -qO- $_URL)

        if [ "$_LYRICS" != "$_SRY" ]; then
            eyeD3 --lyrics=eng:Lyrics:"$_LYRICS" "$_FILE" 1>/dev/null
        else
            echo "No lyrics found... skipping!"
        fi
    fi
done

cd $OLDPWD
Run Code Online (Sandbox Code Playgroud)

说明(在终端中运行命令):

  1. 安装wgeteyeD3通过发布sudo apt-get install wget eyed3
  2. 将上面的代码保存到一个文件中,例如 /home/user/lyrics_fetcher.sh
  3. 添加运行文件的权限: chmod u+x /home/user/lyrics_fetcher.sh
  4. 运行文件(注意引号): /home/user/lyrics_fetcher.sh "path_to_my_album"
  5. 您可以随时按ctrl+停止脚本执行c

我用北极猴子的“AM”专辑检查了这个代码,它做得很好。

如果你真的想一次获取你所有专辑的歌词,你可以为每个目录循环运行脚本,我猜。尽管如此,我不会将它用作最终解决方案 - wikilyrics 和通过镜像支持它的每个人都是好人,这个答案是为了促进思考,而不是滥用。