Commit d660c663 by baiquan

add change_video_status

parent ef28a63c
...@@ -15,8 +15,6 @@ from tqdm import tqdm ...@@ -15,8 +15,6 @@ from tqdm import tqdm
from common import setup_proxy from common import setup_proxy
DOMAIN = "http://20tools.net"
HEADERS = { HEADERS = {
"Content-Type": "application/json", "Content-Type": "application/json",
"Accept": "application/json", "Accept": "application/json",
...@@ -235,25 +233,36 @@ class Upload: ...@@ -235,25 +233,36 @@ class Upload:
self.session_token = None self.session_token = None
self.access_key_id = None self.access_key_id = None
self.file_size = None self.file_size = None
self.file_name = None
self.proxies = task.get("proxies") self.proxies = task.get("proxies")
self.cookies = task.get('cookie') self.cookies = task.get('cookie')
self.headers = task.get('headers') self.headers = task.get('headers')
self.file_path_ = task.get('file_path_') self.file_path_ = task.get('file_path_')
@retry(stop=stop_after_attempt(5), wait=wait_fixed(1)) @retry(stop=stop_after_attempt(5), wait=wait_fixed(1))
def get_upload_token(self): def get_upload_token(self, upload_id = None):
""" """
获取上传token 获取上传token
:return: :return:
""" """
headers = {**DEFAULT_HEADER, **self.headers} headers = {**DEFAULT_HEADER, **self.headers}
url = 'https://fxg.jinritemai.com/product/video/uploadVideoToken?type=video&useBoe=false&appid=1&_bid=ffa_goods' if upload_id:
response = self.session.get(url, cookies=self.cookies,headers=headers) params = {
upload_token = response.json()['data']['auth_token'] 'vid': upload_id,
'appid': '1',
}
else:
params = {
'appid': '1',
}
url = f'https://fxg.jinritemai.com/product/video/uploadVideoToken'
response = self.session.get(url, cookies=self.cookies, headers=headers, params=params)
upload_token = response.json()['data']
if upload_token: if upload_token:
return upload_token return upload_token
@retry(stop=stop_after_attempt(5), wait=wait_fixed(1)) @retry(stop=stop_after_attempt(5), wait=wait_fixed(1))
def get_upload_nodes(self): def get_upload_nodes(self):
""" """
...@@ -464,13 +473,49 @@ class Upload: ...@@ -464,13 +473,49 @@ class Upload:
headers = {**headers, **self.headers} headers = {**headers, **self.headers}
response = self.session.post('https://vod.bytedanceapi.com/',cookies=self.cookies, params=params, headers=headers, response = self.session.post('https://vod.bytedanceapi.com/',cookies=self.cookies, params=params, headers=headers,
data=data, timeout=5) data=data, timeout=5)
logger.info(response.text)
if response.json()['Result']['Results'][0]: if response.json()['Result']['Results'][0]:
return response.json()['Result']['Results'][0] return response.json()['Result']['Results'][0]
def change_video_status(self, video_id, video_name):
"""
更改上传视频状态
:return:
"""
params = {
'syncToMaterial': 'true',
'appid': '1',
}
json_data = {
'vid_list': [
video_id,
],
'name_list': [
video_name,
],
'appid': 1,
}
url = 'https://fxg.jinritemai.com/product/video/changeVideoStatus'
response = self.session.post(url, params=params, cookies=self.cookies, headers=self.headers, json=json_data)
logger.info(response.text)
def get_upload_video_info(self, video_id):
"""
获取上传视频信息
:return:
"""
play_auth_token = self.get_upload_token(video_id)['play_auth_token']
response = self.session.get(f'https://vod.bytedanceapi.com/?{play_auth_token}', headers=self.headers, cookies=self.cookies, timeout=5)
logger.info(response.text)
if response.json()['Result']['Data']['Status'] != 10:
raise Exception('上传视频失败')
return response.json()['Result']['Data']['PlayInfoList'][0]
def run(self): def run(self):
""" """
运行 运行
:return: :return:
""" """
proxies = self.proxies proxies = self.proxies
...@@ -482,7 +527,7 @@ class Upload: ...@@ -482,7 +527,7 @@ class Upload:
self.session = session self.session = session
self.file_size = os.path.getsize(self.file_path_) self.file_size = os.path.getsize(self.file_path_)
logger.info("开始获取上传token") logger.info("开始获取上传token")
upload_token = self.get_upload_token() upload_token = self.get_upload_token()['auth_token']
logger.info("获取上传token成功") logger.info("获取上传token成功")
self.access_key_id = upload_token['AccessKeyID'] self.access_key_id = upload_token['AccessKeyID']
self.session_token = upload_token['SessionToken'] self.session_token = upload_token['SessionToken']
...@@ -501,11 +546,14 @@ class Upload: ...@@ -501,11 +546,14 @@ class Upload:
self.slices, chunks = video_split(self.file_path_) self.slices, chunks = video_split(self.file_path_)
for slice_ in self.slices: for slice_ in self.slices:
self.upload_video_split(slice_, chunks, auth, store_uri) self.upload_video_split(slice_, chunks, auth, store_uri)
logger.info("上传视频成功") logger.info("视频已上传")
self.upload_video_finish(auth, store_uri) self.upload_video_finish(auth, store_uri)
video_id = self.get_upload_result()['Vid'] video_id = self.get_upload_result()['Vid']
return video_id self.change_video_status(video_id, self.file_name)
logger.info("视频状态已更改")
video_info = self.get_upload_video_info(video_id)
return video_id, video_info
def upload_video(task): def upload_video(task):
...@@ -529,10 +577,11 @@ def upload_video(task): ...@@ -529,10 +577,11 @@ def upload_video(task):
task['file_path_'] = file_path_ task['file_path_'] = file_path_
upload = Upload(task) upload = Upload(task)
video_id = upload.run() video_id, video_info = upload.run()
logger.success(f"上传成功,视频ID为:{video_id}") logger.success(f"上传成功,视频ID为:{video_id}")
result = { result = {
'video_id': video_id, 'video_id': video_id,
'video_info': video_info,
'file_path': file_path_, 'file_path': file_path_,
} }
return result return result
...@@ -541,22 +590,45 @@ def upload_video(task): ...@@ -541,22 +590,45 @@ def upload_video(task):
if __name__ == '__main__': if __name__ == '__main__':
task = { task = {
'video_url': 'https://cloud.video.taobao.com/play/u/2200778999140/p/2/e/6/t/1/504992565058.mp4?appKey=38829', "headers": {
'file_name': '8d481cb3103b082871bc20dc50fba5f4.mp4', "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6772.1 Safari/537.36",
"proxies": { "sec-ch-ua": "'Google Chrome';v='131', 'Chromium';v='131', 'Not_A Brand';v='24'"
"addr": "58.251.251.226", },
"port": "9001", "cookie": {
"username": "UKZ5TYSJUQNB", "passport_csrf_token": "6f1838896e7b9cd71380426d6093a9b0",
"password": "3X4Q79VMDPK0" "passport_csrf_token_default": "6f1838896e7b9cd71380426d6093a9b0",
}, "is_staff_user": "false",
'cookie': { "PIGEON_CID": "1761839869605566",
'PHPSESSID': 'ea6b555fb9074efe8cda5f15a4e1095e', "SHOP_ID": "217987424",
'PHPSESSID_SS': 'ea6b555fb9074efe8cda5f15a4e1095e', "op_session": "",
}, "passport_auth_status": "16dbe412cad1c4120f80b4f2a75f2fbc%2Cd9bc6591051417afe327f70b05f78dcd",
'headers': { "passport_auth_status_ss": "16dbe412cad1c4120f80b4f2a75f2fbc%2Cd9bc6591051417afe327f70b05f78dcd",
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36', "qc_tt_tag": "0",
'sec-ch-ua': '"Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"' "passport_mfa_token": "CjHZ1t4oVStiK%2BWhirW0ofyGTdEV8hW0cGLqEFXfqPK8iUiYuFfgK%2FI3XZ9fVtsjRQ%2B2GkoKPAAAAAAAAAAAAABO7NqzLsWdPHKH%2B2qO0UgY%2FGIMp%2B9ME%2BfqieZr%2FAGzOPrMd3H1XZo15DriUy%2FPcWWVhhCY6u8NGPax0WwgAiIBA%2FjKnWk%3D",
}, "sessionid": "70f5161b7b961c32c0d0c92b76e1e954",
} "sessionid_ss": "70f5161b7b961c32c0d0c92b76e1e954",
"sid_tt": "70f5161b7b961c32c0d0c92b76e1e954",
"uid_tt": "31ac2392728b8f0638528e63720d63c6",
"uid_tt_ss": "31ac2392728b8f0638528e63720d63c6",
"PHPSESSID": "ea6b555fb9074efe8cda5f15a4e1095e",
"PHPSESSID_SS": "ea6b555fb9074efe8cda5f15a4e1095e",
"ucas_c0": "CkEKBTEuMC4wEIqIgdL41uSGaBjmJiCb66DF883DAiiwITC-7dD8pMyQA0C6pbbABki62fLCBlCjvLzOwPzd-WdYbhIUQePNSvIzA2AqfMku-VVaYxocXyI",
"ucas_c0_ss": "CkEKBTEuMC4wEIqIgdL41uSGaBjmJiCb66DF883DAiiwITC-7dD8pMyQA0C6pbbABki62fLCBlCjvLzOwPzd-WdYbhIUQePNSvIzA2AqfMku-VVaYxocXyI",
"sid_guard": "70f5161b7b961c32c0d0c92b76e1e954%7C1745720009%7C5183999%7CThu%2C+26-Jun-2025+02%3A13%3A28+GMT",
"sid_ucp_v1": "1.0.0-KDExOWYxZjEwZWJmZGRmZjIzMDMxZWMzMWEwOTlkZTY3OTlkNjU5ZjQKGQi-7dD8pMyQAxDJpbbABhiwISAMOAFA6wcaAmxxIiA3MGY1MTYxYjdiOTYxYzMyYzBkMGM5MmI3NmUxZTk1NA",
"ssid_ucp_v1": "1.0.0-KDExOWYxZjEwZWJmZGRmZjIzMDMxZWMzMWEwOTlkZTY3OTlkNjU5ZjQKGQi-7dD8pMyQAxDJpbbABhiwISAMOAFA6wcaAmxxIiA3MGY1MTYxYjdiOTYxYzMyYzBkMGM5MmI3NmUxZTk1NA",
"COMPASS_LUOPAN_DT": "session_7497809415819608371",
"BUYIN_SASID": "SID2_7497807982542717199",
"odin_tt": "22463254516415b30a9636a1e8d873dbe80f11222dfc2ba8a8d522a10da1298b82375f17436ecd78146241260873a66e",
"ttwid": "1%7CMFdTuHX3M0W14Bao11G9c4hqdaJywwj6SGMPYOTz93o%7C1745735758%7Cfb86819121428a8f2806469e0343c58aea3fe6a904990a2646c5184180c5ae09"
},
"video_url": "https://cloud.video.taobao.com/play/u/2200778999140/p/2/e/6/t/1/504992565058.mp4?appKey=38829",
"file_name": "efad540ae5554568509afb543a861b3a_raw.mp4",
"proxies": {
"addr": "58.251.251.226",
"port": "9001",
"username": "UKZ5TYSJUQNB",
"password": "3X4Q79VMDPK0"
}
}
print(upload_video(task)) print(upload_video(task))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment