干货 Tips Rules & Tips
1. 遵守中国大陆相关法律法规
2. 本版还在调整当中

基于OneDrive搭建个人影视系统

查看: 17077|回复: 4
liqman 发表于 2019-3-29 20:33:06
一、        前言
在此,感谢@Rat’s,此次灵感均来源于其个人博客(www.moerats.com),由本人整理并加以补充,该方案可以实现由OneDrive网盘存储,Plex在线播放,在此分享给大家,鉴于本人也小白,所以文中若有所错误或者更好的思路,可以留言,谢谢!
大致思路就是由Aria2+AriaNG实现对种子、磁力、直链的下载并上传至OneDrive,辅助人人视频客户端下载缓存至OneDrive,最终由Plex在线播放OneDrive媒体文件,下面开始教程。
鉴于本人账号用户组限制,无法图文教程,下面就将以文字教程展开,若有不足之处麻烦指出!
第一次发帖,格式比较难看,大家轻喷。

二、        准备工作
1.        VPS一台(CentOS7,建议上1核1g)
2.        OneDrive账号一个
3.        Plex账号一个
4.        Xshell远程工具(下载地址见最后)

三、        开放端口
远程服务器,开放如下端口:8888、888、80、443、6800、3001、32400,具体命令如下:
firewall-cmd --zone=public --add-port=8888/tcp --permanent    #8888替换成其他端口
firewall-cmd --reload

四、        安装网络加速组件(以锐速为例)
运行以下命令:
wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh
输入“3”并回车,选择“安装Lotserver(锐速)内核”;
安装完成后提示是否要重启,输入“y”回车,等待重启即可;
重启进入系统,输入如下命令:
./tcp.sh
然后输入“8”,选择“使用Lotserver(锐速)”按照提示完成安装;

五、        安装Aria2及AriaNG前端页面
安装Aria2
执行下面的代码运行脚本,并输入“1”:
wget -N --no-check-certificate https://raw.githubusercontent.co ... ubi/master/aria2.sh && chmod +x aria2.sh && bash aria2.sh
接下来按照提示操作即可完成安装;
下面配置Aria2配置文件,输入命令:
vim /root/.aria2/aria2.conf
更改disable-ipv6=false为:
disable-ipv6=true
最后一行添加:
daemon = true
force-save=false
保存退出;
重启Aria2,相关命令如下:
启动:service aria2 start
停止:service aria2 stop
重启:service aria2 restart
查看状态:service aria2 status
配置文件:/root/.aria2/aria2.conf
安装Aria2NG
输入下面命令安装宝塔:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh
完成安装后,会显示宝塔登录账号及密码,请务必记住!
浏览器打开“你的服务器:8888”,登录宝塔,进去弹出软件安装界面,只安装Nginx即可。
Nginx安装完成后,点击首页-网站-添加,来添加网络站点;
出现添加网络弹框,域名那行输入“你的服务器ip:80”;
根目录那行,改为:
/www/wwwroot/Aria2NG
点击提交;
然后打开xftp,解压Aria2NG网站源码(链接见最后),上传到/www/wwwroot/Aria2NG目录;
浏览器访问你的服务器ip,进入Aria2NG页面,点击Aria2Ng Settings-RPC-Aria2 RPC Secret Token,Token使用service aria2 status命令可查看;
输入完Token页面,点击右上角的Reload Page,即可登录Aria2NG;
用下述下载链接可以测试Aria2是否可用:
http:/删/fs.open.kugou.com/f8e15d356c76e8700b833e309899ba掉25/5c9cdb46/G013/M0A/0A/15/TQ0DAFUJgva文AXzK3AFZyTf_SmeY357.字mp3
六、        Aria2下载文件自动上传
安装curl,用于访问API:
yum install curl -y
运行命令安装脚本:
wget --no-check-certificate -qO- "https://raw.githubusercontent.com/0oVicero0/OneDrive/master/OneDrive.sh" |bash
输下列命令:
onedrive -a
粘贴出现的链接到浏览器,登录你的OneDrive账号,登录完成后会出现页面无法访问,这时复制浏览器的链接至Xshell然后回车即可;
如果返回以下字段:It seems like we have a refresh token, so we are ready to go,那就恭喜你,设置成功!
新建1.txt文件,用下述命令测试是否可以手动上传至OneDrive:
onedrive 1.txt
新建脚本文件rcloneupload.sh:
vim rcloneupload.sh
复制下面代码至rcloneupload.sh:
#!/bin/bash

GID="$1";
FileNum="$2";
File="$3";
MaxSize="15728640"
RemoteDIR="OneDrive/Aria2";  #上传到Onedrive的路径,默认为根目录,可指定目录,如上传到onedrive的download文件夹中的cache文件夹,可写成RemoteDIR="download/cache"。
LocalDIR="/root/Download/Aria2Download/";  #Aria2下载目录,记得最后面加上/,可用service aria2 status查看
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;
然后输入:
chmod +x rcloneupload.sh
打开Aria2配置文件:
vim /root/.aria2/aria2.conf
最后一行加上下述语句:
on-download-complete=/root/rcloneupload.sh
最后重启Aria2;
AriaNG使用下述链接下载查看是否自动上传:
http://fs.删open.kugou.com/ea9c3aff5a2a70c3b0掉5de07c0bcf3517/5c9cd9ea/G079/M02/03/文03/L5QEAFgC-lqARXZbAEQj_2Q字0CXQ983.mp3
如果你觉得上传速度较慢,可以编辑/usr/local/etc/OneDrive/onedrive.cfg,修改export max_upload_threads=5。

七、        人人影视客户端安装:
安装依赖:
yum install make wget crontabs -y
安装rar:
#32位系统
wget http://www.rarsoft.com/rar/rarlinux-4.0.1.tar.gz
tar -zxvf rarlinux-4.0.1.tar.gz
cd rar
make

#64位系统
wget http://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz
tar -zxvf rarlinux-x64-5.3.0.tar.gz
cd rar
make
安装完成后,我们再清理下无用文件,使用命令:
cd ..
rm -rf rarlinux-*.tar.gz rar
下载人人影视:
#下载客户端
wget http://appdown.rrys.tv/rrshareweb_linux.rar
#解压
unrar x rrshareweb_linux.rar
#解压CentOS 7压缩包,这里测试的Debian、Ubuntu都可以使用该包,CentOS 6的没试过
tar -zxvf rrshareweb_centos7.tar.gz
#删除无用文件
rm -rf rrshareweb*.tar.gz rrshareweb_linux.rar WEB*.png
#运行客户端
cd rrshareweb
./rrshareweb
然后访问http://ip:3001即可,初始密码为:123456,进入界面后先点击右上方设置,修改下存储路径,不然下载会没速度,同时也可以把上传速度设置成1kb,要不然人人影视会偷跑流量共享带宽。
设置开机自启:
#以下是一整条命令,一起复制到SSH客户端运行
cat > /etc/systemd/system/renren.service <<EOF
[Unit]
Description=RenRen server
After=network.target
Wants=network.target
        
[Service]
Type=simple
PIDFile=/var/run/renren.pid
ExecStart=/root/rrshareweb/rrshareweb
RestartPreventExitStatus=23
Restart=always
User=root

[Install]
WantedBy=multi-user.target
EOF
输入以下命令:
systemctl start renren
systemctl enable renren
查看开启状态:
systemctl status renren
安装Python 3:
wget https://www.moerats.com/usr/shell/Python3/CentOS_Python3.6.sh && sh CentOS_Python3.6.sh
安装requests:
pip3 install requests
添加自动上传脚本:
#新建文件夹存放上传脚本
mkdir /root/upod
#新建检测脚本check.py,填入你的客户端运行端口和解锁密码后一起复制到ssh客户端运行
cat > /root/upod/check.py <<EOF
# -*- coding: utf-8 -*
import requests
import os
ip="127.0.0.1"
port="3001"    #默认3001
passwd=""    #默认123456
url="http://"+str(ip)+":"+str(port)+"/api/unlock?passwd="+str(passwd)
workingtaskurl="http://"+str(ip)+":"+str(port)+"/api/workingtask"
finishedtaskurl="http://"+str(ip)+":"+str(port)+"/api/finishedtask"
deletetaskurl="http://"+str(ip)+":"+str(port)+"/api/deletetask"
s=requests.session()
s.get(url=url)
c=s.get(workingtaskurl).text
d=s.get(finishedtaskurl)
dict=(eval(d.text))
for i in dict['tasks']:
            ids=i['file_id']
            filename=i['file_name']
            os.system("bash /root/upod/work.sh "+"\""+filename+"\"")
            data={
                'ids':'["'+ids+'"]',
                'delfile':1
            }
            s.post(deletetaskurl,data=data)
print("task finish")
EOF
新建自动上传脚本,使用命令:
nano /root/upod/work.sh
先将脚本里的下载目录/root/down替换成你自己设置的的人人影视下载,记得有两个位置要替换,然后再复制进去。
#!/bin/bash
export PATH=/usr/local/bin:$PATH
time=$(date "+%Y%m%d%H%M%S")
filename=${time}${1}
#time=$(date "+%Y%m%d-%H%M%S")
filedir=${filename}${time}
echo "$filedir"
echo "$filename":
mkdir -p /temp/"$filedir"/
mv /root/Download/RenrenDownload/"$1" /temp/"$filedir"/"$filename"
eval onedrive-d \'/temp/"$filedir"\'
rm -rf /temp/"$filedir"
rm -rf /root/Download/RenrenDownload/mask/
再使用Ctrl+X,Y保存退出。
测试上传脚本,自己先上人人影视网页,下载好一个视频,在运行下述命令:
python3 /root/upod/check.py
定时执行上传脚本:
#设置为每小时执行一次
echo "*/10 * * * * /usr/local/bin/python3 /root/upod/check.py" > bt.cron
crontab bt.cron
rm -rf bt.cron
最后使用crontab -l命令查看添加成功没。成功的话,就基本上完成了安装步骤。
若想更改人人影视视频上传至onedrive的指定目录,输入如下命令:
vim /root/upod/work.sh
“eval onedrive-d \'/temp/"$filedir"\'” 改为:
eval onedrive-d -f OneDrive/Renren \'/temp/"$filedir"\'

八、        挂载OneDrive
在本地Windows电脑上下载rclone(下载地址见最后)然后解压出来,进入cmd,切换到你的rclone下载目录,并输入以下命令:
rclone authorize "onedrive"
之后会弹出窗口认证,然后复制令牌:
Paste the following into your remote machine --->
{"access_token":"xxxx"}  #请复制{xx}整个内容(包括花括号),后面需要用到
<---End paste
安装fuse:
yum install fuse
安装rclone:
curl https://rclone.org/install.sh | sudo bash
初始化配置:
rclone config
2019/03/27 22:53:18 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n    #输入n
name> liqman    #随便输,后续要用请记住
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / A stackable unification remote, which can appear to merge the contents of several remotes
   \ "union"
2 / Alias for a existing remote
   \ "alias"
3 / Amazon Drive
   \ "amazon cloud drive"
4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc)
   \ "s3"
5 / Backblaze B2
   \ "b2"
6 / Box
   \ "box"
7 / Cache a remote
   \ "cache"
8 / Dropbox
   \ "dropbox"
9 / Encrypt/Decrypt a remote
   \ "crypt"
10 / FTP Connection
   \ "ftp"
11 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
12 / Google Drive
   \ "drive"
13 / Hubic
   \ "hubic"
14 / JottaCloud
   \ "jottacloud"
15 / Local Disk
   \ "local"
16 / Mega
   \ "mega"
17 / Microsoft Azure Blob Storage
   \ "azureblob"
18 / Microsoft OneDrive
   \ "onedrive"
19 / OpenDrive
   \ "opendrive"
20 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
21 / Pcloud
   \ "pcloud"
22 / QingCloud Object Storage
   \ "qingstor"
23 / SSH/SFTP Connection
   \ "sftp"
24 / Webdav
   \ "webdav"
25 / Yandex Disk
   \ "yandex"
26 / http Connection
   \ "http"
Storage> 18    #输入18,选择Microsoft OneDrive
** See help for onedrive backend at: https://rclone.org/onedrive/ **

Microsoft App Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id>    #留空
Microsoft App Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret>    #留空
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n    #输入n
Remote config
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> n    #输入n
For this to work, you will need rclone available on a machine that has a web browser available.
Execute the following on your machine:
        rclone authorize "onedrive"
Then paste the result below:
result>    #输入之前在客户端授权的内容
Choose a number from below, or type in an existing value
1 / OneDrive Personal or Business
   \ "onedrive"
2 / Root Sharepoint site
   \ "sharepoint"
3 / Type in driveID
   \ "driveid"
4 / Type in SiteID
   \ "siteid"
5 / Search a Sharepoint site
   \ "search"
Your choice> 1    #输入1,选择OneDrive Personal or Business
Found 1 drives, please select the one you want to use:
0: OneDrive (business) id=b!I3z1TyiIf0SQYkuI_To7Pazh6anCIP5CtYVRYOT1G_ur40r261roQ5aJ2uwmfhb1
Chose drive to use:> 0    #输入0
Found drive 'root' of type 'business', URL: https://liminghu-my.sharepoint.c ... osoft_com/Documents
Is that okay?
y) Yes
n) No
y/n> y    #输入y
--------------------
[liqman]
type = onedrive
token =
drive_id =
drive_type = business
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y    #输入y
Current remotes:

Name                 Type
====                 ====
liqman               onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q    #输入q,退出
开始挂载:
rclone mount liqman:OneDrive /home/OneDrive/ --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000  # liqman为初始化配置填的name,OneDrive为OneDrive里的文件夹,/home/OneDrive/为VPS上的本地文件夹,这个文件夹最好不要建在root目录下,建议建在/home。
卸载挂载目录:
fusermount -qzu /home/OneDrive/
设置开机自启:
wget -N --no-check-certificate https://raw.githubusercontent.com/x91270/Centos/master/rcloned
vim rcloned
NAME=""  #rclone name名,及配置时输入的Name
REMOTE=''  #远程文件夹,OneDrive 网盘里的挂载的一个文件夹
LOCAL=''  #挂载地址,VPS本地挂载目录,这个文件夹最好不要建在root目录下,建议建在/home
设置自启:
mv rcloned /etc/init.d/rcloned
chmod +x /etc/init.d/rcloned
chkconfig rcloned on
bash /etc/init.d/rcloned start
使用下述命令查看是否挂载成功:
df -h

九、        安装plex:
Plex安装非常简单只需要两条命令即可:
wget https://downloads.plex.tv/plex-m ... 82228f99.x86_64.rpm
yum install plexmediaserver-1.15.2.793-782228f99.x86_64.rpm -y
安装完成后,启动服务:
systemctl start plexmediaserver
确认运行状态(出现active即可):
systemctl status plexmediaserver
加入开机启动:
systemctl enable plexmediaserver
先别急着使用,回到Xshell,接下来的操作十分重要!
由于Plex默认是不允许远程连接的,只允许本地连接所以我们现在其实是无法连接这台服务器的!为了能够使我们的服务器随时随地能连接,我们先建立一条SSH隧道,回到Xshell中,找到会话设置(设置在文件选项卡下拉表单中),选择SSH-隧道-添加,侦听端口设置一个与本地没有冲突的端口例如50000端口即可,目标端口务必填写32400!填写完毕确定即可。
保持Xshell打开,在浏览器中访问(以上面设置的50000端口为例):
http://localhost:50000/web/index.html
使用之前注册的plex账号登录;
在出现“允许我在家庭外访问我的媒体”这个选项时,记得勾选!
添加库,那步操作,添加的文件夹选择你在挂载onedrive那步的文件夹,我的是/home/OneDrive/,高级那步“扫描器”选中“Plex Video Files Scanner”然后保存。
然后打开Xshell,输入:
crontab -e
在文本中添加:
0 */12 * * * /root/trackers-list-aria2.sh
*/59 * * * * /usr/sbin/service aria2 start
0 4 * * * /usr/sbin/service renren restart
*/59 * * * * /usr/sbin/service renren start
*/10 * * * * bash /etc/init.d/rcloned start
打开浏览器,输入你的VPS的IP:32400就应该可以看到Plex界面了,使用账号登录即可。
PS:mkv格式视频在线转码比较吃CPU,播放可能会卡顿,可配合plex客户端在手机或PC端进行转码。
链接:链接:https://pan.baidu.com/s/1RJFGuUmD2VYNX3brVQIfRQ
提取码:ku5t

最后上图:



更多图片 小图 大图
组图打开中,请稍候......
 楼主| liqman 发表于 2019-3-29 23:11:53
吴啦啦啦 发表于 2019-3-29 22:25
请问一下,这个个人影视系统具体作用是什么

WEB端发布下载任务,缓存至OneDrive,然后通过Plex客户端播放视频
吴啦啦啦 发表于 2019-3-29 22:25:20
请问一下,这个个人影视系统具体作用是什么
Li-guru 发表于 2019-3-30 10:11:01
不占用电脑内存,可以的哈{:5_150:}
whistle 发表于 2019-5-6 12:11:21 来自手机
可以啊这个。先保存一下,以后师门的资源可以用这个方式保存了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

虫部落 陕ICP备14001577号-1川公网安备 51019002003015号联系我们FAQ关于虫部落免责声明虫部落生存法则蛙先知 - AI 玩家社区 🚧

Build with for "make search easier" Copyright © 2013-2024. Powered by Discuz! GMT+8, 2024-4-26 21:33

快速回复 返回顶部 返回列表