开始
今年我用nas部署了一个moontv的docker项目,也部署过类似的LibreTV,最近也听说了新的OmniBox项目,这些项目拿来追各种影视剧都很方便,只要你部署了对应的项目,并配置好了播放源,就可以直接在网页上在线播放对应的影视,可以说相当的方便

但是这样子观影有一个缺点,那就是你必须要在你部署的项目网页上才可以播放这些影视,但是我又想在nas上下载观看这些影视资源,一来二去我就想到了一个新办法
本文第二部分会讲我的探索过程和方法,第三部分讲我的完美解决办法,第四部分讲项目的部署
我的探索过程和方案(不想看的话可以直接跳过看下一部分)
已知我们已经可以在网页上播放影视资源,而当你获取这些资源时,可以知道它们是m3u8的格式,而m3u8和mp4或者mkv不太一样,它本身是一种流媒体播放列表文件(playlist file),它本身不是真正的视频文件(如 mp4 或 mkv),而是一个用 UTF-8 编码的纯文本文件,里面记录了视频的索引信息和分段地址
所以下载现在我们这个网页地址上的影视资源的话,你就得有一些方法,比如直接在手机的夸克浏览器或者其他的能下载m3u8文件的浏览器去下载,再或者在电脑上使用tampermonkey和其他的浏览器扩展去下载,所以其实本身下载这些m3u8文件并不难
但是我又不想下载到电脑和手机上,我想下载到我的nas或者服务器上,怎么办呢,我一开始找到了第一个办法
第一个方法只需要你有猫抓和mediago就可以,讲讲我的过程
我首先尝试了猫抓+aria2下载器,直接用aria2的下载器就可以从猫抓下载视频到nas里了,但是最后失败,原因是用猫抓调用aria2去下载m3u8影视资源直接就会下载m3u8文件,而不会下载这个文件地址的视频,所以失败,所以接下来我尝试了第二个方法
猫抓+mediago
讲一下它们,首先是猫抓,猫抓是一个chrome上的浏览器扩展,它可以获取并且下载m3u8文件
地址:https://o2bmm.gitbook.io/cat-catch/
第二个是mediago,它是一个docker项目,也可以下载m3u8文件,但是mediago可以直接把m3u8文件下载到nas里
地址:https://github.com/caorushizi/mediago
我组合起来的目的呢,就是猫抓可以获取网页上的m3u8文件,并且可以直接复制粘贴它的地址,如下图所示,m3u8的地址和视频播放预览全都有,很方便

而mediago需要你在mediago里去手动填写m3u8地址,再下载到nas里

正好,对于我而言这俩就可以互补了,而猫抓支持从浏览器下载m3u8的视频文件到Aria2或者mediago里
至于aria2下载器该怎么部署我这里就不说了,我很久以前有写过,大家可以去看看
最简单的,猫抓已经获取到了m3u8地址,你可以直接复制粘贴到mediago里去下载,这是最手动的方法,这种方法门槛最低,但是这种方法仍然需要你用猫抓去获取m3u8地址,然后手动去mediago下载,然而mediago还有一个下载的方法,那就是用URL 参数方式 + silent=true + Referer:*的方式去下载资源
这个方法很简单,你直接去猫抓的设置里,有个调用程序,按下图所示去填写和启动,参数就写
http://192.168.9.100:8899?n=true&name=${title}&url=${url}&headers=${referer|exists:'Referer:*'|to:urlEncode}&type=m3u8&silent=true{title}&url=${url}&headers=${referer|exists:'Referer:*'|to:urlEncode}&type=m3u8&silent=true
前面的网址http://192.168.9.100:8899,就换成你nas上部署的mediago的地址,哪怕你在外面也可以内网穿透,直接用你在公网的网址也是可以的

在这种手段下,你只需要在猫抓获取页面下的影视的时候,点击调用并确认,就可以直接打开mediago页面去下载影视了

但是,还有没有更方便的方法呢,有的有的,兄弟
已知我们现在可以用这种方法来调用mediago进行视频下载,但是我查阅了mediago的官方地址
发现mediago可以直接api调用静默下载,但是猫抓不支持这个方法,那么很简单,直接用tampermonkey,也就是油猴脚本,来写一个脚本,让这个脚本来调用api自动下载网页上的m3u8文件到nas的mediago里
可以调用直接下载的api,post
请求地址:http(s)://[host]/api/download-now
请求体,json,参数:
name(媒体命名),
url(链接),
type(媒体类型,如m3u8),
folder(保存路径,可提供,不提供就是默认路径)
脚本地址我会在下面贴出来,首先我们来讲讲脚本的逻辑
首先也就是api调用,但是这种方法我尝试了一下,纯API 模式虽然可以做到完全后台静默,但是它只适用于不需要 Referer 的视频
所以我添加了原来的url参数模式,在需要referer的视频的情况下,使用上面原来的URL 参数方式 + silent=true + Referer:*的方式去下载资源
这样子就可以下载目前大多数网页下面的m3u8视频资源
m3u8下载脚本的使用
首先你得用浏览器下载一个tampermonkey,有什么不懂的直接评论区问我
然后你得在nas或者服务器上部署一个mediago,部署方式在本文的最下面
添加我的油猴脚本,地址:https://greasyfork.org/zh-CN/scripts/559910
使用起来也很简单,那就是在你对应的想要下载视频的地址下面,首先要启用脚本

在你的播放页面会出现脚本的选项,首先点击上方的齿轮图标,填写你的mediago地址,填写后确认就可以了,齿轮的右边是深浅色模式
而视频文件是可以多选和全选进行下载的,也可以单独下载,目前一次最多批量下载 10 个,避免卡顿
下载的方式有两种,第一种是纯api模式,这是最优先的选择方式,如果第一种不行,你就可以尝试第二种来下载
使用我的这个脚本来下载的话,就可以调用你的mediago来下载视频文件了,到这里,正篇就算写完了
下面就随便写写dlc番外吧
猫抓+aria2下载器组合
如果你要下载的东西不是m3u8,那其实根本就用不到mediago,而是可以直接用aria2来下载,首先打开猫抓的设置,找到对应的aria2 prc设置,如下图所示

启用aria2 prc,密钥和地址就填你的aria2下载器地址和密钥,下图就是我的motrix aria2下载器页面,在进阶设置里设置prc的地址端口和密钥,就ok了

什么?你问我motrix怎么部署,自己去看我博客以前写过的教程吧
设置好后,就直接在猫抓里填写自己对应的Aria2 RPC 地址和密钥,最后打开这个功能
之后你再去猫抓下载m3u8的视频文件,就可以直接下载到你的nas里了
部署
猫抓很简单,直接chrome的扩展商店就可以部署了,
motrix这个aria2下载器的部署我上面也讲过了
至于mediago,可以直接docker compose,直接docker部署就可以使用了
代码如下
version: '3.9'
services:
caorushizi:
image: 'registry.cn-beijing.aliyuncs.com/caorushizi/mediago:v3.0.0'
volumes: - '你自己的地址:/root/mediago'
ports: - '8899:8899'
container_name: mediago
就这样,资源的下载变得很简单了
结语
半年没写东西了,下一年我一定要多写东西

Comments 1 条评论
新鲜