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


14

我有一个很大的音乐库(其中大多数是.mp3.m4a),而且都没有歌词。是否有任何程序或插件可以通过查询互联网自动将歌词添加到我的所有音乐中?

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


2
如何添加歌词?到每个音乐文件?您的音乐收藏是什么格式?您打算如何查看找到的歌词?
fossfreedom

我想要的是,当音乐文件(主要是.mp3和.m4a)在音乐播放器中播放并且我单击“显示歌词”时,它应该能够显示歌词。我需要一些软件来对每个音乐文件进行处理(我所有的音乐文件标签都是正确的)。
巴拉特

2
此评论与原始问题有很大不同。您至少应该更新问题以使其反映您的新目标。
路易·德·索萨

Amarok和Clementine可以选择编辑获取的歌词。我没有尝试过,但是它必须将它们存储在本地某个地方,然后为您检索它们。在逐首歌曲的基础上执行此操作确实很乏味,但可能会奏效。
2014年

有一个很好的软件叫做clementine。尝试一下。它支持不同的歌词在线数据库。(旧Amarok的叉子1 *)。
ddmytrenko

Answers:


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

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

  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

我在Arctic Monkeys的“ AM”专辑中检查了此代码,结果很不错。

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


我完全按照您说的做,在给定的代码中将给定的代码保存为lyrics_fetcher.sh,然后在终端的第2点中运行该命令。然后运行此命令“ ./lyrics_fetcher.sh / home / bharat / Music / Linkin-park /起居室的东西”,现在还没有进一步的output.I是一个完整的初学者,请帮我..
巴拉特

1.是否在终端中运行所有命令?(应该有终端输出)2.是否已安装wget和eyeD3?如果没有,请运行'命令和apt-get安装wget的eyed3'
CPRN

@Bharat,您应该已经./lyrics_fetcher.sh "/home/bharat/Music/Linkin-park/LIVING-THINGS"在脚本所在的文件夹中使用了命令。您错过了引号。
Ads20000

1
@ Ads20000我在后来看到巴拉特遇到什么样的问题时添加了这些说明。他被通知了。
cprn 2014年

运行脚本时出现错误(红色)“'ascii'编解码器无法在位置25-26处编码字符:序数不在range(128)中”。这是什么意思?
noir1993

3

我最近写了一个python脚本,用于自动提取和标记音乐中的歌词。检查它在这里。这会将歌词下载为txt文件,并将其嵌入到您的.mp3文件中

YouTube演示


1
  • lrc.pl是一个珍珠脚本,使用David Precious的Lyrics :: Fetcher软件包,用于批量下载MP3的歌词。

  • 还可以尝试Amarok插件Ultimate Lyrics。Ultimate Lyrics是一个可配置的脚本,可从许多站点获取歌词。

  • 另一种选择:女妖歌词扩展


您还没有真正回答这个问题-您可以大量下载歌词-并将这些歌词离线存储在音乐文件中吗?
fossfreedom

1

作为音乐迷,我可以向您推荐Guayadeque播放器,快速,轻便和功能齐全的播放器。如果我没记错的话,默认情况下它具有歌词扩展名,并且可以选择更多的歌曲,我现在正在听歌,它显示了每首歌的歌词,甚至是乐队简介。也可以手动将歌词存储到歌曲中,但是最好还是与Internet同步,无论如何,这都是您的选择。

sudo add-apt-repository ppa:anonbeat/guayadeque

sudo apt-get update

sudo apt-get install guayadeque-svn

您还没有真正回答这个问题-您可以大量下载歌词-并将这些歌词离线存储在音乐文件中吗?
fossfreedom

是的,它具有内置的编辑器,用于设置/选项来编辑歌曲以及自己将歌词粘贴或写入播放器中的歌曲。
14

@JohnnyD。“由您自己”-OP意味着可以自动进行批量操作,而不是手动进行手动操作。
cprn 2014年

@CyprianGuerra也许我误解了他在问什么:-)
JoKeR 2014年

1

甜菜是用于组织音乐库的命令行工具,该库可以自动获取歌词以及许多其他内容。从网站:

甜菜的目的是使您的音乐收藏一劳永逸。它对您的收藏进行分类,并使用MusicBrainz数据库自动改进其元数据。然后,它提供了一整套用于操纵和访问音乐的工具。

具体来说,它具有一个歌词插件,可从Lyric Wiki,Lyrics.com,Musixmatch,Genius.com或Google自定义搜索API获取歌词。

它周围的社区非常活跃。一探究竟!


0

Mp3nity可免费使用1.5个月。然后,您必须购买高级版本。它嵌入了艺术品的专辑。您可以一次获取所有音乐文件的歌词。


0

我个人使用歌词查找器:https//www.lyricfinder.org/

您可以使用add folder使其以递归方式搜索文件夹并找到所有音乐文件,然后尝试查找歌词并将其添加到ID3标签中。


0

我使用python脚本lyrico下载歌词并将其嵌入ID3或ogg vorbis元标记中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.