admin 管理员组

文章数量: 887018

一、写在前面

折腾历程

本人49年入国军,折腾的较晚。开始懵懂的玩Alist,在Padavan老毛子上装Alist, 知道有小雅以后又在电视盒子Armbian上装Alist+小雅。

盒子百兆口+usb供电不足,移动硬盘总掉盘,然后我又换到瘦客户机CentOS。

接下来,小雅的不稳定,让我有了忧患意识。用PVE,搞了几个LXC,又是备份又是快照的。还多开了小雅,反正1个坏了,用另外一个就好了。再坏,恢复备份。

最近小雅作者说流量扛不住了,把小雅的关键更新文件(version.txt,tvbox.zip等)放到了国外服务器。于是乎大家又开始搞科学上网用小雅。

前几天,小雅作者自己也承认,容器启动动不动就会出问题,于是给出了新的解决方案。个人感觉算是告一段落了。

无奈最阿里云api接口收费搞的沸沸扬扬。就感觉一切刚刚踏上正轨,就要结束了一样。但心中那团火不灭,总想着还能给大家带来点余热,索性分享出来,大家且用且珍惜吧。

本文包含的和不包含的

那些全家桶,tvbox,infuse等等,都是锦上添花的。看大家喜好。我本人因为没需求,所以就没折腾。想看这部分内容的朋友可以滑走了,别喷我就行。

我只想跟大家说说我理解的工作原理,心得,还有个人有限经验。最起码,能保证基础的东西稳定,可靠,好用。希望真正解决大家的问题。


二、知己知彼百战百胜 - 我来用大白话讲工作原理

小雅做了什么事儿? 简单说,她用爬虫把网上资源都搜刮来以后,整合到一起了。所以你会发现,一旦某些不稳定的共享资源取消了,小雅里面也就消失或者报错了。

你使用小雅的原理:小雅上的资源,你如果点开观看,小雅会做如下事情:

1.取得该文件实际保存地址

2.把文件作为分享,保存在你的阿里云盘分享目录中。

3.你播放的时候,其实是在播放自己网盘里面刚刚保存的文件。

所以,小雅没存东西,她只是把资源的路径整合在一起,然后按需保存文件到你的网盘供你观看。

那么问题来了:

1.我的网盘没那么大,保存那么多东西装不下怎么办?

2.资源列表咋更新?

3.为啥启动后只有版本号?

4.为啥我三要素都是对的,还是启动失败?

5.为啥我这报错无法获取version文件

我们一 一解答。

为啥这么受欢迎?高清,免费,没广告,日更,大而全,谁不喜欢?

1.安装四部曲之一:安装小雅容器

网上教程很多,不赘述,具体看这里: 如何设置xiaoya的docker (notion.site)

提前准备好token,refreshtoken,共享文件夹folderid,一个命令搞定。群晖图形化安装,网站上也详细介绍了。

然后一键安装

bash -c "$(curl http://docker.xiaoya.pro/update_new.sh)"

如果是用host模式安装,则用

bash -c "$(curl http://docker.xiaoya.pro/update_new.sh)" -s host

划重点: 这是小雅容器的安装,基础的基础。

安装好以后,你能看到多了一个xiaoya容器

这时候,访问你的 ip:5678 就可以进入小雅了。 想套娃到你的Alist中,请参考我之前的文章:

 这该死的Alist,把我的所有家当都收进去了!----Alist使用技巧之基础篇

 一个Alist你还能玩出花来?-- Alist使用技巧之进阶篇

2.安装四部曲之二:设置小雅容器定时重启,更新资源列表

有人服务器,比如NAS不是24小时开机,而是每天开关机,那这步忽略吧。

linux 基本都一样 crontab -e

添加一行:(我每天凌晨2点自动重启xiaoya容器,更新资源列表。大家酌情修改)

0 2 * * * docker restart xiaoya

Armbian 需要重启crontab服务

群晖更简单,定时任务添加一个就可以了。

3.安装四部曲之三 -- 安装 xiaoyakeeper。

干啥用的?

1. 如上所说,存到你网盘里的视频文件,可以按需自动清理

2.定期自动更新小雅容器

一劳永逸的 小雅 转存 清理 工具

模式0:每天自动清理一次。如果系统重启需要手动重新运行或把命令加入系统启动。

bash -c "$(curl -s https://xiaoyahelper.ddsrem/aliyun_clear.sh | tail -n +2)" -s 0 -tg

模式1:一次性清理,一般用于测试效果。

bash -c "$(curl -s https://xiaoyahelper.ddsrem/aliyun_clear.sh | tail -n +2)" -s 1 -tg

模式2:已废弃,不再支持

模式3:创建一个名为 xiaoyakeeper 的docker定时运行小雅转存清理并升级小雅镜像

bash -c "$(curl -s https://xiaoyahelper.ddsrem/aliyun_clear.sh | tail -n +2)" -s 3 -tg

模式4:同模式3

模式5:与模式3的区别是实时清理,只要产生了播放缓存一分钟内立即清理。签到和定时升级同模式3

bash -c "$(curl -s https://xiaoyahelper.ddsrem/aliyun_clear.sh | tail -n +2)" -s 5 -tg

其它模式:也可以把脚本下载下来自己魔改。

签到功能说明:

1、执行时机和清理缓存完全相同

2、可以手动创建/etc/xiaoya/mycheckintoken.txt,定义多个网盘签到的32位refresh token,每行一个,不添加文件就是默认小雅转存的网盘签到。

3、自动刷新/etc/xiaoya/mycheckintoken.txt、/etc/xiaoya/mytoken.txt(可能可以延长refresh token时效,待观察)

关于模式0/3/4/5定时运行的说明:

1、默认从运行脚本的下一分钟开始,每天运行一次

2、运行的时间也可以通过手动创建/etc/xiaoya/myruntime.txt修改,比如06:00,18:00就是每天早晚6点各运行一次

关于自动升级:

1、定时升级的命令保存在/etc/xiaoya/mycmd.txt中,删除该文件变成定时重启小雅

2、完成清理和签到后自动执行/etc/xiaoya/mycmd.txt中的命令,该文件中的内容默认升级小雅镜像,可以修改该文件改编脚本的行为,不建议修改。

关于tg推送:

所有模式加上-tg功能均可绑定消息推送的TG账号,只有第1次运行需要加-tg参数

我个人推荐模式5,完全不占用自己的网盘空间,不会因为空间满了无法播放而报错。后面的-tg 对我来说没啥用,所以我也干掉了。

bash -c "$(curl -s https://xiaoyahelper.ddsrem/aliyun_clear.sh | tail -n +2)" -s 5

安装好以后,多了个xiaoyakeeper 容器,放那里就可以了,不用管,它会默默的工作。

 

 验证下效果,播放个文件,你就看到它帮马上帮你清理掉,网盘干干净净。

4.安装四部曲之四 -- 添加自动下载关键文件定时任务

这是最新的,站内似乎还没人提到过哟

添加定时任务,每小时定时拉取关键资源文件,保证容器每次启动成功。

有时各种原因会导致启动时获取数据包连接不畅顺,为了启动时更顺畅,可以试试一键更新一下,我在update_new.sh脚本里添加了一个目录映射 -v /etc/xiaoya/data:/www/data

执行,如果xiaoya配置默认路径是 /etc/xiaoya 那么 -s 的参数可以忽略

bash -c "$(curl http://docker.xiaoya.pro/update_data.sh)"

包含了:

1. 下载文件,数据包保存到 /etc/xiaoya/data

2. 注入定时任务crontab

3. 编辑 download_url.txt

也就是每小时去抓一次文件,中间网络不稳定都无所谓,反正只要有一次成功,/etc/xiaoya/data 目录下就有可用的文件。这样启动稳定性大大增加,不会一会儿有内容一会儿没内容

这个sh文件我看了下,会添加定时任务,每一小时更新下关键启动文件:tvbox.zip update.zip index.zip version.txt

执行该命令前,/etc/xiaoya 下面是没有 data文件夹的

我们来执行命令,第一次会自动创建 /etc/xiaoya/data 文件夹,并下载几个关键文件,如果小雅容器有更新,也会一并升级。

执行过后,可以看到 /etc/xiaoya/data 下的文件了

我们再看看定时任务,已经自动添加好了。每小时会自动运行该脚本,有关键文件更新下载和容器更新 则更新,没有则保持不变。

 

最后的效果

  • xiaoya_update 定时运行,每小时检查关键文件更新、和小雅容器更新,保证顺利启动

  • xiaoya 容器每天早上定时重启,获取最新文件列表

  • xiaoyakeeper (尊敬的清道夫大人)默默的守护者你,你看一个他删一个,网盘里干净整洁

    现在我的小雅很少出问题了。

如上磨磨唧唧说了一大堆,就是给大家讲讲原理,以后碰到问题也知道咋解决。

三、踩过的坑 -- 常见问题

绝大多数问题都是因为网络,我大连配置的小雅,从来没折腾过。不用定时更新,不用科学,就是稳定。上海的就不行,隔三差五出问题。

1. 如果出现了重启后只有一个版本号,那就说明网络没有获取到数据

要么启动的时候超时了,要么这些文件取不到。通过步骤四可以解决。


2. 如果步骤四也报错,那估计你要科学一下了。如何科学?

创建容器时,加一个环境变量 http_proxy 值为你的科学地址比如 http://192.168.1.6:8890

如果是https的, https_proxy 对应 https://192.168.1.6:8890

已有容器,增加个环境变量即可。

3.我已经很努力了,所有token都取了很多次,还报错,类似: Tokenverifyfailed:The token was expected to have 3 parts, but got 1.

告诉你,不是你的错,是验证你的refreshtoken不成功,换个opentokenurl 就可以了。修改 /etc/xiaoya/opentoken_url.txt 文件

这里有2个地址,换成另外一个试试,基本都奏效。(这个问题困扰了我好久,xiaoya群里直说换个refreshtoken --没用,最后我自己研究出来这个解决方案)

  • https://api-cf.nn.ci/alist/ali_open/token

  • https://api.xhofe.top/alist/ali_open/token


4. 报错诸如cant get file id

一定是网盘满了,按照我的方式部署,step3 xiaoyakeeper,你不会遇见这个问题的。


5.我都装好了,小雅里面好多东西,我有点没方向了。

小雅装好,以下方式可以选择

  • ip:5678 网页直接观看,可以充分利用搜索功能有方向的看,别瞎看,浪费自己生命,你看不完的,哈哈哈。

  • 配置webdav,客户端看,webdav 账号密码 用户: guest 密码: guest_Api789

  • 套娃到自己的Alist,可以参考我之前的文章。

    执行下面代码获取令牌

    把令牌填到 Authorization, Server 选用本地的docker 地址,不要填账号和密码

docker exec -i xiaoya sqlite3 data/data.db <

select value from x_setting_items where key = "token";

EOF

  • 自己的xiaoya直接放公网? 那改下密码吧

设置强制登入,和自定义密码

把密码保存到 /etc/xiaoya/guestpass.txt (不过不要设置稀奇古怪的符号,例如;“~@()*$ 之类的)

如果你的xiaoya放在公网,为了防止别人蹭网,可以设置强制登入,新增 /etc/xiaoya/guestlogin.txt 这个文件,重启即可,文件有没有内容无所谓,如果取消强制登入就删除这个文件。强制登入的账号为 dav,密码使用 /etc/xiaoya/guestpass.txt 里设置的,同时webdav连接使用 dav 这个用户

上述2个功能设置好后需要重启docker才会生效。

  • 我一般都豆瓣找自己想看的,然后去 主页 | 小雅的分类 Alist (xiaoya.pro) 搜索,得到路径后去自己的alist对应目录去播放。


6.其他问题

见招拆招吧,评论区见,我自信的认为,你把4个步骤都做了,90%的问题都能解决。

四、有感而发

最近很多朋友比较担忧阿里云API收费,这些东西都会挂云云。 我比较同意xiaoya作者的看法。

互联网嘛,总有一些人为爱发电,比如我就乐于分享,哈哈哈。相信新的政策出来,大家会有新的方式方法的。不必过于担忧、过分唱衰带节奏。

那么今天呢?今朝有酒今朝醉,且用且珍惜就是了。折腾是一种乐趣,分享是一种精神,能帮到大家,我很荣幸。

本文标签: 还没 阿里 小雅 杂谈 xiaoya