zhannei_author.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. # -*- coding: utf-8 -*-
  2. # @Time: 2024/01/18
  3. import datetime
  4. import os
  5. import random
  6. import sys
  7. import time
  8. from datetime import datetime
  9. import requests
  10. import json
  11. import urllib3
  12. sys.path.append(os.getcwd())
  13. from common.aliyun_oss_uploading import Oss
  14. from common.common import Common
  15. from common.material import Material
  16. from common.feishu import Feishu
  17. from common.db import MysqlHelper
  18. from requests.adapters import HTTPAdapter
  19. class ZhanNeiAuthor():
  20. """
  21. oss视频地址 存入数据库
  22. """
  23. @classmethod
  24. def insert_videoUrl(cls, video_id, account_id, oss_object_key, mark):
  25. current_time = datetime.now()
  26. formatted_time = current_time.strftime("%Y-%m-%d %H:%M")
  27. insert_sql = f"""INSERT INTO agc_video_url (video_id, account_id, oss_object_key, time, status, mark) values ("{video_id}", "{account_id}", "{oss_object_key}", "{formatted_time}", 1, "{mark}")"""
  28. MysqlHelper.update_values(
  29. sql=insert_sql,
  30. env="prod",
  31. machine="",
  32. )
  33. """
  34. 获取快手用户主页id
  35. """
  36. @classmethod
  37. def get_zhannei_videoUserId(cls, mark):
  38. select_user_sql = f"""select user_id, channel from agc_channel_data where mark = '{mark}' and channel = '站内' ORDER BY id DESC;"""
  39. user_list = MysqlHelper.get_values(select_user_sql, "prod")
  40. return user_list
  41. """
  42. 查询该video_id是否在数据库存在
  43. """
  44. @classmethod
  45. def select_videoUrl_id(cls, video_id, mark):
  46. select_user_sql = f"""select video_id from agc_video_url where video_id='{video_id}' and mark='{mark}' ;"""
  47. user_list = MysqlHelper.get_values(select_user_sql, "prod")
  48. if user_list:
  49. return True
  50. else:
  51. return False
  52. """站内读取数据 将数据存储到oss上"""
  53. @classmethod
  54. def get_zhannei_videoList(cls, data):
  55. try:
  56. mark = data['mark']
  57. mark_name = data['mark_name']
  58. feishu_id = data['feishu_id']
  59. channel_id = data['channel']
  60. channel = "站内"
  61. user_list = Material.insert_user(feishu_id, channel_id, mark, channel)
  62. if len(user_list) == 0:
  63. return
  64. for account_id in user_list:
  65. id = cls.select_videoUrl_id(account_id, mark)
  66. if id:
  67. Common.logger("zhannei").info(
  68. f"重复视频不在抓取该用户,用户主页id:{account_id}")
  69. continue
  70. time.sleep(5)
  71. Common.logger("zhannei").info(f"用户主页ID:{account_id}")
  72. cookie = Material.get_houtai_cookie()
  73. url = f"https://admin.piaoquantv.com/manager/video/detail/{account_id}"
  74. payload = {}
  75. headers = {
  76. 'authority': 'admin.piaoquantv.com',
  77. 'accept': 'application/json, text/plain, */*',
  78. 'accept-language': 'zh-CN,zh;q=0.9',
  79. 'cache-control': 'no-cache',
  80. 'cookie': cookie,
  81. 'pragma': 'no-cache',
  82. 'referer': f'https://admin.piaoquantv.com/cms/post-detail/{account_id}/detail',
  83. 'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
  84. 'sec-ch-ua-mobile': '?0',
  85. 'sec-ch-ua-platform': '"macOS"',
  86. 'sec-fetch-dest': 'empty',
  87. 'sec-fetch-mode': 'cors',
  88. 'sec-fetch-site': 'same-origin',
  89. 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
  90. }
  91. response = requests.request("GET", url, headers=headers, data=payload)
  92. data = response.json()
  93. code = data["code"]
  94. if code != 0:
  95. if "-" in mark:
  96. mark1 = mark.split("-")[0]
  97. Common.logger("video").info(
  98. f"未登录,请更换cookie,{data}")
  99. Feishu.bot('recommend', '管理后台', '管理后台cookie失效,请及时更换~', mark1, mark_name)
  100. return
  101. video_url = data["content"]["transedVideoPath"]
  102. channel_name = mark+'/zhannei'
  103. oss_object_key = Oss.video_sync_upload_oss(video_url, account_id, account_id, channel_name)
  104. status = oss_object_key.get("status")
  105. # 发送 oss
  106. oss_object_key = oss_object_key.get("oss_object_key")
  107. Common.logger("zhannei").info(f"站内视频链接oss发送成功,oss地址:{oss_object_key}")
  108. if status == 200:
  109. cls.insert_videoUrl(account_id, account_id, oss_object_key, mark)
  110. Common.logger("zhannei").info(f"视频地址插入数据库成功,视频id:{account_id},用户主页id:{account_id},视频储存地址:{oss_object_key}")
  111. except Exception as e:
  112. Common.logger("zhannei").warning(f"抓取异常:{e}\n")
  113. return