コード例 #1
0
ファイル: upload.py プロジェクト: DuskMelody/ImageUpload
def uploadToQQ(files):
    #pc side
    #url = 'http://upload.buluo.qq.com/cgi-bin/bar/upload/image?callback=singleImgUpload'
    #mobile side
    url = 'http://upload.buluo.qq.com/cgi-bin/bar/upload/base64image'
    headers = {'Origin': 'http://buluo.qq.com', 'Referer': 'http://buluo.qq.com/buluoadmin/for-crossdomain.html'}
    data = {'type':'2', 'retype':'5'}

    if os.path.getsize(qq_cookie) <= 0:
        logger.info('try to get cookie')
        weiboLogin.init()
    s = requests.Session()
    s.cookies = cookielib.LWPCookieJar(qq_cookie)
    s.cookies.load(ignore_discard=True)
    logger.debug('cookies: %s' %(s.cookies))

    p = re.compile('\{.+\}')

    totalSize = 0
    totalTime = 0
    totalSucc = 0
    totalFail = 0
    target = 'tencent'
    for file in files:
        fileName = os.path.basename(file)
        fileExt = os.path.splitext(file)[1]
        type = getContentType(file)
        size = os.path.getsize(file)
        #filesBody = {'file':(fileName, open(file, 'rb'), type)}
        data['base64_code'] = open(file, 'rb')
        t0 = time.time()
        r = s.post(url, headers=headers, data=data)
        t1 = time.time()
        costTime = t1 - t0
        logger.debug('statusCode:%d, response content:%s' %(r.status_code, r.text))
        str = p.search(r.text)
        status = 'fail'
        if r.status_code == 200 and str:
            jsonObj = json.loads(str.group(0))
            logger.info('>>>>returned: %s' %(jsonObj))
            if ("retcode" in jsonObj and jsonObj["retcode"] == 100000) or ("state" in jsonObj and jsonObj["state"] == 'SUCCESS'):
                totalSize += size
                totalTime += costTime
                totalSucc += 1
                status = 'success'
            else:
                totalFail += 1
                logger.error('type:%s, target:%s, Faied upload %s: %s, cost: %f' %('upload', target, file, r.text, costTime))
        logger.debug("type:%s, target:%s, pic:%s, status:%s" %('upload', target, file, status))
        if status == 'success':
            logger.info("type:%s, target:%s, size:%d, cost:%f, speed:%f" %('upload', target, size, costTime, size/costTime/1000))
        #time.sleep(2)
    speed = 0
    if totalTime > 0:
        speed = totalSize/totalTime/1000
    logger.info("type:%s, target:%s, succ:%d, fail:%d, size:%d, cost:%f, speed:%f" %('upload', target, totalSucc, totalFail, totalSize, totalTime, speed))
コード例 #2
0
ファイル: upload.py プロジェクト: DuskMelody/ImageUpload
def uploadToWeibo(files):
	url = 'http://picupload.service.weibo.com/interface/pic_upload.php'
	params = {'app': 'miniblog', 'data': '1', 'mime': 'image/jpeg'}
	headers = {'Origin': 'http://js.t.sinajs.cn', 'Referer': 'http://js.t.sinajs.cn/t6/home/static/swf/MultiFilesUpload.swf?version=61062054d006c2c2'}
	logger.debug('headers: %s' %(headers))
	if os.path.getsize(weibo_cookie) <= 0:
	    logger.info('try to get cookie')
	    weiboLogin.init()
	s = requests.Session()
	s.cookies = cookielib.LWPCookieJar(weibo_cookie)
	s.cookies.load(ignore_discard=True)
	logger.debug('cookies: %s' %(s.cookies))
	
	upload(files, 'weibo', s, url, params, headers)