|
@@ -0,0 +1,139 @@
|
|
|
|
+"""
|
|
|
|
+@author: luojunhui
|
|
|
|
+"""
|
|
|
|
+import time
|
|
|
|
+import json
|
|
|
|
+import random
|
|
|
|
+import hashlib
|
|
|
|
+from datetime import datetime, timedelta
|
|
|
|
+
|
|
|
|
+import uuid
|
|
|
|
+import requests
|
|
|
|
+import urllib.parse
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def request_for_info(video_id):
|
|
|
|
+ """
|
|
|
|
+ 请求数据
|
|
|
|
+ :param video_id:
|
|
|
|
+ :return:
|
|
|
|
+ """
|
|
|
|
+ url = "https://longvideoapi.piaoquantv.com/longvideoapi/openapi/video/batchSelectVideoInfo"
|
|
|
|
+ data = {
|
|
|
|
+ "videoIdList": [video_id]
|
|
|
|
+ }
|
|
|
|
+ header = {
|
|
|
|
+ "Content-Type": "application/json",
|
|
|
|
+ }
|
|
|
|
+ response = requests.post(url, headers=header, data=json.dumps(data))
|
|
|
|
+ return response.json()
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def get_info_lists(vid_list):
|
|
|
|
+ """
|
|
|
|
+ 获取视频list
|
|
|
|
+ :param vid_list:
|
|
|
|
+ :return:
|
|
|
|
+ """
|
|
|
|
+ url = "https://longvideoapi.piaoquantv.com/longvideoapi/openapi/video/batchSelectVideoInfo"
|
|
|
|
+ data = {
|
|
|
|
+ "videoIdList": vid_list
|
|
|
|
+ }
|
|
|
|
+ header = {
|
|
|
|
+ "Content-Type": "application/json",
|
|
|
|
+ }
|
|
|
|
+ response = requests.post(url, headers=header, data=json.dumps(data))
|
|
|
|
+ return response.json()
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def generate_daily_strings(start_date, end_date):
|
|
|
|
+ """
|
|
|
|
+ Generate daily date_str
|
|
|
|
+ :param start_date:
|
|
|
|
+ :param end_date:
|
|
|
|
+ :return:
|
|
|
|
+ """
|
|
|
|
+ start = datetime.strptime(start_date, "%Y%m%d")
|
|
|
|
+ end = datetime.strptime(end_date, "%Y%m%d")
|
|
|
|
+ current = start
|
|
|
|
+ date_strings = []
|
|
|
|
+ while current <= end:
|
|
|
|
+ date_strings.append(current.strftime("%Y%m%d"))
|
|
|
|
+ current += timedelta(days=1)
|
|
|
|
+ return date_strings
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def whisper(video_id):
|
|
|
|
+ """
|
|
|
|
+ input video_id, output video_text
|
|
|
|
+ :param video_id:
|
|
|
|
+ :return:
|
|
|
|
+ """
|
|
|
|
+ url = "http://61.48.133.26:5999/video_to_text"
|
|
|
|
+ body = {
|
|
|
|
+ "video_id": video_id
|
|
|
|
+ }
|
|
|
|
+ header = {
|
|
|
|
+ "Content-Type": "application/json",
|
|
|
|
+ }
|
|
|
|
+ response = requests.post(
|
|
|
|
+ url=url,
|
|
|
|
+ json=body,
|
|
|
|
+ headers=header
|
|
|
|
+ )
|
|
|
|
+ return response.json()
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def hash_title(title):
|
|
|
|
+ """
|
|
|
|
+ hash map
|
|
|
|
+ :param title:
|
|
|
|
+ :return:
|
|
|
|
+ """
|
|
|
|
+ # 创建md5哈希对象
|
|
|
|
+ hash_object = hashlib.md5()
|
|
|
|
+
|
|
|
|
+ # 对标题进行编码
|
|
|
|
+ title_bytes = title.encode('utf-8')
|
|
|
|
+
|
|
|
|
+ # 更新哈希对象
|
|
|
|
+ hash_object.update(title_bytes)
|
|
|
|
+
|
|
|
|
+ # 获取十六进制形式的哈希值
|
|
|
|
+ hash_hex = hash_object.hexdigest()
|
|
|
|
+
|
|
|
|
+ return hash_hex
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def create_gzh_path(video_id, shared_uid):
|
|
|
|
+ """
|
|
|
|
+ :param video_id: 视频 id
|
|
|
|
+ :param shared_uid: 分享 id
|
|
|
|
+ """
|
|
|
|
+
|
|
|
|
+ def generate_source_id():
|
|
|
|
+ """
|
|
|
|
+ generate_source_id
|
|
|
|
+ :return:
|
|
|
|
+ """
|
|
|
|
+ timestamp = str(int(time.time() * 1000))
|
|
|
|
+ random_str = str(random.randint(1000, 9999))
|
|
|
|
+ hash_input = f"{timestamp}-{random_str}"
|
|
|
|
+ return hashlib.md5(hash_input.encode()).hexdigest()
|
|
|
|
+
|
|
|
|
+ root_share_id = str(uuid.uuid4())
|
|
|
|
+ source_id = "video_to_articles" + generate_source_id()
|
|
|
|
+ url = f"pages/user-videos?id={video_id}&su={shared_uid}&fromGzh=1&rootShareId={root_share_id}&shareId={root_share_id}&rootSourceId={source_id}"
|
|
|
|
+ # 自动把 root_share_id 加入到白名单
|
|
|
|
+ # auto_white(root_share_id)
|
|
|
|
+ return root_share_id, source_id, f"pages/category?jumpPage={urllib.parse.quote(url, safe='')}"
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def chunks(chunk_list, chunk_size):
|
|
|
|
+ """
|
|
|
|
+ 分页
|
|
|
|
+ :param chunk_list:
|
|
|
|
+ :param chunk_size:
|
|
|
|
+ """
|
|
|
|
+ for i in range(0, len(chunk_list), chunk_size):
|
|
|
|
+ yield chunk_list[i: i + chunk_size]
|