Emby双语歌词

2024-06-21 16:41:11 0点赞 4收藏 2评论

新人发文章,大佬多多包涵~

使用的是 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.js

sed -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,"
")

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
2评论

  • 精彩
  • 最新
  • 请问下win版怎么改?是按照源代码部分改listview和emby-itemscontainer两个文件么?代码内容和github上的也不同,代码小白,看不明白,那俩文件排版也是乱套,试着改了下没成功

    校验提示文案

    提交
    好久没看张大妈了,不好意思😂
    张大妈的代码排版确实有问题,所以我不经常关注这边了,win 版的我还没研究过,我晚点研究之后更新下

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章

oldkingOK

Ta还没有介绍自己

关注 打赏
最新文章 热门文章
4
扫一下,分享更方便,购买更轻松