Skip to content
This repository has been archived by the owner on Apr 12, 2019. It is now read-only.
/ AutoYtB Public archive

订阅youtuber, 有视频时自动转播到对应的b站账号

License

Notifications You must be signed in to change notification settings

HalfMAI/AutoYtB

Repository files navigation

AutoYtB

订阅youtuber, 有视频时自动转播到对应的b站账号

感谢autolive的参考 : https://github.com/7rikka/autoLive

一键安装,适合完全新手,而且服务器也没有别的其它设置的(安装完毕后会重启机器,请注意)

wget https://raw.githubusercontent.com/HalfMAI/AutoYtB/master/newInstall.sh && chmod +x newInstall.sh && bash newInstall.sh

如果服务器有别的设置的话建议参考下列各个软件进行选择性安装

软件依赖和环境安装

streamlink, ffmpeg, python3

如果使用account登录模式, 还需要安装chrome与chromedriver或firefox与firefoxdriver

ffmpeg安装,因为各系统不同安装方法也不同这里只提供vultr centos7的安装方法 这里安装的是最新版本的由https://www.johnvansickle.com/ffmpeg/ 编译的ffmpeg版本

sudo yum install epel-release -y
sudo yum update -y
shutdown -r now

sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

wget https://raw.githubusercontent.com/Sporesirius/ffmpeg-install/master/ffmpeg-install
chmod a+x ffmpeg-install
./ffmpeg-install --install release
rm -f ffmpeg-install

python3安装,这里安装的是3.7独立安装,运行时调用的是python3.7而不是python3。 如果系统没有 wget 请先运行

yum install -y wget

然后再运行下面的

yum install -y gcc openssl-devel bzip2-devel libffi libffi-devel sqlite-devel
cd /usr/src
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
tar xzf Python-3.7.0.tgz
cd Python-3.7.0
./configure --enable-optimizations
make altinstall
rm -f Python-3.7.0

chrome与chromedriver安装

下面采用了一键脚本安装chrome,喜欢自己动手的可以参照下面教程自己添加源安装 https://intoli.com/blog/installing-google-chrome-on-centos/

curl https://intoli.com/install-google-chrome.sh | bash

安装chromedriver,chromedriver的版本要和你安装的chrome对应,具体对应版本请查看(例子中使用的是2.43) http://chromedriver.chromium.org/downloads

wget -N https://chromedriver.storage.googleapis.com/2.43/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
chmod +x chromedriver
mv chromedriver /usr/bin/
rm -f chromedriver_linux64.zip

streamlink安装,如果系统没有pip,请在安装python3.7后再更改为pip3.7

pip3.7 install streamlink

代码依赖库

如果系统没有pip,请在安装python3.7后再更改为pip3.7

pip3.7 install requests
pip3.7 install numpy
pip3.7 install selenium
pip3.7 install Pillow
pip3.7 install sqlalchemy
pip3.7 install apscheduler
pip3.7 install psutil

开启防火墙,这里打开的是80端口,需要根据对应配置的端口来设置

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

如何把当前代码传到服务器或者更新代码(请在服务器当前没有任务时进行更新,虽然已经运行的任务会继续运行,但它不会再自动转码变成mp4,会一直留在temp_videos文件夹里)

cd ~
wget https://github.com/HalfMAI/AutoYtB/archive/master.zip
[ -f AutoYtB-master/config.json ] && unzip -o master.zip -x *.json || unzip -o master.zip
rm -f master.zip
cd AutoYtB-master/

运行前的配置

打开目录中的config.json

{
    "serverIP": "XXXXX",      <-必需设置,用于pubsubhub的回调地址
    "serverPort": "80",       <-运行端口
    "subSecert": "",          <-会自动生成的sercert,用于pubsubhub的订阅校验和服务器身份校验  
    "is_auto_record": true,   <-是否自动录像,请自己看一下服务器空间来设置,默认是false
    "driver_type": "chrome",  <-account登录模式时使用的浏览器,可选值为chrome和firefox,请根据自己机器上安装的浏览器与驱动配置
    "login_retry_times": 3,   <-登录重试次数
    "subscribeList": [
        {
            "mark": "账号标识或备注",                    <-账号标识或备注,用于在手动开播时会显示在列表中
            "opt_code": "XXXXXXX",                      <-用于手动开播时的操作码,用这个来代替操作账号开播的授权
            "login_type": "cookies",                    <-登录模式,目前支持cookies及account两种模式
            "bilibili_cookiesStr": "xxxxxxxxxxx",       <-cookies登录模式时必填,输入访问B站时的requestHeader的cookies
            "auto_send_dynamic": false,                 <-开播时是否自动发动态,注意如果你的账号以前没发过动态,先手动去发条动态同意一下协议
            "dynamic_template": "转播开始了哦~☞${roomUrl}",    <-开播动态内容,变量以${paramName}的形式表示,目前支持的变量仅有roomUrl:直播间地址
            "bilibili_areaid": "33",                    <-自动开播时的区域ID
            "youtubeChannelId": "UCWCc8tO-uUl_7SJXIKJACMw,xxxxxxxxx,xxxxxxxxxx",     <-订阅的youtube channel_id,可以使用逗号分隔用于多频道(小写逗号)
            "twitterId": "kaguramea,xxxxxxxxxxx,xxxxxxxxxx"                    <-用于监控twitter的ID,可以使用逗号分隔用于多频道(小写逗号)
        },
        {
            "mark": "账号标识或备注",                    <-账号标识或备注,用于在手动开播时会显示在列表中
            "opt_code": "XXXXXXX",                      <-用于手动开播时的操作码,用这个来代替操作账号开播的授权
            "login_type": "account",                    <-登录模式,目前支持cookies及account两种模式
            "username": "xxxxxxxxxxxx",                 <-登录账号,account登录模式时必填
            "password": "xxxxxxxxxxxx",                 <-登录密码,account登录模式时必填
            "auto_send_dynamic": false,
            "dynamic_template": "转播开始了哦~",
            "bilibili_areaid": "33",
            "youtubeChannelId": "xxxxxxxxxxx",
            "twitterId": ""
        }
    ]
}

如何运行

1.cd 到对应的目录,如果是按上面执行的话就是要先cd到AutoYtB文件夹

cd AutoYtB

2.运行以下命令

nohup python3.7 -u main.py > logfile.txt &

如何手动开播

访问地址:http://{服务器IP或域名}/web/restream.html

录像的目录

录像会临时在项目中的 temp_videos 文件里,以flv 的格式保存着,在任务结束 后会转码为mp4封装转移至 archive_videos 中

如何进行推特检测(此操作有一定延迟,最大延迟大概15分钟,并不能完全实时)

使用 ifttt 建立监控某个用户的推特,当某用户发推时,调用webhook: url :http://{服务器IP或域名}/tweet 请求方法:POST 请求内容:{ "twitter_acc": "<<<{{UserName}}>>>", "twitter_body":"<<<{{Text}}>>>", "auth": "XXXXXXXXXXX" } auth里的XXXXXX是指config.json生成的 "subSecert",用来做服务器身份验证的

TODO LIST

  • 环境自动安装脚本
  • 添加手动下播功能,只需要对应rtmp就可以了
  • 订阅列表添加到config.json的可视化界面和接口吧
  • twitcast 支持?
  • openREC 支持?
  • showroom 支持?
  • Mirrativ 支持?
  • 17live 支持?
  • RELITIY 支持??
  • ifttt 监控推特自动监控上面的其它平台??
  • account登录模式cookies过期自动重新登录
  • 开播动态内容支持更多变量(如来源频道标题等)
  • 等一个有心人做一个预定开播页面

About

订阅youtuber, 有视频时自动转播到对应的b站账号

Resources

License

Stars

Watchers

Forks

Packages

No packages published