def upload_photo2(cookiefile, full_filename, qqid, sid): skey = get_cookie_value(cookiefile, "skey") boundary = "----" + gen_boundary() qqid = int(qqid) if qqid > 2000000000: urls = [UPLOAD_URL % boundary, UPLOAD_URL2 % boundary, UPLOAD_URL3 % boundary, UPLOAD_URL4 % boundary] elif qqid > 1100000000: urls = [UPLOAD_URL2 % boundary, UPLOAD_URL % boundary, UPLOAD_URL3 % boundary, UPLOAD_URL4 % boundary] elif qqid > 1000000000: urls = [UPLOAD_URL3 % boundary, UPLOAD_URL2 % boundary, UPLOAD_URL % boundary, UPLOAD_URL4 % boundary] elif qqid < 200000000: urls = [UPLOAD_URL2 % boundary, UPLOAD_URL % boundary, UPLOAD_URL3 % boundary, UPLOAD_URL4 % boundary] else: urls = [UPLOAD_URL4 % boundary, UPLOAD_URL2 % boundary, UPLOAD_URL3 % boundary, UPLOAD_URL % boundary] photo_json = {} for url in urls: datagen, headers = generate_multipart_photo(qqid, skey, full_filename, boundary) headers['User-Agent'] = DEFAULT_UA headers['Accept'] = 'text/x-json,application/json;q=0.9,*/*;q=0.8' headers['Accept-Language'] = 'en-US,en;q=0.5' logger.info("Uploading photo %s %s -> %s", qqid, full_filename, url) result = post(url, datagen, headers=headers, cookiefile=cookiefile, is_accept_ending=True, ext_handlers=get_handlers()) logger.debug("Uploaded %s %s -> %s : result %s", qqid, full_filename, url, result) photo_json = simplejson.loads(result.replace("_Callback(","").replace(");",""))['data'] if photo_json.has_key('error'): logger.warn("Post failed qq %s -> %s %s %s", qqid, url, photo_json['error'], photo_json['msg'].encode('utf8')) if photo_json['error'] == -503: log_paperboy("Need login(photo) xks %s" % sid) break else: break return photo_json
def upload_photo(cookiefile, full_filename, qqid): skey = get_cookie_value(cookiefile, "skey") boundary = "----" + gen_boundary() qqid = int(qqid) if qqid > 2000000000: url = UPLOAD_URL % boundary elif qqid > 1100000000: url = UPLOAD_URL2 % boundary elif qqid > 1000000000: url = UPLOAD_URL3 % boundary elif qqid < 200000000: url = UPLOAD_URL2 % boundary else: url = UPLOAD_URL4 % boundary datagen, headers = generate_multipart_photo(qqid, skey, full_filename, boundary) headers['User-Agent'] = DEFAULT_UA headers['Accept'] = 'text/x-json,application/json;q=0.9,*/*;q=0.8' headers['Accept-Language'] = 'en-US,en;q=0.5' logger.info("Uploading photo %s %s -> %s", qqid, full_filename, url) result = post(url, datagen, headers=headers, cookiefile=cookiefile, is_accept_ending=True, ext_handlers=get_handlers()) logger.debug("Uploaded %s %s -> %s : result %s", qqid, full_filename, url, result) return result
def upload_photo2(cookiefile, full_filename, qqid, sid): skey = get_cookie_value(cookiefile, "skey") boundary = "----" + gen_boundary() qqid = int(qqid) if qqid > 2000000000: urls = [ UPLOAD_URL % boundary, UPLOAD_URL2 % boundary, UPLOAD_URL3 % boundary, UPLOAD_URL4 % boundary ] elif qqid > 1100000000: urls = [ UPLOAD_URL2 % boundary, UPLOAD_URL % boundary, UPLOAD_URL3 % boundary, UPLOAD_URL4 % boundary ] elif qqid > 1000000000: urls = [ UPLOAD_URL3 % boundary, UPLOAD_URL2 % boundary, UPLOAD_URL % boundary, UPLOAD_URL4 % boundary ] elif qqid < 200000000: urls = [ UPLOAD_URL2 % boundary, UPLOAD_URL % boundary, UPLOAD_URL3 % boundary, UPLOAD_URL4 % boundary ] else: urls = [ UPLOAD_URL4 % boundary, UPLOAD_URL2 % boundary, UPLOAD_URL3 % boundary, UPLOAD_URL % boundary ] photo_json = {} for url in urls: datagen, headers = generate_multipart_photo(qqid, skey, full_filename, boundary) headers['User-Agent'] = DEFAULT_UA headers['Accept'] = 'text/x-json,application/json;q=0.9,*/*;q=0.8' headers['Accept-Language'] = 'en-US,en;q=0.5' logger.info("Uploading photo %s %s -> %s", qqid, full_filename, url) result = post(url, datagen, headers=headers, cookiefile=cookiefile, is_accept_ending=True, ext_handlers=get_handlers()) logger.debug("Uploaded %s %s -> %s : result %s", qqid, full_filename, url, result) photo_json = simplejson.loads( result.replace("_Callback(", "").replace(");", ""))['data'] if photo_json.has_key('error'): logger.warn("Post failed qq %s -> %s %s %s", qqid, url, photo_json['error'], photo_json['msg'].encode('utf8')) if photo_json['error'] == -503: log_paperboy("Need login(photo) xks %s" % sid) break else: break return photo_json
def glitch(inp): '.glitch url chance amount seed -- http://glitch.goonscape.org/' # ok im gonna forget what the heck i was doin here by tomorrow so lets write a proper comment # split the params from inp but make them '' if they aren't there!! p = izip_longest(('url', 'chance', 'datalength', 'randseed'), inp.split(), fillvalue='') params = [a for a in p] register_openers() boundary = encode.gen_boundary() f = encode.MultipartParam('file', '', filename=' ', filetype='application/octet-stream') params.insert(0, f) datagen, headers = encode.multipart_encode(params, boundary) request = urllib2.Request('http://glitch.goonscape.org', datagen, headers) return urllib2.urlopen(request).geturl()
def upload_files(self, ultra): hashes = self.load_hashes(self.hub_project) files_scanned, files_to_upload = self.scan_files(hashes, ultra) if self.stopped: return False num_files = self.num_files if num_files <= 0: return True boundary = gen_boundary() local_deploy = self.hub_pool.host in ['127.0.0.1', '0.0.0.0', 'localhost'] try: if local_deploy: params = {'files.path': self.get_meta_data_path(), 'encoding': 'gzip', 'project': self.hub_project, 'version': self.hub_version, 'versiontitle': self.hub_versiontitle, 'pluginmain': self.plugin_main, 'canvasmain': self.canvas_main, 'flashmain': self.flash_main, 'mappingtable': self.mapping_table, 'engineversion': self.engine_version, 'ismultiplayer': self.is_multiplayer, 'aspectratio': self.aspect_ratio, 'numfiles': str(num_files), 'numbytes': str(self.num_bytes), 'localversion': __version__} r = self.hub_pool.request('POST', '/dynamic/upload/begin', fields=params, headers={'Cookie': self.hub_cookie}, timeout=self.hub_timeout) else: r = self.post('/dynamic/upload/begin', [MultipartParam('files', filename='files.json', filetype='application/json; charset=utf-8', fileobj=open(self.get_meta_data_path(), 'rb')), ('encoding', 'gzip'), ('project', self.hub_project), ('version', self.hub_version), ('versiontitle', self.hub_versiontitle), ('pluginmain', self.plugin_main), ('canvasmain', self.canvas_main), ('flashmain', self.flash_main), ('mappingtable', self.mapping_table), ('engineversion', self.engine_version), ('ismultiplayer', self.is_multiplayer), ('aspectratio', self.aspect_ratio), ('numfiles', num_files), ('numbytes', self.num_bytes), ('localversion', __version__)], boundary) except IOError: self.stop('Error opening file "%s".' % self.get_meta_data_path()) return False except (HTTPError, SSLError) as e: self.stop('Error starting upload: "%s".' % e) return False if r.status == 504: self.stop('Hub timed out.') return False if r.headers.get('content-type', '') == 'application/json; charset=utf-8' and r.data != '': try: answer = json_loads(r.data) except JSONDecodeError as e: LOG.error(e) answer = {} else: answer = {} if r.status != 200: msg = answer.get('msg', False) if msg: self.stop(msg) else: self.stop('Error starting upload: "%s".' % r.reason) return False hub_session = answer.get('session', None) if not answer.get('ok', False) or not hub_session: self.stop('Unsupported response format from Hub.') return False self.hub_session = hub_session get_cached_file_name = _get_cached_file_name for file_name, file_size, file_hash in files_scanned: hashes.add(get_cached_file_name(file_name, file_hash, file_size)) self.uploaded_bytes += file_size self.uploaded_files += 1 if self.uploaded_files >= num_files: self.save_hashes(hashes) return True # we only reach this code if there are files to upload uploaded_queue = Queue() self.start_upload_workers(files_to_upload, uploaded_queue, boundary, local_deploy) while True: item = uploaded_queue.get() if item is None or self.stopped: break file_name, file_size, file_hash = item hashes.add(get_cached_file_name(file_name, file_hash, file_size)) self.uploaded_bytes += file_size self.uploaded_files += 1 if self.uploaded_files >= num_files: self.save_hashes(hashes) return True item = None self.save_hashes(hashes) return False