async_aigc_system_api.py 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. import json
  2. from applications.utils import AsyncHttpClient
  3. HEADERS = {
  4. "Accept": "application/json",
  5. "Accept-Language": "zh,zh-CN;q=0.9",
  6. "Content-Type": "application/json",
  7. "Origin": "http://admin.cybertogether.net",
  8. "Proxy-Connection": "keep-alive",
  9. "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
  10. }
  11. PERSON_COOKIE = {
  12. "token": "af54cdc404c3464d896745df389b2dce",
  13. "appType": 9,
  14. "platform": "pc",
  15. "appVersionCode": 1000,
  16. "clientTimestamp": 1,
  17. "fid": 1,
  18. "loginUid": 1,
  19. "pageSource": 1,
  20. "requestId": 1,
  21. "rid": 1,
  22. "uid": 1,
  23. }
  24. async def delete_illegal_gzh_articles(gh_id: str, title: str):
  25. """
  26. Delete illegal gzh articles
  27. :param gh_id: gzh id
  28. :param title: article title
  29. """
  30. url = "http://101.37.174.139:80/articleAudit/titleDangerFindDelete"
  31. payload = {
  32. "title": title,
  33. "ghId": gh_id,
  34. }
  35. headers = {"Content-Type": "application/json;charset=UTF-8"}
  36. async with AsyncHttpClient(timeout=600) as client:
  37. res = await client.post(url=url, headers=headers, json=payload)
  38. return res
  39. async def auto_create_crawler_task(plan_id, plan_name, plan_tag, url_list, platform):
  40. """
  41. Create crawler task
  42. """
  43. match platform:
  44. case "weixin":
  45. channel = 5
  46. case "toutiao":
  47. channel = 6
  48. case _:
  49. raise RuntimeError(f"Unsupported platform: {platform}")
  50. url = "http://aigc-api.cybertogether.net/aigc/crawler/plan/save"
  51. payload = {
  52. "params": {
  53. "contentFilters": [],
  54. "accountFilters": [],
  55. "filterAccountMatchMode": 1,
  56. "filterContentMatchMode": 1,
  57. "selectModeValues": [],
  58. "searchModeValues": [],
  59. "contentModal": 3,
  60. "analyze": {},
  61. "crawlerComment": 0,
  62. "inputGroup": None,
  63. "inputSourceGroups": [],
  64. "modePublishTime": [],
  65. "planType": 2,
  66. "frequencyType": 2,
  67. "planTag": plan_tag,
  68. "tagPenetrateFlag": 0,
  69. "id": plan_id,
  70. "name": plan_name,
  71. "channel": channel,
  72. "crawlerMode": 5,
  73. "inputModeValues": url_list,
  74. "modePublishTimeStart": None,
  75. "modePublishTimeEnd": None,
  76. "executeRate": None,
  77. "executeDate": None,
  78. "executeWindowStart": None,
  79. "executeWindowEnd": None,
  80. "executeTimeInterval": None,
  81. "executeNum": None,
  82. "addModal": None,
  83. "addChannel": None,
  84. "fileUpload": None,
  85. "prompt": None,
  86. "acelFlag": None,
  87. "tasks": [],
  88. },
  89. "baseInfo": PERSON_COOKIE,
  90. }
  91. async with AsyncHttpClient(timeout=600) as client:
  92. res = await client.post(url=url, headers=HEADERS, json=payload)
  93. return res
  94. async def add_to_crawler_task():
  95. pass
  96. async def get_crawler_task_detail():
  97. pass
  98. async def auto_bind_crawler_task_to_generate_task(crawler_task_list, generate_task_id):
  99. url = "http://aigc-api.cybertogether.net/aigc/produce/plan/save"
  100. plan_info = await get_generate_task_detail(generate_task_id)
  101. input_source_groups = plan_info.get("inputSourceGroups")
  102. existed_crawler_task = input_source_groups[0].get("inputSources")
  103. new_task_list = existed_crawler_task + crawler_task_list
  104. input_source_group_0 = input_source_groups[0]
  105. input_source_group_0["inputSources"] = new_task_list
  106. payload = json.dumps(
  107. {
  108. "params": {
  109. "contentFilters": [],
  110. "produceModal": plan_info.get("produceModal"),
  111. "inputModal": plan_info.get("inputModal"),
  112. "tasks": plan_info.get("tasks", []),
  113. "modules": [],
  114. "moduleGroups": plan_info.get("moduleGroups"),
  115. "inputSourceGroups": [input_source_group_0],
  116. "layoutType": plan_info.get("layoutType"),
  117. "activeManualReview": plan_info.get("activeManualReview"),
  118. "totalProduceNum": plan_info.get("totalProduceNum"),
  119. "dailyProduceNum": plan_info.get("dailyProduceNum"),
  120. "maxConcurrentNum": plan_info.get("maxConcurrentNum"),
  121. "id": generate_task_id,
  122. "name": plan_info.get("name"),
  123. "planTag": plan_info.get("planTag"),
  124. "tagPenetrateFlag": plan_info.get("tagPenetrateFlag"),
  125. "inputType": plan_info.get("inputType"),
  126. "inputChannel": plan_info.get("inputChannel"),
  127. "activeManualReviewCount": plan_info.get("activeManualReviewCount"),
  128. "autoComposite": plan_info.get("autoComposite"),
  129. },
  130. "baseInfo": PERSON_COOKIE,
  131. }
  132. )
  133. async with AsyncHttpClient(timeout=600) as client:
  134. response = await client.post(url=url, headers=HEADERS, data=payload)
  135. return response
  136. async def get_generate_task_detail(generate_task_id):
  137. """
  138. 通过生成计划的 id,获取该生成计划已有的抓取计划 list
  139. :param generate_task_id:
  140. :return:
  141. """
  142. url = "http://aigc-api.cybertogether.net/aigc/produce/plan/detail"
  143. payload = json.dumps(
  144. {"params": {"id": generate_task_id}, "baseInfo": PERSON_COOKIE}
  145. )
  146. async with AsyncHttpClient(timeout=600) as client:
  147. res = await client.post(url=url, headers=HEADERS, data=payload)
  148. if res["msg"] == "success":
  149. return res["data"]
  150. else:
  151. return {}