阿里云网盘媒体库海报墙加载卡顿解决办法

阿里云网盘媒体库海报墙加载卡顿解决办法

一、前言

由于阿里云网盘的不限速,以及其支持webdav挂载的优点,很多同学将阿里云盘作为自己的网络媒体库,通过infuse,Emby,plex,fileball等工具进行维护管理实现家庭媒体中心的功能。但是在今年大约4月左右,阿里云官方API对请求的QPS进行了限制,目前最新的QPS限制如下所示:

当时几乎所有的第三方阿里云webdav服务都出现了 “to many requests” 的问题,例如 xhofe/alistmessense/aliyundrive-webdav 都有 issue 提到这个问题。虽然各位作者大大都对此进行了适配和优化,但是在挂载后,仍然出现该问题,和媒体海报墙加载极其缓慢和卡顿的问题。

二、问题原因

出现 “to many requests” 的问题,归根结底还是因为频繁请求导致的。这里以 Emby Server 为例(其余的多媒体管理服务虽然作者本人也有所使用,但 Emby 为主力服务,了解的相对比较详细,因此其余服务再次不作讨论,各位看官可以参考借鉴),在加载海报墙时,Emby 会读取媒体文件的图片和 nfo 文件( nfo 文件实质上是一个 xml 格式的媒体信息文件,其中包含了刮削后获取的影片详细信息),当进入某个媒体库时,需要预读这个库中所有影片的海报图片和 nfo 文件,可想而知这瞬时的QPS有多大了。

如果是之前未优化的 webdav 服务,则有可能直接报错然后短时间无法显示,甚至会掉盘,需要重新挂载才能恢复正常。优化后的服务,虽然不会掉盘,但是由于 QPS 的限制,仍然无法像以前一样丝滑的加载海报墙,而且会非常慢,体验十分糟糕。

三、解决思路

由于 Emby 加载海报墙需要预读图片和 nfo 文件,默认情况下图片和 nfo 文件被保存在媒体文件夹中,即网盘中,那只要将海报和 nfo 文件存储到本地硬盘中不就不需要像阿里云网盘请求就可以加载海报墙并显示影片信息了吗?但是我逛了逛 Emby 的官方论坛,发现官方并没有支持将海报和 nfo 文件存储到独立目录的功能,并且表示没有支持计划。

但是我在论坛中发现了另一个信息,Emby Server 会在搭建服务的本地维护一个媒体信息的数据库,如果在创建媒体库时,不设置海报和 nfo 文件的读取,就可以将数据存储在本地的数据库中,这样 Emby 在加载海报墙时会直接从本地数据库中获取图片和影片详情,这样就能极大提升海报墙的加载速度了。

四、操作步骤

操作非常简单,只需要修改媒体库的设置即可。(作者在这里为了尽可能减少请求数量,将网盘的媒体目录中所有海报和 nfo 文件都删除了,因为列出目录和获取每个文件的下载 url 都会触发 QPS 限制。如果删除海报和 nfo 文件,则需要重新扫库,如果库中影片数量巨大,可能耗时很久)

  1. 打开媒体库编辑界面

  2. 取消勾选下面图示三处选项

  3. 如果删除了原始的海报文件和 nfo 文件,那么重新执行以下扫描媒体库即可。

四、效果展示

五、存在的缺点

在解决思路一节中提到,这种方法是将海报和媒体详细信息保存在本地数据库中,因此当同一个网盘,在异地搭建媒体服务器时,两地的数据库并不是同一份。再加上 Emby 刮削存在错误的可能性,这就导致同一媒体库多次刮削,对于刮削错误需要多次进行手动修改。

话虽如此,目前 Emby 自带的刮削器效果比较不错,作者的电影库中影片数量共661部,自动刮削错误数量不到10部,其中部分的错误原因还是因为电影的年份和命名不正确导致,在这样的正确率下,这个缺陷也就无伤大雅了。

猜你喜欢

转载自blog.csdn.net/qq_38894585/article/details/130682901