Jelajahi Sumber

2024-05-13
多平台搜索上线(微信, 百度, 西瓜)
弃用 search_keys, theme
搜索结果过pq敏感词策略

罗俊辉 1 tahun lalu
induk
melakukan
e3017fdb3f

+ 44 - 30
applications/routes.py

@@ -10,6 +10,7 @@ from quart import Blueprint, jsonify, request
 from applications.functions.log import logging
 from applications.schedule import ProcessParams, search_videos
 from applications.functions.common import KimiServer, MySQLServer
+from applications.schedule.main_schedule import AskForInfo
 
 my_blueprint = Blueprint('kimi', __name__)
 
@@ -46,36 +47,36 @@ async def search_videos_from_the_web():
         function="search_videos_from_the_web",
         trace_id=trace_id
     )
-    # try:
-    title_p = os.path.join(os.getcwd(), 'applications', 'static', "titles", "{}.json".format(title))
-    if os.path.exists(title_p):
-        logging(
-            code="2001",
-            info="该标题已经被 kimi 处理过,跳过请求 kimi 操作--- {}".format(title),
-            function="search_videos_from_the_web",
-            trace_id=trace_id
+    try:
+        title_p = os.path.join(os.getcwd(), 'applications', 'static', "titles", "{}.json".format(title))
+        if os.path.exists(title_p):
+            logging(
+                code="2001",
+                info="该标题已经被 kimi 处理过,跳过请求 kimi 操作--- {}".format(title),
+                function="search_videos_from_the_web",
+                trace_id=trace_id
+            )
+        else:
+            KimiServer().ask_kimi_and_save_to_local((title, trace_id, title_p))
+        await asyncio.sleep(1)
+        kimi_title = KimiServer().kimi_title(title)
+        search_videos(
+            title=title,
+            video_path=title_p,
+            trace_id=trace_id,
+            gh_id=gh_id,
         )
-    else:
-        KimiServer().ask_kimi_and_save_to_local((title, trace_id, title_p))
-    await asyncio.sleep(1)
-    kimi_title = KimiServer().kimi_title(title)
-    search_videos(
-        title=title,
-        video_path=title_p,
-        trace_id=trace_id,
-        gh_id=gh_id,
-    )
-    res = {
-        "trace_id": trace_id,
-        "code": 0,
-        "kimi_title": kimi_title
-    }
-    # except Exception as e:
-    #     res = {
-    #         "trace_id": trace_id,
-    #         "code": 1,
-    #         "message": str(e)
-    #     }
+        res = {
+            "trace_id": trace_id,
+            "code": 0,
+            "kimi_title": kimi_title
+        }
+    except Exception as e:
+        res = {
+            "trace_id": trace_id,
+            "code": 1,
+            "message": str(e)
+        }
     return jsonify(res)
 
 
@@ -98,7 +99,7 @@ async def find_in_mysql():
     return jsonify(res)
 
 
-@my_blueprint.route('/title_to_video', methods=['POST'])
+@my_blueprint.route('/find_video', methods=['POST'])
 async def post_data():
     """
     请求接口代码
@@ -115,3 +116,16 @@ async def post_data():
     p = ProcessParams(t_id=trace_id)
     processed_data = await p.deal(data)
     return jsonify(processed_data)
+
+
+@my_blueprint.route('/title_to_video', methods=['POST'])
+async def delay_response():
+    """
+    main
+    :return:
+    """
+    # 从请求体中解析 JSON 数据
+    data = await request.get_json()
+    A = AskForInfo(data)
+    res = A.schedule()
+    return jsonify(res)

+ 87 - 0
applications/schedule/main_schedule.py

@@ -0,0 +1,87 @@
+"""
+@author: luojunhui
+"""
+# encoding: utf-8
+"""
+@author: luojunhui
+"""
+import time
+import requests
+
+
+class AskForInfo:
+    """
+    Ask user to enter their info
+    """
+    def __init__(self, params):
+        self.params = params
+        self.base_url = "http://61.48.133.26:8111"
+
+    def search_request(self):
+        """
+        请求下载外部视频
+        :return:
+        """
+        url = "http://{}/title_to_search".format(self.base_url)
+        body = {
+            "title": self.params["title"],
+            "ghId": self.params["ghId"]
+        }
+        res = requests.post(url, json=body, timeout=120)
+        return res.json()
+
+    def check_out_videos(self, trace_id):
+        """
+        :return:
+        """
+        url = "http://{}/out_videos".format(self.base_url)
+        body = {
+            "traceId": trace_id
+        }
+        res = requests.post(url, json=body, timeout=120)
+        return res.json()
+
+    def ask_for_info(self, res_obj, kt):
+        """
+        :param kt:
+        :param res_obj:
+        :return:
+        """
+        traceId = res_obj["trace_id"]
+        video_list = res_obj["video_list"]
+        url = "http://{}/find_video".format(self.base_url)
+        body = {
+            "accountName": self.params['accountName'],
+            "content": self.params['content'],
+            "cover": self.params['cover'],
+            "ghId": self.params['ghId'],
+            "title": self.params['title'],
+            "traceId": traceId,
+            "kimi_title": kt,
+            "videoList": video_list
+        }
+        res = requests.post(url, json=body, timeout=120)
+        return res.json()
+
+    def schedule(self):
+        """
+
+        :return:
+        """
+        res = self.search_request()
+        if res['code'] == 0:
+            trace_id = res["trace_id"]
+            kimi_title = res['kimi_title']
+            res_obj = self.check_out_videos(trace_id=trace_id)
+            time.sleep(3)
+            final_obj = self.ask_for_info(res_obj=res_obj, kt=kimi_title)
+            return final_obj
+        elif res['code'] == 1:
+            return {
+                "Error": res['message']
+            }
+        else:
+            return {
+                "Error": "Unknown Error"
+            }
+

+ 3 - 19
applications/search/hksp_search.py

@@ -6,23 +6,11 @@ import requests
 import urllib.parse
 import time
 import hashlib
+from fake_useragent import FakeUserAgent
 
 from applications.functions.common import MySQLServer
 
 
-def tunnel_proxies():
-    # 隧道域名:端口号
-    tunnel = "q796.kdltps.com:15818"
-    # 用户名密码方式
-    username = "t17772369458618"
-    password = "5zqcjkmy"
-    proxies = {
-        "http": "http://%(user)s:%(pwd)s@%(proxy)s/" % {"user": username, "pwd": password, "proxy": tunnel},
-        "https": "http://%(user)s:%(pwd)s@%(proxy)s/" % {"user": username, "pwd": password, "proxy": tunnel}
-    }
-    return proxies
-
-
 def get_video_detail(video_id):
     """
     获取好看视频的视频链接
@@ -47,14 +35,13 @@ def get_video_detail(video_id):
         'Connection': 'keep-alive',
         'Content-Type': 'application/x-www-form-urlencoded',
         'Referer': 'https://haokan.baidu.com',
-        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
+        'User-Agent': FakeUserAgent.chrome,
     }
     response = requests.request(
         "GET",
         url,
         headers=headers,
-        params=params,
-        proxies=tunnel_proxies()
+        params=params
     ).json()
     return response['data']['apiData']['curVideoMeta']
 
@@ -102,8 +89,6 @@ def hksp_search(key):
     }
     # 发送GET请求
     response = requests.get(url, headers=headers, params=params).json()
-    print("baidu search")
-    print(response)
     try:
         data_list = response['data']['list']
         L = []
@@ -120,4 +105,3 @@ def hksp_search(key):
         return L
     except:
         return []
-