NickHoo
Published on

Jellyfin 服务端增加 JS 脚本

Authors
  • avatar
    Name
    NickHoo
    Twitter

真正的目标其实是在服务端index.html的如下位置,

image

插入类似这样的代码:

<script src="https://xxx/yyy.user.js"></script>

实测过以下两种方法:

  1. 直接修改服务端 Web 的入口文件 index.html​​;

    简单粗暴,快速验证

  2. 通过 Nginx 注入 JS 。

    优雅但稍复杂

请留意最后的注意事项。

1. 直接修改服务端文件

1.1 文件位置:

不同系统、不同部署方式下 index.html 路径可能都不太相同,请以自己的实际情况为准(可以在 jellyfin/emby 控制台查看),以下仅供参考:

image
  • emby windows

    C:\Users\{用户名}\AppData\Roaming\Emby-Server\system\dashboard-ui\index.html
    
  • jellyfin docker

    # 容器内,
    # 可以 apt install vim, 安装 vim 来编辑
    /jellyfin/jellyfin-web/index.html
    
    # 容器外,
    # 需要映射 宿主机web目录(如 /nas/jellyfin/web)到 容器内的 /jellyfin/jellyfin-web/ 目录到,方便直接编辑。
    # 但是,重建容器后,如果 宿主机web目录为空,访问jellyfin会失败,不要惊慌。
    # 1. 可以 先映射 一个临时目录(如 /web-tmp/)到 宿主机web目录(如 /nas/jellyfin/web)
    # 2. 在容器内复制一份到宿主机 cp -r /jellyfin/jellyfin-web/ /web-tmp/
    # 3. 再正常映射容器内 /jellyfin/jellyfin-web/ 到 宿主机web目录(如 /nas/jellyfin/web)
    

1.2 修改

</body>​标签结束之前插入我们的<script></script>​脚本,脚本地址 src​ 可以直接使用在线地址,

...其他代码... <script src="https://xxx/yyy.user.js"></script> </body></html>

也可以将脚本提前下载到服务器上同目录下

...其他代码... <script src="yyy.user.js"></script> </body></html>

2. 通过 Nginx 注入:

使用 Nginx 可以非常便捷地注入 JS ,但是 涉及 域名、DDNS、https 等,Nginx的初始搭建可能有些麻烦,但还是非常推荐,麻烦一次,一劳永逸。

# 在 location / 部分加入如下代码
proxy_set_header Accept-Encoding "";
sub_filter_types text/html;
sub_filter '</body>' '<script src="https://xxx/yyy.user.js"></script></body>';
sub_filter_once off;

验证效果:

刷新缓存后,右键查看网页源码,检测末尾是否有插入的代码。

或 F12 网络面板 查看是否有我们的脚本加载。

注意事项:

  • 清理浏览器缓存

  • https 的 service worker 需要特别清理

    如果启用了 https ,jellyfin 会启用 本地service worker,普通清理缓存可能无法清除,空了我再补充一下。