我试图访问多年来我添加到音乐中的文件名或MetaData。 (现场),(演示),(现场:雅典),(声学),(2005年拉斯维加斯直播),(Metallica封面),(奖金曲目)等。我这样做是为了区分曲目容易。
我正在努力修复我的音乐并使用MusicBrainz Picard更好地整理/标记它。但是Picard不允许访问原始标签或文件名。仅依赖于从数据库中提取的内容。 (正如您所看到的,我的信息不是标准的。它只适合我和我自己的个人收藏,所以大部分内容都无法添加到他们的数据库中)
所以论坛管理员/程序员之一(我认为),建议可能通过插件来实现这一点。
我从来没有用Python编程,也不知道关于它的第一件事。最近我几乎没有进入RegEx。但是有一个相当不错的,虽然不是高级的理解。
现在,理想情况下,如果可能,我想检查原始元数据,然后检查文件名。并取出()中的任何内容并将其保存到文件中的多个变量中:ExtraInfo1,ExtraInfo2等,然后根据标题检查每个变量,以确保它不在标题中,因为有时候标题本身在标题中有括号。然后,如果没有,能够将它们添加回标题。标记并重命名它们。
我找到了这个插件,它从标题中提取信息并将其移动到版本标签。所以这几乎正是我正在寻找的,除了不是从Title标签中取出它,我想从原始的标题标签或文件名中取出它。然后将其添加到新的标题标签。
有人可以帮我这个吗?
这是我找到的插件:
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)
谢谢, -dev