From 1c0dfadcf1d0c2881cb73b38b5ae5cea64d198a7 Mon Sep 17 00:00:00 2001
From: ihmily <961532186@qq.com>
Date: Wed, 16 Aug 2023 15:53:27 +0800
Subject: [PATCH] Fix douyu and kuaishou live
---
README.md | 11 ++++-----
main.py | 10 ++++----
spider.py | 69 ++++++++++++++++++++++++++++++-------------------------
3 files changed, 47 insertions(+), 43 deletions(-)
diff --git a/README.md b/README.md
index 2e44d3c..0e048d9 100644
--- a/README.md
+++ b/README.md
@@ -50,6 +50,7 @@
- 注意事项④ 可以在URL_config.ini中的链接开头加上#,此时将不会录制该条链接对应的直播
- 注意事项⑤ 测试时有可能会出现在IDE如Pycharm中运行代码进行直播录制,录制出来的视频却无法正常播放的现象,如果遇到这个问题 最好在命令控制台DOS界面运行代码,录制出来的视频即可正常播放。
- 可使用 `pyinstaller -F或-D` 将代码打包成exe可执行文件 ,前提是已经安装了`pyinstaller`库
+- 当同时在录制多个直播时,最好线程数设置大一些,否则可能出现其中一个直播录制出错。当然设置的过大也没用,要同时考虑自身电脑的配置,如CPU内核数、网络带宽等限制。
@@ -114,34 +115,30 @@ GET https://hmily.vip/api/jx/live/convert.php?url=https://v.douyin.com/iQLgKSj/
## ⏳提交日志
+- 20230816
+ - 修复斗鱼直播(官方更新了字段)和快手直播录制出错的问题
+
- 20230814
- 新增B站直播录制
- 写了一个在线播放M3U8和FLV视频的网页源码,打开即可食用
-
- 20230812
- 新增YY直播录制
-
- 20230808
- 修复主播重新开播无法再次录制的问题
-
- 20230807
- 新增了斗鱼直播录制
- 修复显示录制完成之后会重新开始录制的问题
-
- 20230805
- 新增了虎牙直播录制,其暂时只能用flv视频流进行录制
- Web API 新增了快手和虎牙这两个平台的直播流解析(Tiktok要代理)
-
- 20230804
- 新增了快手直播录制,优化了部分代码
- 上传了一个自动化获取抖音直播间页面Cookie的代码,可以用于录制
-
- 20230803
- 通宵更新
- 新增了国际版抖音Tiktok的直播录制,去除冗余 简化了部分代码
-
- 20230724
- 新增了一个通过抖音直播间地址获取直播视频流链接的API接口,使用php写的 上传即可用
diff --git a/main.py b/main.py
index 79a1a09..478f07c 100644
--- a/main.py
+++ b/main.py
@@ -4,7 +4,7 @@
Author: Hmily
Github: https://github.com/ihmily
Date: 2023-07-17 23:52:05
-Update: 2023-08-14 17:13:00
+Update: 2023-08-16 14:54:17
Copyright (c) 2023 by Hmily, All Rights Reserved.
Function: Record live stream video.
"""
@@ -13,19 +13,17 @@ import random
import os
import sys
import urllib.parse
-import time
import configparser
import subprocess
import threading
import logging
import datetime
import shutil
-import hashlib
from spider import *
from web_rid import *
# 版本号
-version = "v1.0.4"
+version = "v1.0.5"
platforms = "抖音|Tiktok|快手|虎牙|斗鱼|YY|B站"
# --------------------------log日志-------------------------------------
@@ -382,7 +380,7 @@ def get_douyu_stream_url(json_data):
# TODO: 获取斗鱼直播源地址
data = [] # 定义一个返回数据列表
- room_info = json_data['pageContext']['pageProps']['room']['roomInfo']['roomInfo']
+ room_info = json_data.get('pageContext',json_data)['pageProps']['room']['roomInfo']['roomInfo']
anchor_name = room_info['nickname']
status = room_info['isLive']
@@ -1197,3 +1195,5 @@ while True:
# 总体循环3s
time.sleep(3)
+
+
diff --git a/spider.py b/spider.py
index 14c7ba5..7cd010f 100644
--- a/spider.py
+++ b/spider.py
@@ -4,20 +4,24 @@
Author: Hmily
Github:https://github.com/ihmily
Date: 2023-07-15 23:15:00
-Update: 2023-08-14 01:42:23
+Update: 2023-08-16 14:07:30
Copyright (c) 2023 by Hmily, All Rights Reserved.
Function: Get live stream data.
"""
+
+
import hashlib
import time
-import urllib
import urllib.parse
import requests
import re
import json
# pip install PyExecJS
import execjs
+import urllib.request
+no_proxy_handler = urllib.request.ProxyHandler({})
+opener = urllib.request.build_opener(no_proxy_handler)
# 直接选择从网页HTML中获取直播间数据
def get_douyin_stream_data(url, cookies):
@@ -31,8 +35,8 @@ def get_douyin_stream_data(url, cookies):
# response = requests.get(url, headers=headers)
# html_str = response.text
# 使用更底层的urllib内置库,防止开启代理时导致的抖音录制SSL 443报错
- request = urllib.request.Request(url, headers=headers)
- response = urllib.request.urlopen(request, timeout=10)
+ req = urllib.request.Request(url, headers=headers)
+ response = opener.open(req,timeout=10)
html_str = response.read().decode('utf-8')
quote_json_str = re.search('