pq.py 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. import os
  2. import random
  3. import sys
  4. import time
  5. import json
  6. import requests
  7. from urllib.parse import urlencode
  8. sys.path.append(os.getcwd())
  9. from common import Common, Feishu
  10. class PQ():
  11. """
  12. 获取封面
  13. """
  14. @classmethod
  15. def get_cover(cls, uid):
  16. time.sleep(1)
  17. url = "https://admin.piaoquantv.com/manager/video/multiCover/listV2"
  18. payload = json.dumps({
  19. "videoId": uid,
  20. "range": "2h"
  21. })
  22. headers = {
  23. 'accept': 'application/json',
  24. 'accept-language': 'zh-CN,zh;q=0.9',
  25. 'cache-control': 'no-cache',
  26. 'content-type': 'application/json',
  27. 'cookie': 'SESSION=YjU3MzgwNTMtM2QyYi00YjljLWI3YWUtZTBjNWYwMGQzYWNl',
  28. 'origin': 'https://admin.piaoquantv.com',
  29. 'pragma': 'no-cache',
  30. 'priority': 'u=1, i',
  31. 'sec-ch-ua': '"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
  32. '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'
  33. }
  34. response = requests.request("POST", url, headers=headers, data=payload)
  35. data = response.json()
  36. content = data["content"]
  37. if len(content) == 1:
  38. return content[0]["coverUrl"]
  39. max_share_count = 0
  40. selected_cover_url = ""
  41. for item in content:
  42. share_count = item.get("shareWeight")
  43. if share_count is not None and share_count > max_share_count:
  44. max_share_count = share_count
  45. selected_cover_url = item["coverUrl"]
  46. elif share_count == max_share_count and item["createUser"] == "用户":
  47. selected_cover_url = item["coverUrl"]
  48. return selected_cover_url
  49. """
  50. 获取标题
  51. """
  52. @classmethod
  53. def get_title(cls, uid):
  54. url = "https://admin.piaoquantv.com/manager/video/multiTitleV2/listV2"
  55. payload = json.dumps({
  56. "videoId": uid,
  57. "range": "4h"
  58. })
  59. headers = {
  60. 'accept': 'application/json',
  61. 'accept-language': 'zh-CN,zh;q=0.9',
  62. 'cache-control': 'no-cache',
  63. 'content-type': 'application/json',
  64. 'cookie': 'SESSION=YjU3MzgwNTMtM2QyYi00YjljLWI3YWUtZTBjNWYwMGQzYWNl',
  65. 'origin': 'https://admin.piaoquantv.com',
  66. 'pragma': 'no-cache',
  67. 'priority': 'u=1, i',
  68. 'sec-ch-ua': '"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
  69. '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'
  70. }
  71. response = requests.request("POST", url, headers=headers, data=payload)
  72. data = response.json()
  73. content = data["content"]
  74. if len(content) == 1:
  75. return content[0]["title"]
  76. max_share_count = 0
  77. selected_title = ""
  78. for item in content:
  79. share_count = item.get("shareWeight")
  80. if share_count is not None and share_count > max_share_count:
  81. max_share_count = share_count
  82. selected_title = item["title"]
  83. elif share_count == max_share_count and item["createUser"] == "用户":
  84. selected_title = item["title"]
  85. return selected_title
  86. """
  87. 新生成视频上传到对应账号下
  88. """
  89. @classmethod
  90. def insert_piaoquantv(cls, oss_object_key, audio_title, pq_ids_list, cover, uid):
  91. if audio_title == '' or None == audio_title:
  92. title = cls.get_title(uid)
  93. else:
  94. if '/' in audio_title:
  95. new_titles = audio_title.split('/')
  96. else:
  97. new_titles = [audio_title]
  98. title = random.choice(new_titles)
  99. cover_url = ''
  100. if None == cover or cover == '':
  101. cover_url = cls.get_cover(uid)
  102. pq_id_list = random.choice(pq_ids_list)
  103. url = "https://vlogapi.piaoquantv.com/longvideoapi/crawler/video/send"
  104. headers = {
  105. 'User-Agent': 'PQSpeed/486 CFNetwork/1410.1 Darwin/22.6.0',
  106. 'cookie': 'JSESSIONID=4DEA2B5173BB9A9E82DB772C0ACDBC9F; JSESSIONID=D02C334150025222A0B824A98B539B78',
  107. 'referer': 'http://appspeed.piaoquantv.com',
  108. 'token': '524a8bc871dbb0f4d4717895083172ab37c02d2f',
  109. 'accept-language': 'zh-CN,zh-Hans;q=0.9',
  110. 'Content-Type': 'application/x-www-form-urlencoded'
  111. }
  112. payload = {
  113. 'coverImgPath': cover_url,
  114. 'deviceToken': '9ef064f2f7869b3fd67d6141f8a899175dddc91240971172f1f2a662ef891408',
  115. 'fileExtensions': 'MP4',
  116. 'loginUid': pq_id_list,
  117. 'networkType': 'Wi-Fi',
  118. 'platform': 'iOS',
  119. 'requestId': 'fb972cbd4f390afcfd3da1869cd7d001',
  120. 'sessionId': '362290597725ce1fa870d7be4f46dcc2',
  121. 'subSessionId': '362290597725ce1fa870d7be4f46dcc2',
  122. 'title': title,
  123. 'token': '524a8bc871dbb0f4d4717895083172ab37c02d2f',
  124. 'uid': pq_id_list,
  125. 'versionCode': '486',
  126. 'versionName': '3.4.12',
  127. 'videoFromScene': '1',
  128. 'videoPath': oss_object_key,
  129. 'viewStatus': '1'
  130. }
  131. encoded_payload = urlencode(payload)
  132. response = requests.request("POST", url, headers=headers, data=encoded_payload)
  133. data = response.json()
  134. code = data["code"]
  135. if code == 0:
  136. new_video_id = data["data"]["id"]
  137. return new_video_id, title
  138. else:
  139. return None, None
  140. """
  141. 获取视频链接
  142. """
  143. @classmethod
  144. def get_audio_url(cls, uid):
  145. for i in range(3):
  146. url = f"https://admin.piaoquantv.com/manager/video/detail/{uid}"
  147. payload = {}
  148. headers = {
  149. 'authority': 'admin.piaoquantv.com',
  150. 'accept': 'application/json, text/plain, */*',
  151. 'accept-language': 'zh-CN,zh;q=0.9',
  152. 'cache-control': 'no-cache',
  153. 'cookie': 'SESSION=YjU3MzgwNTMtM2QyYi00YjljLWI3YWUtZTBjNWYwMGQzYWNl',
  154. 'pragma': 'no-cache',
  155. 'referer': f'https://admin.piaoquantv.com/cms/post-detail/{uid}/detail',
  156. 'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
  157. 'sec-ch-ua-mobile': '?0',
  158. 'sec-ch-ua-platform': '"macOS"',
  159. 'sec-fetch-dest': 'empty',
  160. 'sec-fetch-mode': 'cors',
  161. 'sec-fetch-site': 'same-origin',
  162. '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'
  163. }
  164. response = requests.request("GET", url, headers=headers, data=payload)
  165. data = response.json()
  166. code = data["code"]
  167. if code != 0:
  168. continue
  169. audio_url = data["content"]["transedVideoPath"]
  170. return audio_url
  171. return ""