Hacker News 中文摘要

RSS订阅

Picard 3.0 发布 -- Picard 3.0

Picard 团队荣幸宣布音乐大脑 Picard(MusicBrainz Picard)全新主要版本 3.0 发布,现已提供下载。音乐大脑 Picard 是音乐大脑(MusicBrainz)数据库的官方标签编辑器,借助音乐大脑的数据帮助用户整理和清理音乐收藏。此版本带来诸多变更,包括升级至 Qt6、全新插件系统、用户界面改进、封面图像处理、ISRC 提交等。

正文

Picard 团队很高兴宣布 MusicBrainz Picard 全新大版本 3.0 现已开放下载。Picard 是 MusicBrainz 数据库的官方标签编辑器,能借助 MusicBrainz 的数据帮你整理和清理音乐收藏。

展示写有“MusicBrainz Picard”的模拟软件包装盒,旁边有标注“Version 3”的圆形图案

此次发布带来诸多变化,包括升级到 Qt6、全新的插件系统、用户界面的多项改进,以及封面图处理、ISRC 提交等。详情见下。

新变化

用户界面改进

Picard 基于 Qt 框架构建,此前 Picard 2 使用 Qt5,3.0 升级到了 Qt6。这确保了在现代桌面系统的可用性,并显著改进了屏幕缩放支持,更好地支持暗黑模式。Windows 上字体缩放不一致的旧问题已解决。现在所有操作系统都支持暗黑模式,且切换明暗模式无需重启应用。

此前 Picard 仅能选择预定义列来定制文件和专辑列表视图。新贡献者 knguyen1 实现了完整的自定义列支持,你现在可以用脚本定义列内容,灵活展示所需信息。新增的预定义“匹配”列可按匹配质量排序发行。

主视图列标题的右键菜单,高亮显示“管理自定义列”

jpmsousa03 实现了列表视图筛选功能,可选择搜索字段并输入关键词,仅显示匹配项。

StevilKnevil 提供的新功能允许在元数据视图中选复制多个标签并粘贴到其他标签以批量更新,也可粘贴到电子表格工具。

元数据视图现在还会显示现有标签与待写入新标签的实际差异。

首次启动时 Picard 会显示设置向导引导新用户配置。

Picard 设置向导中的文件整理配置对话框

首次启动外的其他基本功能,如加载文件和聚类,在首次使用时会有教程模式解释。向导和教程都可在界面选项中关闭或重新启用。

首次加载发行时显示的教程弹窗

新的插件系统

除 Qt6 迁移外,新插件系统是最重大的改动。旧系统即使插件未启用也会在每次启动时加载并部分运行代码,导致副作用,且第三方开发者需将代码提交到中央仓库,十分不便。

新插件系统提供: * 插件元数据与代码分离:必须包含 MANIFEST.toml * 定义了带类型支持的 plugin API * 基于 Git 的插件版本管理与更新 * 可从中央插件注册表、第三方 Git 仓库或本地目录安装和更新插件 * 多个信任级别(官方、可信、社区、未信任) * 支持中央黑名单插件,以便应对安全问题 * 提供 picard-cli 命令行工具管理(安装、卸载、更新……)插件 * 插件支持自有翻译系统(可通过 Weblate 管理),界面文本可翻译 * 插件拥有独立的配置命名空间

Picard 2 已知的扩展点(注册元数据处理器、右键菜单、封面提供器等)均保留,并新增多项:插件可注册封面过滤器与处理器、自定义变量、“插件工具”全局菜单动作以及 CD 抓取日志格式。

用户可在“选项→插件”中看到新版插件管理,清晰区分已安装与可安装插件,两者均可搜索,并支持安装第三方开发者的插件。

新插件选项页,显示已安装插件列表

这意味着 Picard v2 插件不兼容,需迁移到新系统。目前已有 30 个插件(迁移自 v2 或全新开发),详见 Picard 网站上的 v3 插件列表。开发者可查阅用户指南中的插件概览及详细的 v3 文档以更新或编写插件。

封面图处理

现在可以筛选和处理从封面提供方加载的封面图。“封面图/处理”中的新选项允许忽略低于特定尺寸的图片,或自动调整大小、转换格式。插件可扩展此功能,注册自有过滤器(限制加载内容)和处理器(对加载的封面进行处理)。该功能由 twodoorcoupe 在 2024 年 Google Summer of Code 期间实现。

新标签与脚本增强

因加入同步歌词完整支持,新增 %syncedlyrics% 标签;作曲家的 MusicBrainz 艺术家 ID 可用 %musicbrainz_composerid% 标签。

新增多个供标记和命名脚本使用、默认不写入文件的变量:%_genres% 和 %_folksonomy_tags% 访问从 MusicBrainz 加载的原始流派或自由标签列表;有广播关系的录音可用 %_broadcast_date%;关联 ISWC 作品的录音可用 %_iswc%;%_albumartists_countries% 和 %_artists_countries% 包含艺术家国家代码;%_artistcomment% 和 %_albumartistcomment% 为消歧注释;%_filesize% 为文件字节大小(仅在文件可用上下文)。

新增 $get_new() 和 $get_original() 函数显式获取变量新旧值;$rsearch 新增可选参数指定返回的正则捕获组。

改进的内置播放器

内置播放器仍基于 QtMultimedia,借助 Qt6 获得更好的跨平台音频格式支持,以及播放变速时的音高调整(需 Qt 6.10)。内部重构更好地分离播放器与界面,支持 macOS“正在播放”、Linux 下 MPRIS2 控制,并可向 ListenBrainz 提交收听记录,这些可在“音频播放器选项”中配置。

保存与恢复用户会话

Picard 可在“文件”菜单将当前工作区状态存为会话文件,保留文件位置(未聚类、聚类、专辑、特定音轨、独立录音)、手动元数据编辑及选定配置,以便日后继续。该功能由 knguyen1 贡献。

导出/导入选项配置

Picard 2 已有选项配置(profile)功能,3.0 支持导出导入,可作备份或分享。分享导出时会排除私密配置(如认证数据)。导出导入也可通过新 picard-cli 命令行工具完成。

操作系统支持

Picard 现提供 macOS ARM64(Apple 硅芯片)原生版本,较 Rosetta 2 模拟性能更好。ARM64 与 Intel 版下载文件分开,需自行选择。

因依赖更新(PyQt6/Qt6,Python 最低 3.10),弃用旧系统支持:需 Windows 10+、macOS 13+,Linux 需 Qt 6.6+ 和 Python 3.10+。

从标签查找 CD 碟片及更多日志文件导入选项

从 CD 抓取日志查找碟片 ID 的功能扩展支持 redumper 写的原始 SCSI TOC 数据文件。

iTunes/Apple Music 抓取且含 iTunes_CDDB_1 标签的文件,现在可直接从标签查找碟片 ID。

同步歌词

Picard 3 初步支持同步歌词,可从 ID3 和 WMA 标签加载保存 syncedlyrics 标签,使用 LRC 格式描述时间。未来更新将支持更多格式与功能。

通过别名翻译艺术家、发行和曲目标题

原有用别名翻译艺术家名的功能扩展到专辑和曲目标题。旧版总是回退用排序名作翻译的行为改为可选,且默认关闭。

元数据选项页中翻译设置的新选项

改进的发行匹配

查找后文件匹配发行和录音的算法完全重写并大幅改进,预期结果更好,且新增广泛测试框架以防未来性能回退。

ISRC 查找与提交

Picard 现支持从 CD 提取 ISRC 添加到加载的发行,也可将碟片或标签中的 ISRC 提交回 MusicBrainz。匹配文件含新 ISRC 时,可从“文件→提交 ISRC”菜单打开提交对话框。

ISRC 提交对话框

含 ISRC 标签的单个文件,也可通过右键菜单“按……查找→按 ISRC 查找”。

命令行工具 “picard-cli”

Picard 3 附带新命令行工具“picard-cli”,目前支持命令行管理插件和导出/导入选项配置,运行 picard-cli --help 查看详情。

更新的 Picard 用户指南

在线文档已更新适配 3.0,现托管于 ReadTheDocs,提供英、法、荷三种语言。Picard 内打开文档会匹配界面语言。可参与翻译用户指南。

性能与内存优化

本次发布包含多项优化,提升特定操作的速度与响应,并降低内存占用。

还有更多……

更多改进与修复:Picard 3 是约三年工作的成果,始于 2023 年底迁移 PyQt6,共 687 个合并 PR、近 6800 次提交(来自超 100 名贡献者,含约 40 名翻译)、近 400 个解决工单。大量代码重写以利维护,引入静态类型(重要部分已覆盖),测试覆盖率大幅提高。完整列表见更新日志。

下载

Picard 3.0 可从 Picard 网站下载页获取。注意:Windows Store 版暂未上架 3.0,稍后提供;Linux Flatpak 包独立维护,即将更新。Picard 是自由软件,源码见于 GitHub。

致谢

新版筹备离不开众多贡献者,感谢参与代码、翻译、报告问题及建议的所有人。

代码贡献者包括 Adela Chang、Akshat Khatri、Anton Kesy、Arnab Chakraborty、Bob Swift、Bryan Roessler、David Kellner、Deepak Kumar、Francisco Lisboa、FRC、Goldmaster、Greg Myers、Deepak Tiwari、James Le Cuirot、joncrall、João Sousa、Julian Anderson、Kajal Soni、knguyen、krotka、Laurent Monin、Lctrs、leo60228、Marethyun、Martin、Martin Natano、metaisfacil、OscarL、Philipp Wolfer、pranavsource1、Rakim、ripstream、Sanskar Mittal、Alex、ShubhamBhut、soniikajal、Sophist、StevilKnevil、nullHawk、thekiefs、Thuna、Giorgio Fontanive、x11x、Yohay 等。

翻译更新由众多译者完成,包括阿尔巴尼亚语 Besnik;阿拉伯语 alaishaq;加泰罗尼亚语 Marc Riera;简体中文 imgradeone、KenParker_CN、Nebulain;繁体中文 BestSteve、Iceman1415、silentbird;捷克语 Fjuro;荷兰语 mfmeulenbelt 等;以及英、爱沙尼亚、芬、法、加利西亚、格鲁吉亚、德、希、匈、意、日、韩、立、马来、挪威、波、葡、俄、西、瑞典、土、乌等语言的译者。

联系我们

反馈、建议或报 bug 请使用 MetaBrainz 社区论坛和工单系统。

破坏性变更

  • 因 Qt6 和 Python 更新,弃用旧系统支持,最低 Windows 10、macOS 13。旧系统用户应继续使用 Picard 2,我们计划发布至少一个 Picard 2 最终版。
  • 并非所有 v2 插件都可用,部分未维护或不达质量。缺失插件请在论坛告知。
  • 艺术家排序名默认不再作为翻译回退,旧行为可致错。如需可在元数据选项启用“用艺术家排序名翻译”。
  • 向 $matchedtracks() 脚本函数传参现属错误(此前无效)。
  • 歌词和注释标签现始终支持语言,加载/保存 ID3 时使用 lyrics:lang:description / comment:lang:description 格式(lang 为 3 字母 ISO 码,省略语言时冒号仍须保留,如 comment::description)。

已知问题

  • macOS 某些环境下全局菜单不显示可勾选项的对勾(见 PICARD-2509)。
  • 恢复大型会话耗时长且 UI 无响应(见 PICARD-3460)。
  • macOS 应用版不含 picard-cli,可从 PyPI 安装 Picard 获得。

更新日志

自上次稳定版 2.13.3 以来,Picard 3 有 14 个预发布版,开发期解决 393 个工单。完整列表见网站详细更新日志。

评论

社区对 MusicBrainz Picard 新版发布普遍表达怀旧与祝贺,但在产品形态上出现分歧:一方认为手动标签器交互落后、用户流失,另一方则肯定其图形界面手动流程的掌控感并持续使用。

认为独立手动标签器交互体验落后、用户群已萎缩

  • 有意见指出单独打开程序指向文件来打标不符合现代体验,应当改为后台守护进程自动处理并在异常时提示,最好能抓取多种音源(较多人)。另有用户凭经验猜测活跃用户数相比早年暴跌,自己已十多年未使用(较多人)。 > 我猜用的人已经大幅减少,我自己都十多年没碰了(@skarz)

肯定 Picard 手动图形界面工作流的价值并持续使用

  • 支持者认为能统览标签、预览改动、切换配置并跳转资料页的手动流程虽不適合所有人,但是极佳的图形应用;有人刚用插件完善了整库同步歌词,并看好新版相关特性(较多人)。 > 手动流程虽不適合所有人,但它确实是极好的图形界面应用(@retrodaredevil)

认为项目二十年传承值得骄傲并祝贺发布

  • 老贡献者与用户恭喜团队推出大版本,回忆从创始人交接至今二十年,认为项目存续本身值得骄傲;也有用户受此激发打算重抓光盘并重整收藏(较多人)。 > 不敢信从罗布接手并发布首个版本至今已经二十年了(@lukaslalinsky)

指出新版发布中的实际缺陷

  • 有用户发现部分官方插件未随更新移植,导致依赖特定标签者进退两难;另有用户反馈官方提供的 macOS 下载链接已失效(少数人)。 > 遗憾的是更新前没把官方插件都移植过来,少了那些标签很难选更新(@PenguinRevolver)

探索基于本地数据库的元数据管理替代方案

  • 有音乐人与 DJ 群体改用 SQLite 同时维护中心目录库与每曲附属库,以容纳节拍网格等 ID3 无法表达的信息,并仍借助 MusicBrainz 接口同步(少数人)。 > 用 SQLite 存全部目录和每首歌元数据,智能体处理起来比任何音乐库都顺手(@nzoschke)

有价值的补充

  • 早年宿舍网段设备开放共享,有用户写脚本吸歌后用 Picard 批量分类整理,折射出文件共享时代该工具的典型用法(@mlmonkey)。
  • 部分老用户调侃要购买带纸本手册与社区支持的实体盒装版,折射出社区对项目的情怀(@liotier)。