piaoquan.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import random
  2. import time
  3. import json
  4. import requests
  5. from urllib.parse import urlencode
  6. from common import Common
  7. from common.sql_help import sqlCollect
  8. class PQ:
  9. """
  10. 获取视频链接
  11. """
  12. @classmethod
  13. def get_pw_url(cls, user_id):
  14. url = f"https://admin.piaoquantv.com/manager/video/detail/{user_id}"
  15. payload = {}
  16. headers = {
  17. 'authority': 'admin.piaoquantv.com',
  18. 'accept': 'application/json, text/plain, */*',
  19. 'accept-language': 'zh-CN,zh;q=0.9',
  20. 'cache-control': 'no-cache',
  21. 'cookie': 'SESSION=YjU3MzgwNTMtM2QyYi00YjljLWI3YWUtZTBjNWYwMGQzYWNl',
  22. 'pragma': 'no-cache',
  23. 'referer': f'https://admin.piaoquantv.com/cms/post-detail/{user_id}/detail',
  24. 'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
  25. 'sec-ch-ua-mobile': '?0',
  26. 'sec-ch-ua-platform': '"macOS"',
  27. 'sec-fetch-dest': 'empty',
  28. 'sec-fetch-mode': 'cors',
  29. 'sec-fetch-site': 'same-origin',
  30. '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'
  31. }
  32. response = requests.request("GET", url, headers=headers, data=payload)
  33. data = response.json()
  34. try:
  35. video_url = data["content"]["transedVideoPath"]
  36. return video_url
  37. except Exception as e:
  38. Common.logger("video").warning(f"获取视频链接失败:{e}\n")
  39. return ""
  40. """
  41. 新生成视频上传到对应账号下
  42. """
  43. @classmethod
  44. def insert_piaoquantv(cls, new_video_path, new_title, cover, n_id):
  45. url = "https://vlogapi.piaoquantv.com/longvideoapi/crawler/video/send"
  46. headers = {
  47. 'User-Agent': 'PQSpeed/486 CFNetwork/1410.1 Darwin/22.6.0',
  48. 'cookie': 'JSESSIONID=4DEA2B5173BB9A9E82DB772C0ACDBC9F; JSESSIONID=D02C334150025222A0B824A98B539B78',
  49. 'referer': 'http://appspeed.piaoquantv.com',
  50. 'token': '524a8bc871dbb0f4d4717895083172ab37c02d2f',
  51. 'accept-language': 'zh-CN,zh-Hans;q=0.9',
  52. 'Content-Type': 'application/x-www-form-urlencoded'
  53. }
  54. payload = {
  55. 'coverImgPath': cover,
  56. 'deviceToken': '9ef064f2f7869b3fd67d6141f8a899175dddc91240971172f1f2a662ef891408',
  57. 'fileExtensions': 'MP4',
  58. 'loginUid': n_id,
  59. 'networkType': 'Wi-Fi',
  60. 'platform': 'iOS',
  61. 'requestId': 'fb972cbd4f390afcfd3da1869cd7d001',
  62. 'sessionId': '362290597725ce1fa870d7be4f46dcc2',
  63. 'subSessionId': '362290597725ce1fa870d7be4f46dcc2',
  64. 'title': new_title,
  65. 'token': '524a8bc871dbb0f4d4717895083172ab37c02d2f',
  66. 'uid': n_id,
  67. 'versionCode': '486',
  68. 'versionName': '3.4.12',
  69. 'videoFromScene': '1',
  70. 'videoPath': new_video_path,
  71. 'viewStatus': '1'
  72. }
  73. encoded_payload = urlencode(payload)
  74. response = requests.request("POST", url, headers=headers, data=encoded_payload)
  75. data = response.json()
  76. code = data["code"]
  77. if code == 0:
  78. new_video_id = data["data"]["id"]
  79. return new_video_id
  80. else:
  81. return ''
  82. """
  83. 票圈站内视频下载
  84. """
  85. @classmethod
  86. def download_video(cls, video_url, video_path_url, video_id):
  87. for i in range(3):
  88. payload = {}
  89. headers = {}
  90. response = requests.request("GET", video_url, headers=headers, data=payload)
  91. if response.status_code == 200:
  92. # 以二进制写入模式打开文件
  93. video = video_path_url + str(video_id) + '.mp4'
  94. with open(f"{video}", "wb") as file:
  95. # 将响应内容写入文件
  96. file.write(response.content)
  97. time.sleep(5)
  98. return video
  99. return ''