def index(): url = PAN_INDEX header = { 'Host': PAN_HOST, 'Referer': DISK_HOME, } sign1 = '' sign3 = '' bdstoken = '' timestamp = '' xml = fetch(url, {}, utils.myname(), header).decode('utf-8') signmatch = re.search("yunData\.sign1\s*=\s*'([^']*)'", xml) if signmatch: sign1 = signmatch.group(1) logger.debug('sign1: %s ' % sign1) bdstokenmatch = re.search('MYBDSTOKEN\s*=\s*"([^"]*)"', xml) if bdstokenmatch: bdstoken = bdstokenmatch.group(1) logger.debug('bdstoken: %s ' % bdstoken) sign3match = re.search("yunData\.sign3\s*=\s*'([^']*)'", xml) if sign3match: sign3 = sign3match.group(1) logger.debug('sign3: %s ' % sign3) timestampmatch = re.search("yunData\.timestamp\s*=\s*'([^']*)'", xml) if timestampmatch: timestamp = timestampmatch.group(1) logger.debug('timestamp: %s ' % timestamp) return (bdstoken, sign1, sign3, timestamp)
def query_task(bdstoken, taskid): url = CLOUD_DL + "?bdstoken=" + bdstoken + "&task_ids=" + \ taskid + "&op_type=1&method=query_task&app_id=250528&t=" + utils.tt() + \ "&bdstoken=" + bdstoken + "&channel=chunlei&clienttype=0&web=1&app_id=250528" xml = fetch(url, {}, utils.myname(), {}) j = json.loads(xml.decode("utf-8")) logger.debug("json: %s " % str(j)) return (j, taskid)
def query_task(bdstoken,taskid): url = CLOUD_DL + "?bdstoken=" + bdstoken + "&task_ids=" + \ taskid + "&op_type=1&method=query_task&app_id=250528&t=" + utils.tt() + \ "&bdstoken=" + bdstoken + "&channel=chunlei&clienttype=0&web=1&app_id=250528" xml = fetch(url,{},utils.myname(),{}) j = json.loads(xml.decode("utf-8")) logger.debug("json: %s "% str(j)) return (j,taskid)
def list_task(bdstoken): url = CLOUD_DL + '?bdstoken=' + bdstoken + \ '&need_task_info=1&status=255&start=0&limit=100&method=list_task&app_id=250528&t=' + \ utils.tt() + '&bdstoken=' + bdstoken + '&channel=chunlei&clienttype=0&web=1&app_id=250528' xml = fetch(url,{},utils.myname(),{}) j = json.loads(xml.decode("utf-8")) return j
def list_task(bdstoken): url = CLOUD_DL + '?bdstoken=' + bdstoken + \ '&need_task_info=1&status=255&start=0&limit=100&method=list_task&app_id=250528&t=' + \ utils.tt() + '&bdstoken=' + bdstoken + '&channel=chunlei&clienttype=0&web=1&app_id=250528' xml = fetch(url, {}, utils.myname(), {}) j = json.loads(xml.decode("utf-8")) return j
def search_mag(s, dry=True): settings.DRY = dry header = { "host": "www.thepiratebay.se", "method": "GET", } url = "https://www.thepiratebay.se/s/?q=" + s + \ "&p**n=on&category=0&page=0&orderby=99" xml = fetch(url, {}, utils.myname(), header) return xml
def search_mag(s,dry=True): settings.DRY = dry header = { "host":"www.thepiratebay.se", "method":"GET", } url = "https://www.thepiratebay.se/s/?q=" + s + \ "&p**n=on&category=0&page=0&orderby=99" xml = fetch(url,{},utils.myname(),header) return xml
def login_check(username, token): header = { 'Host': PASSPORT_HOST, 'Referer': PAN_INDEX, } cbs = utils.cbs_token() url = PASSPORT_API + '/?loginhistory&token=' + token + \ '&tpl=netdisk&apiver=v3&tt=' + utils.tt() + '&username='******'&isphone=false&callback=' + cbs xml = fetch(url, {}, utils.myname(), header) xml = utils.fix_json(xml) return xml
def get_sign3(): url = PAN_INDEX header = { 'Host': PAN_HOST, 'Referer': DISK_HOME, } xml = fetch(url, {}, utils.myname()) sign3 = xml.search("yunData.sign3\s*=\s*'([^']*)';") logger.debug('sign3: %s ' % sign3) if sign3: return sign3 else: return None
def move_file(bdstoken, filelist): header = { 'Content-Type': 'application/x-www-form-urlencoded', 'Host': PAN_HOST, 'Referer': DISK_HOME, } url = FILE_MANAGER + \ '?channel=chunlei&clienttype=0&web=1&opera=move&bdstoken=' + \ bdstoken + "&app_id=250528" post = { 'filelist': filelist, } xml = fetch(url, post, utils.myname(), header) return xml
def login_vcode(): url = 'https://passport.baidu.com/cgi-bin/genimage?' + codeString f = open(vimg, "wb") fp = fetch(url, {}, utils.myname()) f.write(fp) f.close() try: subprocess.Popen(['xdg-open', vimg]) except: print("Please open %s to check verification code" % vimg) print("Please input verification code for %s, vcode : %s:" % (url, vcode)) vf = input("Verification Code # ").strip() return vf
def get_bdtoken(): url = PAN_INDEX header = { 'Host': PAN_HOST, 'Referer': DISK_HOME, } xml = fetch(url, {}, utils.myname()) bdstoken = xml.search('MYBDSTOKEN\s*=\s*"([^"]*)"') logger.debug('bdstoken: %s ' % bdstoken) if bdstoken: return bdstoken else: return None
def move_file(bdstoken,filelist): header = { 'Content-Type':'application/x-www-form-urlencoded', 'Host':PAN_HOST, 'Referer':DISK_HOME, } url = FILE_MANAGER + \ '?channel=chunlei&clienttype=0&web=1&opera=move&bdstoken=' + \ bdstoken + "&app_id=250528" post = { 'filelist':filelist, } xml = fetch(url,post,utils.myname(),header) return xml
def delete_file(bdstoken,filelist): header = { 'Content-Type':'application/x-www-form-urlencoded', 'Host':PAN_HOST, 'Referer':DISK_HOME, } url = FILE_MANAGER + \ '?channel=chunlei&clienttype=0&web=1&opera=delete&bdstoken=' + \ bdstoken + "&app_id=250528" post = { 'filelist':filelist, } path = os.path.dirname(filelist.strip('["').strip('"]').split(',')[0]) xml = fetch(url,post,utils.myname(),header,path) return xml
def delete_file(bdstoken, filelist): header = { 'Content-Type': 'application/x-www-form-urlencoded', 'Host': PAN_HOST, 'Referer': DISK_HOME, } url = FILE_MANAGER + \ '?channel=chunlei&clienttype=0&web=1&opera=delete&bdstoken=' + \ bdstoken + "&app_id=250528" post = { 'filelist': filelist, } path = os.path.dirname(filelist.strip('["').strip('"]').split(',')[0]) xml = fetch(url, post, utils.myname(), header, path) return xml
def get_timestamp(): url = PAN_INDEX header = { 'Host': PAN_HOST, 'Referer': DISK_HOME, } xml = fetch(url, {}, utils.myname()) timestamp = xml.search("yunData.timestamp\s*=\s*'([^']*)';") logger.debug('timestamp: %s ' % timestamp) if timestamp: return timestamp else: return None
def get_token(): header = { 'Host': PASSPORT_HOST, 'Referer': PAN_INDEX, } cbs = utils.cbs_token() login_init = utils.tt() url = PASSPORT_API + '/?getapi&tpl=netdisk&apiver=v3&tt='+ \ login_init + '&class=login&logintype=basicLogin&callback=' + cbs logger.debug('url:: %s ' % url) xml = fetch(url, {}, utils.myname(), header) xml = utils.fix_json(xml.decode('utf-8')) token = json.loads(xml)['data']['token'] logger.debug("token:%s" % token) return token
def login(rsakey, pubkey, username, password, token): url = PASSPORT_API + '/?login' login_start = utils.tt() header = { 'Host': PASSPORT_HOST, 'Referer': PAN_INDEX, 'Origin': PAN_INDEX, 'Content-Type': 'application/x-www-form-urlencoded', } logger.debug("encrypted pw: %s " % RSA_encrypt(pubkey, password)) post = { 'apiver': 'v3', 'callback': 'parent.' + utils.cbs_token(), 'charset': 'utf-8', 'codestring': '', 'isPhone': 'false', 'loginmerge': 'true', 'logintype': 'basicLogin', 'mem_pass': '******', 'password': RSA_encrypt(pubkey, password), #password, 'ppui_logintime': str(random.randint(52000, 58535)), #int(login_start)-int(login_init), 'quick_user': '******', 'safeflg': '0', 'staticpage': 'http://pan.baidu.com/res/static/thirdparty/pass_v3_jump.html', 'token': token, 'tpl': 'netdisk', 'tt': login_start, 'u': PAN_INDEX, 'username': username, 'verifycode': '', 'subpro': '', 'logLoginType': 'pc_loginBasic', 'crypttype': '12', 'rsakey': rsakey, 'idc:': '', } xml = fetch(url, post, utils.myname(), header).decode('utf-8') img = re.search('"(err_no=[^"]*)"', xml).group(1) import urllib.parse idict = dict(urllib.parse.parse_qsl(img)) logger.debug("idict : %s" % idict) return (xml, idict)
def get_public_key(token): header = { 'Host': PASSPORT_HOST, 'Referer': PAN_INDEX, } cbs = utils.cbs_token() url = 'https://passport.baidu.com/v2/getpublickey?token=' + \ token + '&tpl=netdisk&apiver=v3&tt=' + utils.tt() + '&callback=' + cbs xml = fetch(url, {}, utils.myname(), header).decode('utf-8') keystr = re.search("\(([^\)]*)\)", xml).group(1).replace("'", '"').replace('\t', '') logger.debug("key str:%s" % keystr) keydict = eval(keystr) logger.debug("keydict:%s" % keydict) rsakey = keydict['key'] pubkey = keydict['pubkey'] logger.debug("rsakey:%s" % rsakey) logger.debug("pubkey:%s" % pubkey) return (rsakey, pubkey)
def list_path(path, num, dry, bdstoken): logger.info("Listing path %s." % path) settings.DRY = dry header = { 'Host': PAN_HOST, 'Referer': DISK_HOME, } t = utils.tt() t2 = str(int(t) + 2) if path: _path = urllib.parse.urlencode({"dir": path}) else: _path = urllib.parse.urlencode({"dir": '/'}) url = PAN_INDEX + '/api/list?channel=chunlei&clienttype=0&web=1&num=' + \ str(num) + '&t=' + t + '&page=1&' + _path + \ '&showempty=0&order=time&desc=1&_='+ t2 + \ '&bdstoken=' + bdstoken + "&app_id=250528" xml = fetch(url, {}, utils.myname(), header, path) list_json = json.loads(xml.decode("utf-8")) if list_json: return list_json else: return None
def list_path(path,num,dry,bdstoken): logger.info("Listing path %s."%path) settings.DRY = dry header = { 'Host':PAN_HOST, 'Referer':DISK_HOME, } t = utils.tt() t2 = str(int(t) + 2) if path: _path = urllib.parse.urlencode({"dir":path}) else: _path = urllib.parse.urlencode({"dir":'/'}) url = PAN_INDEX + '/api/list?channel=chunlei&clienttype=0&web=1&num=' + \ str(num) + '&t=' + t + '&page=1&' + _path + \ '&showempty=0&order=time&desc=1&_='+ t2 + \ '&bdstoken=' + bdstoken + "&app_id=250528" xml = fetch(url,{},utils.myname(),header,path) list_json = json.loads(xml.decode("utf-8")) if list_json: return list_json else: return None
def add_task(bdstoken,t_url,save_path,dia): header = { 'Content-Type':'application/x-www-form-urlencoded', 'Host':PAN_HOST, 'Referer':DISK_HOME, } url = CLOUD_DL + '?bdstoken=' + bdstoken + '&channel=chunlei&clienttype=0&web=1' post = { 'method':'add_task', 'app_id':'250528', 'source_url':t_url, 'save_path':save_path, 'type':'3', } xml = fetch(url,post,utils.myname(),header,save_path) j = json.loads(xml.decode("utf-8")) logger.debug("json: %s "% str(j)) if 'error_code' in list(j.keys()): logger.info(j['error_msg']) if j['error_code'] != 36022 : while 'vcode' in list(j.keys()): vcode = j['vcode'] logger.info(vcode) imgurl = j['img'] #f=open(vimg,"wb") #fp = fetch(imgurl,{},"Input Vcode") #f.write(fp) #f.close() #try: # subprocess.Popen(['xdg-open', vimg]) #except: # print("please open file %s to check the vcode."%vimg) #mag = re.search('(&.*$)',t_url).group(1) #task_name = dict(urllib.parse.parse_qsl(mag))['dn'] #logger.info("Please input vcode for task: %s ."%(task_name)) vd = VcodeDialog(dia,imgurl) vd.new_url(imgurl) response = vd.run() print(response) if response == 22: print("The OK button was clicked") vf = vd.get_user_input() vd.destroy() elif response == Gtk.ResponseType.DELETE_EVENT: vd.destroy() #input("verification code # ").strip() add = { 'file_sha1':'', 'selected_idx':'1,2,3,4', 'task_from':'0', 't':utils.tt(), 'type':4, 'input':vf, 'vcode':vcode, } print(add) post.update(add) xml = fetch(url,post,"TryWithVcode",header,save_path) j = json.loads(xml.decode("utf-8")) logger.debug("json: %s "% str(j)) if 'error_code' in list(j.keys()): logger.info(j['error_msg']) return j else: return j['error_msg'] logger.debug("json: %s "% str(j)) return j
def add_task(bdstoken, t_url, save_path, dia): header = { 'Content-Type': 'application/x-www-form-urlencoded', 'Host': PAN_HOST, 'Referer': DISK_HOME, } url = CLOUD_DL + '?bdstoken=' + bdstoken + '&channel=chunlei&clienttype=0&web=1' post = { 'method': 'add_task', 'app_id': '250528', 'source_url': t_url, 'save_path': save_path, 'type': '3', } xml = fetch(url, post, utils.myname(), header, save_path) j = json.loads(xml.decode("utf-8")) logger.debug("json: %s " % str(j)) if 'error_code' in list(j.keys()): logger.info(j['error_msg']) if j['error_code'] != 36022: while 'vcode' in list(j.keys()): vcode = j['vcode'] logger.info(vcode) imgurl = j['img'] #f=open(vimg,"wb") #fp = fetch(imgurl,{},"Input Vcode") #f.write(fp) #f.close() #try: # subprocess.Popen(['xdg-open', vimg]) #except: # print("please open file %s to check the vcode."%vimg) #mag = re.search('(&.*$)',t_url).group(1) #task_name = dict(urllib.parse.parse_qsl(mag))['dn'] #logger.info("Please input vcode for task: %s ."%(task_name)) vd = VcodeDialog(dia, imgurl) vd.new_url(imgurl) response = vd.run() print(response) if response == 22: print("The OK button was clicked") vf = vd.get_user_input() vd.destroy() elif response == Gtk.ResponseType.DELETE_EVENT: vd.destroy() #input("verification code # ").strip() add = { 'file_sha1': '', 'selected_idx': '1,2,3,4', 'task_from': '0', 't': utils.tt(), 'type': 4, 'input': vf, 'vcode': vcode, } print(add) post.update(add) xml = fetch(url, post, "TryWithVcode", header, save_path) j = json.loads(xml.decode("utf-8")) logger.debug("json: %s " % str(j)) if 'error_code' in list(j.keys()): logger.info(j['error_msg']) return j else: return j['error_msg'] logger.debug("json: %s " % str(j)) return j