Emby双语歌词
新人发文章,大佬多多包涵~
使用的是 4.8.8.0 版本的 Emby
实现效果原理:劫持歌词加载,检测到两行歌词的“开始时间”是相同的,就放到同一行
更新日志
2024-06-23:将之前的复杂操作简化成了脚本,运行就可以
oldkingOK/EmbyLyricEnhance: 增强Emby的歌词显示 (github.com)
已过时的操作
(仅用于备份留档)
需要改的地方有两处,这里先直接给出命令(警告:使用版本不同的Emby使用下面的命令可能会无效,甚至崩溃页面,请做好备份,或查看最后的“手动修改”)
# ssh连接略
sudo -i # 获取root
docker ps # 查看所有启用的容器
docker exec -it embyserver-1 /bin/sh # embyserver-1 改成你的容器名
备份
cp /system/dashboard-ui/modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js /system/dashboard-ui/modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js.bak && cp /system/dashboard-ui/modules/listview/listview.js /system/dashboard-ui/modules/listview/listview.js.bak
修改
sed -i 's|html+=getListItemHtml(item,i,options)|html+=getListItemHtml(item,i,options).replace(/n/g,'''
''')|g' /system/dashboard-ui/modules/listview/listview.jssed -i 's|function onDataFetched(result){|function onDataFetched(result){if(result.Items&&result.Items.length&&result.Items[0].Type==`LyricsLine`){let s=[],l=result.Items;for(let e=0,t=result.Items.length;e
然后重启容器,可能还需要刷新浏览器缓存
如果不需要了,可以还原:
cp /system/dashboard-ui/modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js.bak /system/dashboard-ui/modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js && cp /system/dashboard-ui/modules/listview/listview.js.bak /system/dashboard-ui/modules/listview/listview.js
源代码
修改 /system/dashboard-ui/modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js
function onDataFetched(result) {
if (result.Items && result.Items.length && result.Items[0].Type == "LyricsLine") {
let newItems = [], items = result.Items;
for (let i = 0, length = result.Items.length; i < length - 1; i++) {
let item = items[i];
if (item.StartPositionTicks == items[i+1].StartPositionTicks) {
item.Text = item.Text + "n" + items[i+1].Text
i++;
};
newItems.push(item);
}
result.Items = newItems;
}
...
压缩之后:
if(result.Items&&result.Items.length&&result.Items[0].Type==`LyricsLine`){let s=[],l=result.Items;for(let e=0,t=result.Items.length;e
修改 /system/dashboard-ui/modules/listview/listview.js
function getItemsHtml(items, options) {
...
html += getListItemHtml(item, i, options).replace(/n/g, '
')
...
即添加:
.replace(/n/g,"
")
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

值友4202767307
校验提示文案
值友4202767307
校验提示文案