Example #1
0
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
Example #2
0
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
Example #3
0
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
Example #4
0
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()
Example #5
0
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
Example #6
0
    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
Example #7
0
    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