Emby:首页轮播图
2023/8/21更新:
因为docker版本emby的
/system/dashboard-ui
文件夹没有持久化,所以更新镜像等会导致旧容器删除的操作都会使该文件夹变为初始状态,如需轮播图请重新来一遍或编辑emby的数据卷以持久化2023/10/31更新:
写了一个脚本自动修改index.html
介绍
在Emby的大屏web端首页展示影视的介绍、背景图及logo
由Misty 免费影视服开源
GitHub地址:Nolovenodie/emby-crx: Emby 增强/美化 插件(github.com)
预览
不要太好看嗷🥰
使用方法
以docker部署的emby为例,其他方法可以去GitHub看看
可以用作者提供的一键脚本
# Docker 版 (如遇脚本更新, 重新执行即可)
# 注意: 需要能访问的上Github的环境, 如果不懂 请在群内@作者留言
# EmbyServer 为容器名, 如果你的容器名不是这个 请改成正确的!
docker exec EmbyServer /bin/sh -c 'cd /system/dashboard-ui && wget -O - https://tinyurl.com/2p97xcpd | sh'
手动修改方法如下
下载所需文件
需要能访问github:点击下载
如果被墙要么翻墙下载,要么使用一些代理网站下载,如GitHub Proxy 代理加速 (ghproxy.com),将上面的链接复制即可下载
需要5个文件,分别是:
main.js 位于\content
common-utils.js 位于\static\js
jquery-3.6.0.min.js 位于\static\js
md5.min.js 位于\static\js
style.css 位于\static\css
可选步骤:修改文件
我的emby有很多个媒体库,新剧集入库后别的使用者就很难发现到,可以修改main.js文件让排序改为DateCreated
默认配置如下,节选自main.js
第七行:
this.itemQuery = { ImageTypes: "Backdrop", EnableImageTypes: "Logo,Backdrop", IncludeItemTypes: "Movie,Series", SortBy: "ProductionYear, PremiereDate, SortName", Recursive: true, ImageTypeLimit: 1, Limit: 10, Fields: "ProductionYear", SortOrder: "Descending", EnableUserData: false, EnableTotalRecordCount: false };
默认排序为ProductionYear, PremiereDate, SortName,
改成DateCreated,让最新入库的媒体放在最前面,非常醒目。
也可以修改轮播图数量上限,默认10张。
因为我的媒体库名称写在了封面上,所以不需要媒体库标题显示,修改style.css
第37行:
display: flex; /* 如果不需要媒体库标题显示, 请将flex改为none */
上传文件至容器内
需要将上述文件放置在容器/system/dashboard-ui
文件夹内
先将所需文件放到主机的某个文件夹内,再使用下列命令传输至容器内
docker cp /root/playground/test/. emby:/system/dashboard-ui
该命令将主机上 /root/playground/test/
目录中的内容复制到名为 emby
的容器内部的 /system/dashboard-ui
目录中。
根据你的情况自行修改。
修改index.html文件
进入emby容器(将emby修改为你的emby容器名称,或者使用容器id)
docker exec -it emby sh
该文件位于/system/dashboard-ui
cd system/dashboard-ui
# 修改index.html文件,vi编辑、保存、退出操作与vim一致
vi index.html
翻到最下面,在</body>前插入
<link rel='stylesheet' id='theme-css' href='style.css' type='text/css' media='all' />
<script src="common-utils.js"></script>
<script src="jquery-3.6.0.min.js"></script>
<script src="md5.min.js"></script>
<script src="main.js"></script>
修改后保存好退出
# 退出容器
exit
实时生效,刷新下网页即可,可在pc、平板网页端显现,手机、pc客户端暂无,等作者更新吧🥰
持久化
更新容器会导致上传文件丢失,有点不方便,可以将文件放在宿主机内映射到emby容器中进行持久化,但依然需要修改index.html文件
需修改创建emby的命令:
docker run \
--network=bridge \
-p '8096:8096' \
-p '8920:8920' \
-p '1900:1900/udp' \
-p '7359:7359/udp' \
-v /mnt/emby/config:/config \
-v /mnt/share:/data \
-v /mnt/emby/crx:/system/dashboard-ui/crx \ # 添加这一行即可,自行修改文件夹
-e TZ="Asia/Shanghai" \
--device /dev/dri:/dev/dri \
-e UID=0 \
-e GID=0 \
-e GIDLIST=0 \
--restart always \
--name emby \
-d lovechen/embyserver:latest
我将上面的5个文件都放在了宿主机的/mnt/emby/crx
文件夹中,映射至/system/dashboard-ui/crx
内;
# 将文件放至宿主机内
root@Docker:/mnt/emby/crx# ls
common-utils.js jquery-3.6.0.min.js main.js md5.min.js style.css
# emby容器中应该可以看到这些文件
/system/dashboard-ui/crx # ls
common-utils.js jquery-3.6.0.min.js main.js md5.min.js style.css
此时修改index.html文件即可,在</body>前插入:
<link rel='stylesheet' id='theme-css' href='crx/style.css' type='text/css' media='all' />
<script src="crx/common-utils.js"></script>
<script src="crx/jquery-3.6.0.min.js"></script>
<script src="crx/md5.min.js"></script>
<script src="crx/main.js"></script>
自动化
因为我的emby使用了watchtower自动更新,一更新就失效,属实有点不方便,参考作者的脚本及ChatGPT的帮助写了一个脚本每天定时运行保证轮播图实时有效。
承接上一节的持久化,已将宿主机crx目录映射至/system/dashboard-ui/crx(示例),并下载、修改好所需文件,再在该目录下新建以下脚本:
#!/bin/sh
# 定义文件路径
html_file="/system/dashboard-ui/index.html"
insert_code="
<link rel='stylesheet' id='theme-css' href='crx/style.css' type='text/css' media='all' />
<script src='crx/common-utils.js'></script>
<script src='crx/jquery-3.6.0.min.js'></script>
<script src='crx/md5.min.js'></script>
<script src='crx/main.js'></script>
"
# 判断文件是否存在
if [ -e "$html_file" ]; then
# 检查是否已引入main.js
if grep -q "main.js" "$html_file"; then
echo "已成功引入,无需重复操作."
else
# 插入代码到 </body> 之前
awk -v code="$insert_code" '/<\/body>/ {print code; print; next} 1' "$html_file" > "$html_file.tmp" && mv "$html_file.tmp" "$html_file"
echo "已成功插入样式表和脚本到 $html_file."
fi
else
echo "$html_file 不存在,请根据自身情况修改脚本"
fi
保存为script.sh,chmod +x script.sh
赋予执行权限
运行docker exec emby /system/dashboard-ui/crx/script.sh
跑两遍看看有没有出错,没有的话接下来使用crontab定时任务
# 打开cron表编辑器:
crontab -e
# 在文件末尾添加以下行,表示每天执行一次脚本:
0 0 * * * docker exec -it emby /system/dashboard-ui/crx/script.sh > /dev/null 2>&1
这个例子中,0 0 * * * 表示在每天的午夜(00:00)执行脚本,并将输出(包括标准输出和标准错误)都丢弃。你可以根据需要调整这个时间,比如说定到watchtower自动更新时间后半个小时,最后保存并关闭文件。
注意
电影、剧集需要有背景图才会展示在首页轮播图上,修改轮播图也是修改电影、剧集的背景图