本教程适用于没有pt使用经验,但有vps经验的小伙伴使用。
随着现在中国的版权意识越来越强,我们在正常的视频平台(腾讯、B站)基本无法看到未购买版权的国外电视剧了,网上随处找的资源又参差不齐,模糊卡顿,所以一般我们使用bt的方式下载高清的番剧,但是下载后的存储和随处访问又成了问题,这里最推荐还是使用本地硬盘存储。
所以这里最终的推荐是使用Onedrive来存储,对于会员有1TB的存储空间,当然你也可以在淘宝上购买5TB版本的教育账号。
最终功能
可以在下载中心进行bt下载、通过各大视频网站的链接进行下载,并直接传到Onedrive上,最后可以在手机或电脑通过视频流的方式直接观看视频。
需要使用的工具
- ubuntu18 VPS一台
- Onedrive账号一个
- (optional) 一个c端的可直连Onedrive的软件
项目主页
https://github.com/Mopip77/download_task
VPS搭建下载平台
首先购买一台国外的VPS,这里为什么要国外的vps呢?主要是考虑到国外的资源一般国外的辅种人数会多一点,并且最为重要的是国外直传Onedrive会快非常多。
开放端口
bt下载直接接入了aria2以及Aira-NG,感谢各位大佬的开发,因为使用了aira2,所以我们需要开放6800端口。 并且需要通过web访问,所以还需要开启80端口。获取token
由于我们下载好的内容是直接传到Onedrive的,这里使用了一个rclone帮助我们完成上传的功能,因此我们需要rclone到onedrive的授权访问的token,我们先在本地下载好rclone,rclone主页。
之后,在本地终端使用rclone authorize onedrive
获取token,期间会通过浏览器登录你的onedrive账号,之后一串神秘代码会返回到终端,复制这段token。因为这个需要调用浏览器,所以必须使用本地来执行。
复制这一串代码(两个大括号之内的东西,包括大括号)备用。进入到VPS Shell,使用这个脚本部署一站式下载
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/bin/bash
# 该文件为自动部署脚本,但是测试使用的vps为ubuntu 18,其他种类或版本的linux系统不一定支持
# env
# 其中,除了ONEDRIVE_TOKEN必须设置,其他都有默认值,详情参见README.md
# 应用ID
APP_ID=
APP_PWD=
# 应用密码
# aria_prc的密码
ARIA_RPC_PWD=
# onedrive云上的同步根文件夹
ONEDRIVE_BASE_PATH=
# onedrive的to
# ken,在本地使用rclone authorize "onedrive" 获取
ONEDRIVE_TOKEN='必须配置'
# version 默认不指定版本号,缺省即使用latest
#dl_api_version=":v0.0.1"
#dl_vue_version=":v0.0.1"
# 由于程序自带了环境变量的默认值,所以如果上方的配置项留空,那么就不传入该配置项
# 该方法接收配置项项名,如果该配置项不为空(以APP_ID=me为例,传入APP_ID),那么就返回 "-e APP_ID=me", 如果(APP_ID=),那么就不返回,docker也就不会传入该配置项
fmt_docker_env() {
env_name=$1
eval env_var=`echo '$'$env_name`
if [ "$env_var" != "" ]
then
echo "-e ${env_name}=${env_var}"
fi
}
apt update
# nginx 部分
apt install -y nginx
systemctl start nginx
echo -e '
server {
listen 80;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:3001;
}
location /api {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:3000;
}
}
' > /etc/nginx/sites-enabled/default
nginx -s reload
# docker 部分
apt install -y docker.io
# 创建一个私有的局域网用于通信
docker network create dl
# 开启 redis docker
docker pull redis
docker run -d \
--network=dl \
--hostname=redis \
--name=redis redis
# 开启 api docker
docker pull mopip77/dl_api${dl_api_version}
docker run -d \
-e REDIS_ADDR=redis:6379 \
-e ONEDRIVE_TOKEN=${ONEDRIVE_TOKEN} \
`fmt_docker_env ARIA_RPC_PWD` \
`fmt_docker_env APP_ID` \
`fmt_docker_env APP_PWD` \
`fmt_docker_env ONEDRIVE_BASE_PATH` \
--network=dl \
--hostname=dl_api \
-p 3000:3000 \
-p 6800:6800 \
--name=dl_api mopip77/dl_api${dl_api_version}
#开启 vue docker
docker pull mopip77/dl_vue${dl_vue_version}
docker run -d --network=dl \
--hostname=vue \
--name=vue \
-p 3001:80 mopip77/dl_vue${dl_vue_version}
# 由于api容器安装较慢,所以最后输出一下其日志,用于判断部署完成
docker logs -f dl_api
我们只需要配置APP_ID
、APP_PWD
也就是这个下载页面的用户名和密码
ARIA_RPC_PWD
这个是aira远程过程调用的密码,随便设置即可
ONEDRIVE_BASE_PATH
是Onedrive的保存路径,这个路径命名符合linux文件系统的规范
最后就是ONEDRIVE_TOKEN
,修改成刚刚获取到的token
如果配置没有问题的话,端口也没有被占用(这里使用了3001,3000,6800,80),那么应该就成功了,尝试一下,使用浏览器访问http://<ip>/dl
左边是aria,需要手动配置一下刚刚设置的rpc的密码
右边是卡片式的下载任务,可以添加常见视频网站的视频,默认下载最高画质
Bug:
- 有个问题是rclone中需要选择remote cloud storage的编号,这个编号可能会变化,所以可能会无法配置好rclone,此时需要进入docker container手动配置
- you-get由于会根据网站视频源获取方法不同频繁更新,但是docker里是固定版本的,所以可能会导致下载错误,也需要进docker来手动更新,(这个以后应该写到docker的启动脚本中,不应该写到image中)
Tips:
有可能浏览器会自动跳转到127.0.0.1
,请尝试更换浏览器,mac的safari不会有这种问题