python自动进直播_Python实现自动录制虎牙直播
Python如何实现录制虎牙直播
需求
之前比较喜欢看虎牙的直播,但是由于时间比较忙没办法看,最近学完Python的基础课程后考虑能否用Python来实现自动录像,这样想什么时候看就能什么时候看,比较方便。
准备工作
仅从使用角度来看,需要安装:
Python(开玩笑怎么能没有这个)
Python所需的模块(requests、json、re)
录屏软件(ffmpeg)
如果想要理解代码进行修改的话建议学一些Python爬虫入门即可
博主使用的是Ubuntu系统,想要在Windows下运行的话只需要修改命令行执行语句,并且把ffmpeg.exe这个可执行文件放在当前目录即可
程序执行效果:输入直播间地址,通过多线程可以实现判断直播间当前是否正在直播,如果直播开始即开始录屏,直播结束录屏结束。(有一个目前尚未解决的bug,如果直播间在进行重播,当前这个判断会出问题,留待之后修改)
代码分析
下面就是令人激动的代码了
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
import random
import requests
import re
import os
import threading
import time
import datetime
import random
class HuyaLive():
def __init__(self,url):
# 必须的访问地址和访问头
self.url = url
self.headers={"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
def prepare(self):
# 获得页面html字符串
response = requests.get(self.url,headers=self.headers)
html = response.content.decode()
# 加载json
json_script = re.search('"stream": ({.+?})\s*};', html).group(1)
print(json_script)
data = json.loads(json_script)
# 获取视频流
room_info = data['data'][0]['gameLiveInfo']
stream_info = random.choice(data['data'][0]['gameStreamInfoList'])
sFlvUrl = stream_info['sFlvUrl']
sStreamName = stream_info['sStreamName']
sFlvUrlSuffix = stream_info['sFlvUrlSuffix']
sFlvAntiCode = stream_info['sFlvAntiCode']
flv_url = '{}/{}.{}?{}'.format(sFlvUrl, sStreamName, sFlvUrlSuffix, sFlvAntiCode)
# 打印视频流地址
print("current url = ",flv_url)
# 利用ffmpeg进行录屏
filename = datetime.datetime.today()
filename = filename.strftime('%Y-%m-%d%H:%M:%S')
filename = filename + '.flv'
print(filename) # 文件名称类似'%Y-%m-%d%H:%M:%S.flv'格式
# 文件保存的目录,我把文件存在硬盘上面了
file_path = "/media/ych/Seagate\ Backup\ Plus\ Drive/zhibo"
os.system('ffmpeg -user-agent "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" -i {} -c copy {}'.format('"%s"' % flv_url, os.path.join(file_path,filename)))
def run(self):
# 判断是否开播
global anchor_status # 是否开播的标记
response = requests.get(self.url, headers=self.headers)
html = response.content.decode()
anchor_status = re.findall("上次开播(.*?)" , html)
# 开播返回None,不开播返回列表
if anchor_status:
print("尚未开播")
else:
print("正在直播")
def change_status(self):
# 判断是否开播的线程
print("------change------")
while True:
try:
self.run()
# 随机对直播间进行访问,为防止爬虫被封
time.sleep(random.randint(10,30))
except:
# 如果ip被封或报错,休息60s后继续访问
time.sleep(60)
def recording(self):
global flag,anchor_status
# 进行录屏的线程
while True:
print("-------recoding-------")
print(len(anchor_status) == 0)
print(flag)
time.sleep(5)
if len(anchor_status) == 0 and flag:
print("---get into self prepare")
# 进行录屏
self.prepare()
flag = False
elif len(anchor_status) != 0:
flag = True
anchor_status = ["1"]
flag = True
if __name__ == '__main__':
temp_url = "http://www.huya.com/{}"
room_name = input("请输入直播间房间号,例如“920710”:")
request_url = temp_url.format(room_name)
site = HuyaLive(request_url)
change = threading.Thread(target=site.change_status)
ffm = threading.Thread(target=site.recording)
# 开始运行程序
change.start()
ffm.start()
代码地址
github:https://github.com/YCH188/huyalive
欢迎提出建议!
我的邮箱是yangchenghao159@gmail.com
参考文献
1.https://github.com/CharlesPikachu/Video-Downloader/blob/master/not_in_downloader/liveCache/douyuTV.py
2.https://github.com/zhangn1985/ykdl
python自动进直播_Python实现自动录制虎牙直播相关推荐
- python自动备份手机_python实现自动备份windows应用数据
开发这个功能主要是刚开始要备份几台windows服务器的用户数据,后来写到最后就变成了一个数据备份通用工具了,程序可以根据配置文件的配置进行目录数据的备份,只要指定备份的目录,程序会自动调用系统win ...
- 如何在python中表示微分_Python实现自动微分(Automatic Differentiation)
什么是自动微分 自动微分(Automatic Differentiation)是什么?微分是函数在某一处的导数值,自动微分就是使用计算机程序自动求解函数在某一处的导数值.自动微分可用于计算神经网络反向 ...
- python海龟图画龙珠_Python selenium+webdriver 实战龙珠直播
selenium是一个自动化的web应用测试工具,直接可以运行在浏览器中模拟用户进行操作,有点类似于机器人,可以模拟用户进行点击,登陆,输入等操作. webdriver可以看成是驱动器,用来驱动我们的 ...
- python自动操作脚本_Python实现自动挂机脚本 | 沐雨浥尘
使用Python + win32api实现简单自动鼠标点击 使用tkinter设计GUI界面并用pyinstaller打包 不知不觉肝阴阳师也快一年了,对这游戏真是又爱又恨,最近刚刚发布了PC版,突然 ...
- python如何做脚本_Python实现自动挂机脚本(基础篇)
不知不觉肝阴阳师也快一年了,对这游戏真是又爱又恨,最近刚刚发布了PC版,突然很想尝试着写个脚本挂机,话不多说进入正题. 简单的鼠标操作 游戏挂机脚本,无非就是自动移动鼠标,自动点击,进行重复操作,所以 ...
- python 用题库自动答题器_python实现自动刷题
使用Python实现云豆网自动刷题 这些是一大佬写的我就解读一下 所有代码全是Py3 要有一些Python基础emmm不用太多 不懂就问我的QQ:2025450852 大体思路: 控制浏览器模拟点击 ...
- python操作手机京东_Python实现自动上京东抢手机
本文实例为大家分享了Python自动上京东抢手机的具体代码,供大家参考,具体内容如下 上次抢荣耀V9,被京东给恶心到了,所以就写了个简单的Python来自动抢V9.虽然用的是比较蠢的方法,但觉得还是有 ...
- python用os模块自动打开软件_Python实现自动打开电脑应用的示例代码
由于时间原因,有时候可能会错过某个上网课的时间段.因此想要实现自动定时启动DingDing. 新手一枚,如有不当勿喷望大佬指正. 自动打开DingDing可以由两种方法实现: 通过找出找出软件在电脑中 ...
- python自动登录教程_Python 实现自动登录+点击+滑动验证功能
需要用到的库有selenium,还需要安装Chrome浏览器驱动,具体如何安装我就不详述了 在这里我模拟了csdn的登录过程 ** 1**.首先打开网页,用户名+密码登录,然后定位用户名输入框,和密码 ...
- python 股票自动交易从零开始_Python股票自动交易从零开始
课程目录 1.Python股票自动交易从零开始~第一集~简介(Av24528809,P1).mp4 2.Python股票自动交易从零开始~第二集~安装工具包(Av24528809,P2).mp4 3. ...
最新文章
- 使用脚本规范化企业office程序注册名
- 学成在线--20.新增课程(最后完善)
- 计量科学大数据分级分类
- 智慧社区防控(测温)
- 【Java】java测试--词频统计 ----IO流操作
- 【Vue】npm run serve 和 npm run dev 有什么区别
- 算法导论 思考题6-3(Young氏矩阵)
- MATLAB 绕轴旋转图像函数 rotate 详解
- 格雷码(Gray Code)编码、实现及规律(附编码)
- Pytorch实现ResNet50网络结构,包含ResNet18,ResNet34,ResNet50,ResNet101,ResNet152
- STM32-TM1640-点数码管计数
- 【代码审计】YUNUCMS_v1.0.6 后台代码执行漏洞分析
- (转)高德百度坐标系转换方法
- 青海干部网络学院 自动学习网站
- Bing必应搜索引擎打开新标签默认页的修改
- 三毛的创作姿态与文体选择
- 本地网络出现了一个意外的情况,不能完成所有你在设置中所要求的更改
- 计算机视觉基础知识点(根据cs231n以及博客内容整理)
- lhgdialog的弹出框操作
- k8s——通过暴漏端口实现外部访问服务
热门文章
- Ubuntu16.04系统美化
- 确定性随机数发生器测试向量——DRBG-HMAC-SHA1
- party_bid_core总结
- 怎么用一个计算机控制两个屏幕,一台电脑控制多个led显示屏
- 单片机中的数据存储器ram
- 51单片机数据存储器扩展实验(汇编)
- WIN2000故障修复之故障恢复控制台篇
- java处理网络数据流
- vant 动态 粘性布局_使用 position:sticky 实现粘性布局
- 写一函数fac(n) 求n!。在主函数中输入a,b,c三个整数,实现求a!+b!+c!的值并输出。