Untitled
unknown
plain_text
a year ago
3.9 kB
7
Indexable
def upload_ava(self): file_path = f'{path_avatar}\\{str(random.randint(0, 4999))}.png' request_url = 'https://upload.twitter.com/1.1/media/upload.json' total_bytes = os.path.getsize(file_path) data = {'command': 'INIT', 'total_bytes': total_bytes, 'media_type': 'image/jpeg'} # print(self.headers) headers_ava = { 'Authorization': 'Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA', 'Authority': 'upload.twitter.com', 'Accept': '*/*', 'Origin': 'https://twitter.com', 'Referer': 'https://twitter.com', 'Sec-Fetch-Site': 'same-site', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'en-US,en;q=0.9', 'X-Twitter-Client-Language': 'en', 'Sec-Ch-Ua-Mobile': '?0', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.97 Safari/537.36', 'X-Twitter-Active-User': 'yes', "X-Csrf-Token": self.cookies["ct0"]} self.session.headers.clear() response = self.session.post(url=request_url, data=data, headers=headers_ava) media_id = response.json()['media_id'] with open(file_path, 'rb') as file: binary_media_data = file.read() payload = { 'command': 'APPEND', 'media_id': media_id, 'segment_index': 0, } multipart_body = io.BytesIO() boundary = f"----WebKitFormBoundary{self.generate_random_string(16)}" def add_part(name, value): multipart_body.write(f'--{boundary}\r\n'.encode('utf-8')) multipart_body.write(f'Content-Disposition: form-data; name="{name}"\r\n'.encode('utf-8')) multipart_body.write(b'\r\n') multipart_body.write(value) multipart_body.write(b'\r\n') # Add form fields for key, value in payload.items(): if isinstance(value, str): add_part(key, value.encode('utf-8')) else: add_part(key, str(value).encode('utf-8')) # Add binary media add_part('media', binary_media_data) multipart_body.write(f'--{boundary}--\r\n'.encode('utf-8')) # Set the Content-Type header with the boundary headers_ava['Content-Type'] = f'multipart/form-data; boundary={boundary}' # Send the POST request response = self.session.post(request_url, data=multipart_body.getvalue(), headers=headers_ava) # Handle the response as needed headers_ava.pop('Content-Type') data = { 'command': 'FINALIZE', 'media_id': media_id, } response = self.session.post(url=request_url, data=data, headers=headers_ava) update_url = 'https://api.twitter.com/1.1/account/update_profile_image.json' data = {"include_profile_interstitial_type": 1, "include_blocking": 1, "include_blocked_by": 1, "include_followed_by": 1, "include_want_retweets": 1, "include_mute_edge": 1, "include_can_dm": 1, "include_can_media_tag": 1, "include_ext_has_nft_avatar": 1, "include_ext_is_blue_verified": 1, "include_ext_verified_type": 1, "include_ext_profile_image_shape:": 1, "skip_status": 1, "return_user": 1, "media_id": media_id} response = self.session.post(url=update_url, data=data, headers=headers_ava) print(response.text)
Editor is loading...
Leave a Comment