Jellyfin 自定义扫描频率
序言
在之前的文章中,我提到“Jellyfin 计划任务『扫描媒体库』并不吃资源,频繁运行也没事”。实际上,这不准确。这个任务对于资源的占用取决于媒体/文件的数量。
最近我写了一个项目,用来爬取视频,同时自动生成 nfo 文件和视频海报。在这个新的视频目录中,最多有 2000 个文件(大部分是 nfo 和海报图片,视频还没怎么下载),有四级子目录。但此时计划任务的 CPU 占用量已经大幅增加。这显然有问题。
经过一番研究,我发现使用 crontab 定时调用 Jellyfin API,是目前唯一实现不同媒体库不同扫描频率的解决方案。
步骤
关闭计划任务
进入『控制台 | 计划任务 | 扫描媒体库』,删除现有任务:
申请一个 API 密钥
进入『控制台 | API 密钥』,创建一个:
获得 API 端口
我建议直接用 F12 抓包:
点击『刷新』前,先按下 F12。然后找到对应的请求
/Items/媒体库ID/Refresh?扫描参数
,这个 URL 可以直接拿来用。
crontab
1 | 编辑 |
curl 格式如下:
1 | curl -k -X POST "https://IP地址:端口/Items/媒体库ID/Refresh?Recursive=true&ImageRefreshMode=Default&MetadataRefreshMode=Default&ReplaceAllImages=false&ReplaceAllMetadata=false" -H "Authorization: MediaBrowser Token=API密钥" |
crontab 格式如下:
1 | 新番:每十分钟一次 |
其他时间配置:
- 每小时一次:
0 * * * *
; - 每周一次:比如
0 17 * * 0
,每周天下午 5 点; - 每两周一次:比如
0 11 1,15 * *
,每月1号和15号的早上11点;
查看 crontab 的日志:
1 | 1. 使用journalctl |
实际效果
这个软件是 NetData,我之后会写一篇关于它的博文。
红色的是扫描爬取的视频的媒体库,而蓝色的是扫描本季新番的媒体库。
可以看到:
-
蓝色的平均值不超过 5%,因此每十分钟执行一次没问题 —— 这个频率也可以及时地让 Jellyfin 刮削新下载好的番剧。
-
如果按照之前 Jellyfin 的计划任务,所有媒体库都一小时扫描一次,那么对 CPU 的占用显然太大了。