我正在尝试访问多年来添加到音乐中的文件名或元数据。(Live), (Demo), (Live: In Athens), (Acoustic), (Live In Las Vegas 2005), (Metallica Cover), (Bonus Track) 等。我这样做是为了轻松区分曲目。
我正在尝试修复我的音乐并使用 MusicBrainz Picard 更好地组织/标记它。但是 Picard 不允许访问原始标签或文件名。仅依靠从他们的数据库中提取的内容。(你可以看到我的信息不是标准的。它只是为了我和我自己的个人收藏,所以大部分,添加到他们的数据库中是无用的)
因此,其中一位论坛管理员/程序员(我认为)建议也许可以通过插件来做到这一点。
我从来没有用 Python 编程过,也不知道第一件事。最近我几乎没有进入 RegEx。但是有一个相当不错的,虽然不是高级的理解。
现在,理想情况下,如果可能,我想检查原始元数据,然后检查文件名。并拉出 () 中的任何内容并将其保存到文件中的几个变量中:ExtraInfo1、ExtraInfo2 等,然后根据标题检查每个变量以确保它不在标题中,因为有时标题本身有括号在他们的头衔中。如果没有,可以将它们添加回标题。标记和重命名它们。
我确实找到了这个插件,它从标题中提取信息并将其移动到版本标签。所以这几乎正是我正在寻找的,除了不是从标题标签中获取它,我想从原始标题标签或文件名中获取它。然后将其添加到新的标题标签。
有人可以帮我吗?
这是我找到的插件:
PLUGIN_NAME = 'Move metadata to version tag'
PLUGIN_AUTHOR = 'Jacob Rask'
PLUGIN_DESCRIPTION = 'Moves song metadata such as "demo", "live" from title and titlesort to version tag.'
PLUGIN_VERSION = "0.1.4"
PLUGIN_API_VERSIONS = ["0.12", "0.15"]
from picard.metadata import register_track_metadata_processor
import re
_p_re = re.compile(r"\(.*?\)")
_v_re = re.compile(r"((\s|-)?(acoustic|akustisk|album|bonus|clean|club|cut|C=64|dance|dirty|disco|encore|extended|inch|maxi|live|original|radio|redux|rehearsal|reprise|reworked|ringtone|[Ss]essions?|short|studio|take|variant|version|vocal)(\s|-)?|.*?(capp?ella)\s?|(\s|-)?(alternat|demo|dub|edit|ext|fail|instr|long|orchestr|record|remaster|remix|strument|[Tt]ape|varv).*?|.*?(complete|mix|inspel).*?)")
def add_title_version(tagger, metadata, release, track):
if metadata["titlesort"]:
title = metadata["titlesort"]
else:
title = metadata["title"]
pmatch = _p_re.findall(title)
if pmatch: # if there's a parenthesis, investigate
pstr = pmatch[-1][1:-1] # get last match and strip paranthesis
vmatch = _v_re.search(pstr)
if vmatch:
metadata["titlesort"] = re.sub("\(" + pstr + "\)", "", title).strip()
metadata["title"] = re.sub("\(" + pstr + "\)", "", title).strip()
metadata["version"] = pstr
register_track_metadata_processor(add_title_version)
谢谢,-开发