使用 tinymediamanager 配合 TMM(themoviedb)实现 Jellyfin 刮削。

网上现有的教程都比较老了,所以开一篇帖子记录一下自己配置的过程。

TMM API Key

因为是使用 TMM 来实现刮削,所以我们先上官网 申请一下 API Key。

首先你需要注册一个账号,注册账号比较简单,本篇不作介绍。

在初次登录,未配置过 API 的情况下,有两种方法让我们进入到 API 申请页面:

  1. 直接拉到页面最底部,点击 API

  2. 点击自己的头像,进入账户设置页面,然后点击列表左侧的 API 选项。

注意
申请过 API 之后就不能使用第一种方法了,会进入文档页面。只能使用第二种方法查看已经申请的 API。

在 API 选项页面,我们选择 Developer 类型,创建 API Key。

进入到信息填写页面,这里我借用一张别人的图做示例:

经过实际测试,有以下几点需要注意:

  1. 应用信息部分直接按照上图所示填写即可,一模一样就行。
  2. 姓名必须要使用英文。
  3. 地址信息找一个随机地址生成器生成一下即可。注意 地址1地址2 都要有,可以是中文,两个一样也可以。

点击提交后即可完成申请,申请是秒过的,在新页面可以立刻查看到我们申请的 key:

有的文章附图里,标题显示的是 “API密钥(v3 auth)”。在 TMM 最新版里直接显示 “API 密钥” 了,其实是一回事。

NAS 配置

回到群晖 NAS 上,首先需要通过 docker 安装 tinymediamanager

docker-compose

省流版,我做了一份 docker-compose 文件,如果您有编程经验可以直接参考使用:

version: '3.8'
services:
  tinymediamanager:
    container_name: tinymediamanager-tinymediamanager
    image: tinymediamanager/tinymediamanager:latest
    command: /app/tinyMediaManager -Dtmm.contentfolder=/data
    extra_hosts:
      - "www.themoviedb.org:8.67.111.128"
      - "www.themoviedb.org:18.154.144.22"
      - "www.themoviedb.org:99.86.199.23"
      - "image.tmdb.org:84.17.46.53"
      - "image.tmdb.org:89.187.162.242"
      - "image.tmdb.org:138.199.46.66"
      - "api.themoviedb.org:13.33.33.60"
      - "api.themoviedb.org:13.224.167.10"
      - "api.themoviedb.org:99.84.192.81"
      - "api.thetvdb.org:192.241.234.54"
    ports:
      - 4000:4000
    volumes:
      - /volume1/video:/media:rw
      - /volume1/docker/tiny-media-manager/config:/config:rw
      - /volume1/docker/tiny-media-manager/data:/data:rw
    environment:
      PATH: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      LANG: "en_US.UTF-8"
      LC_ALL: "en_US.UTF-8"
      USER_ID: "0"
      GROUP_ID: "0"
      APP: "tinyMediaManager"
      UMASK: "0022"
      ALLOW_DIRECT_VNC: "true"
      LC_TIME: "C.UTF-8"
      ENABLE_CJK_FONT: "1"
    restart: always
    privileged: true
    network_mode: bridge

该文件设置了以下内容:

  • 容器名:tinymediamanager-tinymediamanager
  • 配置了 hosts,解决 TMDB 访问问题
  • 启用 “自动重新启动”
  • 使用高级权限执行容器
  • 端口号 4000
  • 挂载以下路径,均为读写权限
    • 本地 /volume1/video,挂载到容器内 /media
    • 本地 /volume1/docker/tiny-media-manager/config,挂载到容器内 /config
    • 本地 /volume1/docker/tiny-media-manager/data,挂载到容器内 /data

手动安装

如果不想使用 docker-compose 安装,可以手动安装

安装 tinymediamanager

在注册表中搜索 tinymediamanager,这里我们选择第二个官方镜像

大部分教程不是选择第一个 star 最多的,就是选择第三个所谓 “中文更友好” 的。其实在 2024 年,官方的用起来才是最简单的。

下载完成之后,我们先不要打开,进入后续的配置流程。

创建 tinymediamanager 容器

首先通过 ssh 登录群晖,然后通过下面的命令运行 tinymediamanager docker。

这一步可以直接添加 host,解决 tinymediamanager 无法访问的问题。避免我们在后续进入 docker 容器内部修改 host。
但是主要注意一点的是,如果在 DSM 里手动关闭容器再重新启动,那么 host 配置就失效了。因为 TMM 容器内没有 vi,同时考虑以后再次修改,个人还是建议将 /etc/hosts 文件挂载出来,然后在文件内添加下列 host。

docker run \
    --name=tinyMediaManager \
    --add-host=www.themoviedb.org:8.67.111.128 \
    --add-host=www.themoviedb.org:18.154.144.22 \
    --add-host=www.themoviedb.org:99.86.199.23 \
    --add-host=image.tmdb.org:84.17.46.53 \
    --add-host=image.tmdb.org:89.187.162.242 \
    --add-host=image.tmdb.org:138.199.46.66 \
    --add-host=api.themoviedb.org:13.33.33.60 \
    --add-host=api.themoviedb.org:13.224.167.10 \
    --add-host=api.themoviedb.org:99.84.192.81 \
    --add-host=api.thetvdb.org:192.241.234.54 \
    tinymediamanager/tinymediamanager:latest

运行到下面这一步就 ok 了:

此时容器已经创建好,我们可以 ctrl+c 停止运行,然后回到 NAS 上停止该容器,准许后续的编辑。

配置 tinymediamanager 容器

在 docker 文件夹下新建一个 TinyMediaManager 目录,然后新建 data 文件夹。

在容器内找到刚才新创建好的容器,点击 详情->设置 进入配置。

端口号使用默认或根据你的实际情况填写。

文件夹挂载需要挂载两个,一个是刚才创建的 data 文件夹,另一个是你当前 存储影片 的文件夹。

环境变量需要注意以下几点:

  1. USER_IDGROUP_ID 修改为 0(root用户)。
  2. PASSWORD 可以直接删掉。
  3. 增加 ENABLE_CJK_FONT 这个 key,值为 1

对于 ENABLE_CJK_FONT,老版的教程里都需要添加,为了切换为中文后正常显示。我在装最新版的时候直接加上了,没有测试不加可以不可以。

填完后我们就可以运行容器了。

官方镜像较其他镜像的优势

截止到本文发布,官方镜像已经来到了 5.x 的版本,而其他两个镜像还是 3.x 的版本。

相比较老版,新版的挂载目录从 /config 变为了 /data,默认端口从 5800 变为了 4000。

在对中文的支持上,最新的官方镜像对中文的支持已经很好了,不需要额外的配置。而其他两个镜像版本对中文的支持比较麻烦:

教程中往往提到我们需要将 /etc/cont-init.d/10-cjk-font.sh 文件中的 http://dl-cdn.alpinelinux.org 替换为 http://mirrors.tuna.tsinghua.edu.cn/

此举是为了下载中文字体,然而如果我们使用的是 romancin 的镜像,那么就算替换了也没用,设置为中文依然会乱码。这是因为该字体在清华源下已经失效了(阿里云好像也失效了)。有网友提到华为云是有效的,经过测试确实可以。

最后,在刮削效率和结果上,也是新版更为出色。

tinymediamanager 配置

打开浏览器,输入 http://nas-ip:4000/ 进入 tinymediamanager。初始是一个英文的引导页面,我们一般直接 next 即可。

进入主页面后,我们进入设置,修改语言为中文。