将 lastfm 标签下载到 mp3 评论或流派标签中

将 lastfm 标签下载到 mp3 评论或流派标签中

长期以来,我梦想在我的音乐库中拥有歌曲的 lastfm 标签,这样我就可以使用它们快速生成播放列表。

在 amarok 1.4 中曾经有一种方法可以实现这一点,但是它一直不稳定。

然后是 MusicBrainz Picard 的 lastfm/lastfmplus 插件。部分功能还不错,但我无法让它只查找 lastfm 标签并将它们放入评论/流派/其他内容中,但它总是必须标记所有内容。而且它并不是特别好用,尤其是对于小乐队、没有专辑的歌曲等。

我的音乐库组织得相当好。大多数标签都是正确的。我也有一些没有专辑的歌曲。我不想让它找到那些歌曲的专辑,因为这会弄乱我的专辑视图。所以它一定不能触及曲目名称、曲目编号、艺术家和专辑字段。我只希望最受欢迎的 lastfm 标签进入 mp3 的流派或评论标签,用分号、逗号或其他任何符号分隔。

我想我记得有一个完成这项工作的脚本,但我找不到。

有人知道是否有类似的东西吗?编写这个会很难吗,例如作为 Banshee 插件?

谢谢

答案1

我快速编写了一个 Python 脚本。你可以在这里查看它:http://db.tt/yGa14ZA或从这里下载:http://db.tt/Rnkhpod

据我所知,您的音乐库是 MP3 格式,所以我使用了 ID3 标记器。脚本会获取 last.fm 热门标签并将其放入 COMMENT 标签中。
如果您问我,虽然“TopTags”比“TrackTags”更有意义,但它们可能包含大量垃圾

脚本使用标准 Python 库,除了写入标签的模块 - eyeD3 (sudo apt-get install python-eyed3)

使用示例(解析当前文件夹中的所有文件):

$ for f in *.mp3 ; do python lastfm_top-tags.py "$f" ; done

类似的 bash 行也可以爬取所有子文件夹。

希望有用:)

答案2

上面提到的 bash 脚本对我来说很管用 - 但我该如何使用它自动递归遍历我的子目录?我的子目录和文件中也有空格 - 那么当文件名中有空格时我该如何编写脚本呢?

我四处搜索,并用以下代码包装它:

current_directory=$(pwd)
mp3_files=$(find "${current_directory}" -type f -iname "*.mp3")
# Need to change IFS or files with filenames containing spaces will not
# be handled correctly by for loop
IFS=$'\n' 
for mp3_file in ${mp3_files}; do 
   python /home/bruce/lastfm_top-tags.py "$f" ; 
done

但我认为事实并非如此。

答案3

使脚本可执行并像这样运行它:

#!/bin/bash

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

for f in $(find ./ -type f -iname "*.mp3")
do
    lastfm_top-tags.py
    # or use this : python $HOME/bin/lastfm_top-tags.py "$f" ;
done

IFS=$SAVEIFS

相关内容