Home 一站式下载平台搭建
Post
Cancel

一站式下载平台搭建

本教程适用于没有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会快非常多

  1. 开放端口
    bt下载直接接入了aria2以及Aira-NG,感谢各位大佬的开发,因为使用了aira2,所以我们需要开放6800端口。 并且需要通过web访问,所以还需要开启80端口

  2. 获取token
    由于我们下载好的内容是直接传到Onedrive的,这里使用了一个rclone帮助我们完成上传的功能,因此我们需要rclone到onedrive的授权访问的token,我们先在本地下载好rclone,rclone主页
    之后,在本地终端使用rclone authorize onedrive获取token,期间会通过浏览器登录你的onedrive账号,之后一串神秘代码会返回到终端,复制这段token。因为这个需要调用浏览器,所以必须使用本地来执行。
    Snipaste_2020-07-31_13-04-15.png 复制这一串代码(两个大括号之内的东西,包括大括号)备用。

  3. 进入到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_IDAPP_PWD也就是这个下载页面的用户名和密码
ARIA_RPC_PWD这个是aira远程过程调用的密码,随便设置即可
ONEDRIVE_BASE_PATH是Onedrive的保存路径,这个路径命名符合linux文件系统的规范
最后就是ONEDRIVE_TOKEN,修改成刚刚获取到的token

如果配置没有问题的话,端口也没有被占用(这里使用了3001,3000,6800,80),那么应该就成功了,尝试一下,使用浏览器访问http://<ip>/dl
Snipaste_2020-07-31_14-18-53.png

左边是aria,需要手动配置一下刚刚设置的rpc的密码
右边是卡片式的下载任务,可以添加常见视频网站的视频,默认下载最高画质

Bug:

  1. 有个问题是rclone中需要选择remote cloud storage的编号,这个编号可能会变化,所以可能会无法配置好rclone,此时需要进入docker container手动配置
  2. you-get由于会根据网站视频源获取方法不同频繁更新,但是docker里是固定版本的,所以可能会导致下载错误,也需要进docker来手动更新,(这个以后应该写到docker的启动脚本中,不应该写到image中)

Tips:
有可能浏览器会自动跳转到127.0.0.1,请尝试更换浏览器,mac的safari不会有这种问题

This post is licensed under CC BY 4.0 by the author.

SpringProfile

Git骚操作