Bha*_*rat 14 software-recommendation tag lyrics
我有一个很大的音乐库(其中大部分是.mp3& .m4a),但没有一个有歌词。是否有任何程序或插件可以通过查询互联网自动为我的所有音乐添加歌词?
因为我通常没有互联网连接,所以我需要一个程序来自动将所有歌词添加到音乐文件标签中,以便我可以离线查看它们。
这是一个半答案,因为我不知道您的环境,我提供的代码仅用作示例 - 按原样运行它不会造成任何伤害,但我不能给出任何保证。
这样的任务可以使用简单的 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)
说明(在终端中运行命令):
wget并eyeD3通过发布sudo apt-get install wget eyed3/home/user/lyrics_fetcher.shchmod u+x /home/user/lyrics_fetcher.sh/home/user/lyrics_fetcher.sh "path_to_my_album"我用北极猴子的“AM”专辑检查了这个代码,它做得很好。
如果你真的想一次获取你所有专辑的歌词,你可以为每个目录循环运行脚本,我猜。尽管如此,我不会将它用作最终解决方案 - wikilyrics 和通过镜像支持它的每个人都是好人,这个答案是为了促进思考,而不是滥用。