1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- from curl_cffi import requests
- from api.error import unauthorized_error
- from api.error import system_error
- # 查询历史所有任务列表
- def thomas_jobs(cookie, user_id, page_size=50):
- url = f"https://www.midjourney.com/api/pg/thomas-jobs?user_id={user_id}&page_size={page_size}"
- response = requests.get(url, headers=nec_headers(cookie), impersonate="chrome101")
- return response_catch(response)
- # 查询指定任务状态
- def query_job_status(job_id, cookie):
- url = "https://www.midjourney.com/api/app/job-status"
- response = requests.post(url=url, headers=nec_headers(cookie), impersonate="chrome101", json={"jobIds": [job_id]})
- return response_catch(response)
- # 查询任务队列
- def query_job_queue(cookie, user_id):
- url = f"https://www.midjourney.com/api/app/users/queue?userId={user_id}"
- response = requests.get(url, headers=nec_headers(cookie), impersonate="chrome101")
- return response_catch(response)
- # 提交任务
- def submit_job(cookie, prompt, user_id, mode='fast'):
- request_data = {
- "f": {
- "mode": mode,
- "private": False
- },
- "channelId": f"singleplayer_{user_id}",
- "roomId": None,
- "metadata": {
- "imagePrompts": 1,
- "imageReferences": 0,
- "characterReferences": 0
- },
- "t": "imagine",
- "prompt": prompt
- }
- url = "https://www.midjourney.com/api/app/submit-jobs"
- response = requests.post(url=url, headers=nec_headers(cookie), impersonate="chrome101", json=request_data)
- return response_catch(response)
- def response_catch(response):
- if response.ok:
- return response.json()
- elif response.status_code == 401:
- raise unauthorized_error("unauthorized access (401)")
- else:
- raise system_error(f"system_error ({response.status_code})")
- def nec_headers(cookie):
- headers = {
- 'accept': '*/*',
- 'accept-language': 'zh-CN,zh;q=0.9',
- 'cache-control': 'no-cache',
- 'cookie': cookie,
- 'pragma': 'no-cache',
- 'priority': 'u=1, i',
- 'referer': 'https://www.midjourney.com/explore',
- 'sec-ch-ua': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
- 'sec-ch-ua-mobile': '?0',
- 'sec-ch-ua-platform': '"Windows"',
- 'sec-fetch-dest': 'empty',
- 'sec-fetch-mode': 'cors',
- 'sec-fetch-site': 'same-origin',
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36',
- 'x-requested-with': 'XMLHttpRequest',
- 'x-csrf-protection': 1
- }
- return headers
|