PHP采集91视频配合Aria2自动下载并上传OneDrive
一、前言
网上很多是Python采集而且视频网站前段时间做了一些防护手段,导致很多源码不能使用。在浏览GitHub的时无意中发现一个用PHP写的采集程序,而且还在更新,作者看来也是一位老司机。
必读文章《使用Aria2+AriaNg+oneindex+onedrive建立离线BT下载/在线播放》
二、准备工作
1、一台国外服务器,硬盘没有要求,但是流量一定要大(建议10T起步);
2、注:不要在口碑不好的商家购买;
3、一个5Tb的OneDrive帐号(百度搜一下,可以申请到。建议不要存储重要资料);
4、具备一定的Linux知识
三、操作步骤
注:以下教程基于CentOS7操作,使用其它系统出现问题请自行解决。
1、服务器基本操作:
1.1 “升级”
1
|
yum –y update
|
这一步是我个人习惯性操作,可以略过。
1.2 安装Screen
1
|
yum –y install screen
|
连接国外服务器可能会出现网络“波动”情况,使用Screen命令可以避免连接断开导致半途而废。
screen -S yourname 新建一个叫yourname的session;例:screen -S porn
screen -ls 列出当前所有的session;
screen -r yourname 回到yourname这个session;例:screen -r pron
screen -d yourname 远程detach yourname这个session;例:screen -d pron
2、编译安装Aria2
一定要用源码编译安装后再使用网上的一键脚本
2.1 安装编译所需环境
1
|
yum –y install gcc–c++ gcc
|
2.2 下载Aria2源码
这里使用screen 新建一个session,因为编译所需时间有点长。
1
2
3
4
5
6
|
screen –S aria
git clone https://github.com/aria2/aria2.git
cd aria2
autoreconf –i
./configure
make
|
等待编译完成之后
1
2
3
|
cd src
cp aria2c /usr/local/bin
aria2c –v
|
出现下图所示,表示已正常安装。
安装完之后还要写aria2的配置文件还开机启动之类的,这里偷个懒,我使用的是一键脚本
下载安装:
1
|
wget –N —no–check–certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/aria2.sh && chmod +x aria2.sh && bash aria2.sh
|
选择1进行安装
在配置文件/root/.aria2/aria2.conf中把密码注释掉,在rpc-secret选项前加个#号保存,然后运行脚本选择6,重启aria2
3、php采集源码地址:
1
|
https://github.com/zzjzz9266a/91porn_php
|
把源码Git 到服务器中,使用-b 参数指定aria2 分支(源码有php、php+aria2、docker三个版分支,详细情况请在GitHub源码页查看。)
1
2
|
cd /home
git clone –b aria2 https://github.com/zzjzz9266a/91porn_php
|
建议在Screen 模式下操作
1、91porn.php是爬取首页的视频,直接运行即可;
用法:我上面把源码git到home目录,所要切换到源码目录,然后运行。
cd /home/91porn_php
php 91porn.php
2、91all.php是爬取列表页的,例如“收藏最多”、“本月最热”等等,要别的列表的话可以去找对应的url
listPage(“http://91porn.com/v.php?next=watch&viewtype=basic”); //全部视频
//listPage(“http://91porn.com/v.php?category=top&viewtype=basic”);//本月最热
// listPage(“http://91porn.com/v.php?category=mf&viewtype=basic”);//收藏最多
// listPage(“http://91porn.com/v.php?category=md&viewtype=basic”);//本月讨论
爬取页数可以自行更改,默认到10页;
$maxPage = 10; //更改爬取页数
3、下载完成后就可以到videos目录下找到视频文件了
4、下载单个视频文件
运行detailPage.php文件,将视频网页的地址传入
php detailPage.php http://91porn.com/view_video.php?viewkey=042a30e56c9cd20b075f
源码运行需要PHP>=5.6、nodejs
这里我们还可以再偷个懒,使用BT面板进行安装。
1
|
yum install –y wget && wget –O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh
|
安装完成之后登录后台在软件商店中进行安装PHP和nodejs(nodejs版本没有限制,我选择的是最新的V12.2.0;php安装的是7.2)
删除php配置文件中的禁用函数 exec、shell_exec
操作到这里,建议重启一下服务器。
四、后续操作
上述步骤操作完,就能把视频下载到你的服务器中,不过要自动上传到OneDrive,还需下面的操作。
1、Onedrive 授权
1
|
wget —no–check–certificate –q –O /tmp/OneDrive.sh “https://raw.githubusercontent.com/weiyidu/OneDrive/master/OneDrive.sh” && chmod +x /tmp/OneDrive.sh && bash /tmp/OneDrive.sh
|
1.1 运行onedrive -a
1.2 将上图返回的网址复制到浏览器中打开
1.3 登陆你的OneDrive for Business账号
1.4 登陆成功后复制地址栏中的地址,并提取code的字段(code= 后面到 & 前面,这一段)
1.5 粘贴至终端,并敲回车键
2、下载自动上传脚本
1
|
wget —no–check–certificate –q –O /root/autoupload.sh “https://raw.githubusercontent.com/weiyidu/OneDrive/master/autoupload_new.sh” && chmod +x /root/autoupload.sh
|
脚本源码:
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
|
#!/bin/bash
GID=“$1”;
FileNum=“$2”;
File=“$3”;
MaxSize=“15728640”
RemoteDIR=“”; #上传到Onedrive的路径,默认为根目录,如果要上传到指定目录,方法看文章最后面。
LocalDIR=“/home/”; #Aria2下载目录,记得最后面加上/
if [[ –z $(echo “$FileNum” |grep –o ‘[0-9]*’ |head –n1) ]]; then FileNum=‘0’; fi
if [[ “$FileNum” –le ‘0’ ]]; then exit 0; fi
if [[ “$#” != ‘3’ ]]; then exit 0; fi
function LoadFile(){
IFS_BAK=$IFS
IFS=$‘\n’
if [[ ! –d “$LocalDIR” ]]; then return; fi
if [[ –e “$File” ]]; then
if [[ $(dirname “$File”) == $(readlink –f $LocalDIR) ]]; then
ONEDRIVE=“onedrive”;
else
ONEDRIVE=“onedrive-d”;
fi
FileLoad=“${File/#$LocalDIR}”
while true
do
if [[ “$FileLoad” == ‘/’ ]]; then return; fi
echo “$FileLoad” |grep –q ‘/’;
if [[ “$?” == “0” ]]; then
FileLoad=$(dirname “$FileLoad”);
else
break;
fi;
done;
if [[ “$FileLoad” == “$LocalDIR” ]]; then return; fi
if [[ –n “$RemoteDIR” ]]; then
Option=” -f $RemoteDIR”;
else
Option=“”;
fi
EXEC=“$(command -v $ONEDRIVE)”;
if [[ –z “$EXEC” ]]; then return; fi
cd “$LocalDIR”;
if [[ –e “$FileLoad” ]]; then
ItemSize=$(du –s “$FileLoad” |cut –f1 |grep –o ‘[0-9]*’ |head –n1)
if [[ –z “$ItemSize” ]]; then return; fi
if [[ “$ItemSize” –ge “$MaxSize” ]]; then
echo –ne “\033[33m$File \033[0mtoo large to spik.\n”;
return;
fi
eval “${EXEC}${Option}” \‘“${FileLoad}”\‘;
if [[ $? == ‘0’ ]]; then
rm –rf “$FileLoad”;
fi
fi
fi
IFS=$IFS_BAK
}
LoadFile;
|
修改源码中的LocalDIR,这里写你的php采集视频下载目录,比如我的就是LocalDIR=/home/91porn_php/videos/
3、修改aria2.conf
打开配置文件修改下载目录,修改dir目录与上面LocalDIR一样。
并在最后一行添加 on-download-complete=/root/autoupload.sh
然后重启Aria2
教程到此结束。
效果: