解决 jellyfin 导入台湾歌曲,信息显示乱码问题
前两天下载了 20GB+ 的五月天专辑歌曲。都是台湾的资源。正好家里自建了 jellyfin,就尝试导入其中弄成音乐库。
建好音乐库扫描完媒体之后,歌曲名称专辑名称全都是乱码,但是视频库,字幕等都没问题。
猜测是歌曲的 Tag 信息内容编码格式不对。
问题发生后尝试以下操作都未解决:
进入 jellyfin 容器,修改locale.gen
,添加:zh_CN.GBK GBK
和 zh_TW BIG5
,执行locale-gen
。
设置 jellyfin 备用字体库,下载支持 big5 编码的字体放入。
以上操作失败后,开始使用第二招。直接修改音频文件的 Tag 信息。
注意修改音频文件信息会导致bt
无法继续分享。硬链接也不行,除非复制一份文件。
一番面向搜索引擎编程后,使用 python 编写以下脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 import osimport taglibdef resave_metadata (file_path ): song = taglib.File(file_path) song.tags["TITLE" ] = song.tags["TITLE" ] song.tags["ALBUM" ] = song.tags["ALBUM" ] if "ALBUMARTIST" in song.tags: song.tags["ALBUMARTIST" ] = song.tags["ALBUMARTIST" ] if "ALBUMARTISTSORT" in song.tags: song.tags["ALBUMARTISTSORT" ] = song.tags["ALBUMARTISTSORT" ] if "ARTIST" in song.tags: song.tags["ARTIST" ] = song.tags["ARTIST" ] if "ARTISTS" in song.tags: song.tags["ARTISTS" ] = song.tags["ARTISTS" ] if "ARTISTSORT" in song.tags: song.tags["ARTISTSORT" ] = song.tags["ARTISTSORT" ] if "LABEL" in song.tags: song.tags["LABEL" ] = song.tags["LABEL" ] song.save() dir = r"Z:\\jellyfin\\music\\五月天" all_sub_dir = [] dir_contests = os.walk(dir ) for path, dirnames, filenames in dir_contests: for dirname in dirnames: dir_path = os.path.join(path, dirname) print (dir_path) for f in os.listdir(dir_path): if not f.endswith(".wav" ): continue file_path = os.path.join(dir_path, f) resave_metadata(file_path)
因为 python 这边默认都是 utf8 编码,如果重写一遍显示还是乱码可能需要使用正确的编码格式 读取 tag 数据,然后在写入回去。
我这边没有其他操作就是重写一遍就好了。我也挺懵逼 (─.─||)
推荐标签编辑软件,可以刮削音乐的的信息:
第一个是国内大佬开发的,第二个是国外的。
第二个软件使用参考:http://www.92nas.com/forum.php?mod=viewthread&tid=115