|
@@ -33,7 +33,7 @@ class CarryViode:
|
|
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) '
|
|
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) '
|
|
'Chrome/127.0.0.0 Safari/537.36',
|
|
'Chrome/127.0.0.0 Safari/537.36',
|
|
}
|
|
}
|
|
- response = requests.request(url=url, method='GET', headers=headers, allow_redirects=False)
|
|
|
|
|
|
+ response = requests.request(url=url, method='GET', headers=headers, allow_redirects=False, timeout=30)
|
|
location = response.headers.get('Location', None)
|
|
location = response.headers.get('Location', None)
|
|
video_id = re.search(r'/video/(\d+)/?', location.split('?')[0] if location else url).group(1)
|
|
video_id = re.search(r'/video/(\d+)/?', location.split('?')[0] if location else url).group(1)
|
|
else:
|
|
else:
|
|
@@ -73,7 +73,7 @@ class CarryViode:
|
|
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) '
|
|
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) '
|
|
'Chrome/127.0.0.0 Safari/537.36',
|
|
'Chrome/127.0.0.0 Safari/537.36',
|
|
}
|
|
}
|
|
- response = requests.request(url=url, method='GET', headers=headers, allow_redirects=False)
|
|
|
|
|
|
+ response = requests.request(url=url, method='GET', headers=headers, allow_redirects=False, timeout= 30)
|
|
location = response.headers.get('Location', None)
|
|
location = response.headers.get('Location', None)
|
|
video_id = re.search(r'/(f|photo|short-video|long-video)/(.*)/?',
|
|
video_id = re.search(r'/(f|photo|short-video|long-video)/(.*)/?',
|
|
location.split('?')[0] if location else url).group(2)
|
|
location.split('?')[0] if location else url).group(2)
|
|
@@ -183,41 +183,46 @@ class CarryViode:
|
|
pass
|
|
pass
|
|
AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
|
|
AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
|
|
"改造成功", "1000", str(data), str(pq_list))
|
|
"改造成功", "1000", str(data), str(pq_list))
|
|
|
|
+ return
|
|
|
|
|
|
def main(self, data, REDIS_NAME, file_path):
|
|
def main(self, data, REDIS_NAME, file_path):
|
|
tag_transport_channel = None
|
|
tag_transport_channel = None
|
|
-
|
|
|
|
- url = data['video_url']
|
|
|
|
- if "&vid=" not in url and data['tag_transport_channel'] != "抖音":
|
|
|
|
- msg = html.unescape(url).split('?')[0]
|
|
|
|
- pattern = re.search(r'https?://[^\s<>"\'\u4e00-\u9fff]+', msg)
|
|
|
|
- if not pattern:
|
|
|
|
- in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
|
|
|
+ try:
|
|
|
|
+ url = data['video_url']
|
|
|
|
+ if "&vid=" not in url and data['tag_transport_channel'] != "抖音":
|
|
|
|
+ msg = html.unescape(url).split('?')[0]
|
|
|
|
+ pattern = re.search(r'https?://[^\s<>"\'\u4e00-\u9fff]+', msg)
|
|
|
|
+ if not pattern:
|
|
|
|
+ in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
|
|
+ return
|
|
|
|
+ url = pattern.group()
|
|
|
|
+ host = urlparse(url).netloc
|
|
|
|
+ if host in ['v.douyin.com', 'www.douyin.com', 'www.iesdouyin.com']:
|
|
|
|
+ tag_transport_channel = "抖音"
|
|
|
|
+ logger.info(f"[+] {url}开始获取抖音视频链接")
|
|
|
|
+ url, original_title = self.get_text_dy_video(url=url)
|
|
|
|
+ elif host in ['v.kuaishou.com', 'www.kuaishou.com', 'v.m.chenzhongtech.com', 'creater.eozatvmq.com']:
|
|
|
|
+ tag_transport_channel = "快手"
|
|
|
|
+ logger.info(f"[+] {url}开始获取快手视频链接")
|
|
|
|
+ url, original_title = self.get_text_ks_video(url=url)
|
|
|
|
+ else:
|
|
|
|
+ AliyunLogger.logging(data["name"], "效率工具", "", data["video_url"], "扫描到一条视频",
|
|
|
|
+ "2001", str(data))
|
|
|
|
+ logger.error(f"[+] {url}该链接不是抖/快 不做处理")
|
|
|
|
+ AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
|
|
|
|
+ "不是抖/快不做处理", "1001", str(data))
|
|
|
|
+ text = (
|
|
|
|
+ f"**负责人**: {data['name']}\n"
|
|
|
|
+ f"**内容**: {data}\n"
|
|
|
|
+ f"**失败信息**: 该链接不是抖/快 不做处理\n"
|
|
|
|
+ )
|
|
|
|
+ Feishu.finish_bot(text,
|
|
|
|
+ "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
|
|
|
|
+ "【 搬运&改造效率工具失败通知 】")
|
|
return
|
|
return
|
|
- url = pattern.group()
|
|
|
|
- host = urlparse(url).netloc
|
|
|
|
- if host in ['v.douyin.com', 'www.douyin.com', 'www.iesdouyin.com']:
|
|
|
|
- tag_transport_channel = "抖音"
|
|
|
|
- logger.info(f"[+] {url}开始获取抖音视频链接")
|
|
|
|
- url, original_title = self.get_text_dy_video(url=url)
|
|
|
|
- elif host in ['v.kuaishou.com', 'www.kuaishou.com', 'v.m.chenzhongtech.com', 'creater.eozatvmq.com']:
|
|
|
|
- tag_transport_channel = "快手"
|
|
|
|
- logger.info(f"[+] {url}开始获取快手视频链接")
|
|
|
|
- url, original_title = self.get_text_ks_video(url=url)
|
|
|
|
- else:
|
|
|
|
- AliyunLogger.logging(data["name"], "效率工具", "", data["video_url"], "扫描到一条视频",
|
|
|
|
- "2001", str(data))
|
|
|
|
- logger.error(f"[+] {url}该链接不是抖/快 不做处理")
|
|
|
|
- AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
|
|
|
|
- "不是抖/快不做处理", "1001", str(data))
|
|
|
|
- text = (
|
|
|
|
- f"**负责人**: {data['name']}\n"
|
|
|
|
- f"**内容**: {data}\n"
|
|
|
|
- f"**失败信息**: 该链接不是抖/快 不做处理\n"
|
|
|
|
- )
|
|
|
|
- Feishu.finish_bot(text,
|
|
|
|
- "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
|
|
|
|
- "【 搬运&改造效率工具失败通知 】")
|
|
|
|
|
|
+ except Exception as e:
|
|
|
|
+ logger.info(f"[+] 获取视频链接异常{e}")
|
|
|
|
+ in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
return
|
|
return
|
|
AliyunLogger.logging(data["name"],"效率工具", tag_transport_channel, data["video_url"], "扫描到一条视频", "2001", str(data))
|
|
AliyunLogger.logging(data["name"],"效率工具", tag_transport_channel, data["video_url"], "扫描到一条视频", "2001", str(data))
|
|
AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"], "符合规则等待改造", "2004", str(data))
|
|
AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"], "符合规则等待改造", "2004", str(data))
|
|
@@ -353,6 +358,7 @@ class CarryViode:
|
|
pw_url = TTS.get_pw_zm(pw_srt_text, voice)
|
|
pw_url = TTS.get_pw_zm(pw_srt_text, voice)
|
|
if not pw_url:
|
|
if not pw_url:
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据片尾获取失败")
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据片尾获取失败")
|
|
|
|
+ data["transform_rule"] = "仅改造"
|
|
in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
AliyunLogger.logging(data["name"],"效率工具", tag_transport_channel, data["video_url"],
|
|
AliyunLogger.logging(data["name"],"效率工具", tag_transport_channel, data["video_url"],
|
|
"改造失败,片尾获取失败", "3001", str(data))
|
|
"改造失败,片尾获取失败", "3001", str(data))
|
|
@@ -369,6 +375,7 @@ class CarryViode:
|
|
pw_srt = TTS.getSrt(pw_url)
|
|
pw_srt = TTS.getSrt(pw_url)
|
|
pw_mp3_path = TTS.download_mp3(pw_url, file_path)
|
|
pw_mp3_path = TTS.download_mp3(pw_url, file_path)
|
|
if not pw_mp3_path:
|
|
if not pw_mp3_path:
|
|
|
|
+ data["transform_rule"] = "仅改造"
|
|
in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据片尾音频下载失败")
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据片尾音频下载失败")
|
|
AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
|
|
AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
|
|
@@ -385,6 +392,7 @@ class CarryViode:
|
|
logger.info(f"[+] {REDIS_NAME}的{data}数据片尾音频下载成功")
|
|
logger.info(f"[+] {REDIS_NAME}的{data}数据片尾音频下载成功")
|
|
jpg_path = FFmpeg.video_png(video_path, file_path) # 生成视频最后一帧jpg
|
|
jpg_path = FFmpeg.video_png(video_path, file_path) # 生成视频最后一帧jpg
|
|
if not os.path.exists(jpg_path) or os.path.getsize(jpg_path) == 0:
|
|
if not os.path.exists(jpg_path) or os.path.getsize(jpg_path) == 0:
|
|
|
|
+ data["transform_rule"] = "仅改造"
|
|
in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据片尾获取最后一帧失败")
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据片尾获取最后一帧失败")
|
|
AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
|
|
AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
|
|
@@ -401,6 +409,7 @@ class CarryViode:
|
|
logger.info(f"[+] {REDIS_NAME}的{data}数据片尾获取最后一帧成功")
|
|
logger.info(f"[+] {REDIS_NAME}的{data}数据片尾获取最后一帧成功")
|
|
pw_path = FFmpeg.pw_video(jpg_path, file_path, pw_mp3_path, pw_srt) # 生成片尾视频
|
|
pw_path = FFmpeg.pw_video(jpg_path, file_path, pw_mp3_path, pw_srt) # 生成片尾视频
|
|
if not os.path.exists(pw_path) or os.path.getsize(pw_path) == 0:
|
|
if not os.path.exists(pw_path) or os.path.getsize(pw_path) == 0:
|
|
|
|
+ data["transform_rule"] = "仅改造"
|
|
in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据片尾拼接失败")
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据片尾拼接失败")
|
|
AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
|
|
AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
|
|
@@ -418,6 +427,7 @@ class CarryViode:
|
|
video_path = FFmpeg.h_b_video(video_path, pw_path, file_path)
|
|
video_path = FFmpeg.h_b_video(video_path, pw_path, file_path)
|
|
video_path = FFmpeg.single_video(video_path, file_path, data["video_share"])
|
|
video_path = FFmpeg.single_video(video_path, file_path, data["video_share"])
|
|
if not os.path.exists(video_path) or os.path.getsize(video_path) == 0:
|
|
if not os.path.exists(video_path) or os.path.getsize(video_path) == 0:
|
|
|
|
+ data["transform_rule"] = "仅改造"
|
|
in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据添加片中字幕失败")
|
|
logger.error(f"[+] {REDIS_NAME}的{data}数据添加片中字幕失败")
|
|
AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
|
|
AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
|
|
@@ -460,6 +470,7 @@ class CarryViode:
|
|
"搬运改造"
|
|
"搬运改造"
|
|
]))
|
|
]))
|
|
self.insert_pq(REDIS_NAME, data, oss_object_key, title, tags, tag_transport_channel, channel_mark)
|
|
self.insert_pq(REDIS_NAME, data, oss_object_key, title, tags, tag_transport_channel, channel_mark)
|
|
|
|
+ return
|
|
|
|
|
|
|
|
|
|
|
|
|