From 65335652ee8d01f17a193ed160624a7ae2358cb3 Mon Sep 17 00:00:00 2001 From: chliny Date: Thu, 26 Sep 2013 17:22:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86ctrl+d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ xfdown.py | 84 ++++++++++++++++++++++++++++++++++++------------------ 2 files changed, 58 insertions(+), 28 deletions(-) diff --git a/.gitignore b/.gitignore index 871bb87..a0a8cda 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ cookie +*.pyc +tags diff --git a/xfdown.py b/xfdown.py index 855ab0a..deed7b4 100755 --- a/xfdown.py +++ b/xfdown.py @@ -88,6 +88,7 @@ def __preprocess(self,password=None,verifycode=None,hashpasswd=None): if sys.version_info >= (3,0): H = self.__md5(I + bytes(verifycode[2],encoding="ISO-8859-1")) else: + print I+verifycode[2] H = self.__md5(I + verifycode[2]) G = self.__md5(H + verifycode[1].upper()) @@ -96,7 +97,7 @@ def __preprocess(self,password=None,verifycode=None,hashpasswd=None): def __md5(self,item): if sys.version_info >= (3,0): try: - item=item.encode("u8") + item=item.encode("utf8") except: pass return hashlib.md5(item).hexdigest().upper() @@ -219,7 +220,7 @@ def __getlist(self): urlv = 'http://lixian.qq.com/handler/lixian/get_lixian_list.php' res = self.__request(urlv,{}) res = json.JSONDecoder().decode(res) - if res["msg"]==_('未登录!'): + if res is None or res["msg"]==_('未登录!'): res=json.JSONDecoder().decode(self.__getlogin()) if res["msg"]==_('未登录!'): self.__Login() @@ -350,32 +351,56 @@ def __addtask(self): url = self._addurl filename=self.getfilename_url(url) if os.path.isfile(url): - filesize=os.path.getsize(filename) - orisize = filesize - dw=["B","K","M","G"] - for i in range(4): - _dw=dw[i] - if filesize>=1024: - filesize=filesize/1024 - else: - break - filesize="%.1f%s"%(filesize,_dw) - filecontent = open(filename,'rb').read() - hash = self.__md5(filecontent) - - data={"name":"myfile",\ - "ret":0,\ - "hash":hash,\ - "files":[{"file_name":filename,\ - "file_size":filesize,\ - "file_size_ori":orisize,\ - "file_index":0,\ - }] + import bencode + from poster.encode import multipart_encode + from poster.streaminghttp import register_openers + + + infodict = bencode.bdecode(open(url).read()) + btfilename = infodict['info']['name'] + btfilesize = infodict['info']['length'] + btfilecontent = infodict['info']['pieces'] + bthash = hashlib.sha1(btfilecontent).hexdigest().upper() + print bthash + + #fileinfo = json.dumps(infodict,ensure_ascii=False) + fileinfo = open(url,'rb').read() + #print type(fileinfo['info']['pieces']) + #fileinfo['info']['pieces'] = fileinfo['info']['pieces'].encode('utf8') + data1={"name":"myfile",\ + "Content-Disposition":"form-data",\ + "filename":filename,\ + "Content-Type":"application/x-bittorrent",\ + "myfile":fileinfo,\ + } + data1={"myfile":fileinfo} + #print data1 + data2={"cmd":"add_bt_task",\ + "filename":btfilename,\ + "filesize":btfilesize,\ + "hash":bthash,\ + "index":"0",\ + "taskname":btfilename,\ + "r":random.random() } - print data - urlv="http://lixian.qq.com/handler/bt_handler.php?cmd=readinfo" - str = self.__request(urlv,data) - print str + + urlv1="http://lixian.qq.com/handler/bt_handler.php?cmd=readinfo" + #istr = self.__request(urlv1,data1) + + #cookieOpener = request.build_opener(request.HTTPCookieProcessor(cookiejar.MozillaCookieJar(self.__cookiepath))) + #request.install_opener(cookieOpener) + + register_openers() + datagen, headers = multipart_encode([("#task_new_bt",open(url))]) + req = request.Request(urlv1,datagen,headers) + #urlopener = request.urlopen(req) + #istr = urlopener.read() + print istr + #print urlopener + + urlv2="http://lixian.qq.com/handler/xfjson2012.php" + #istr = self.__request(urlv2,data2) + #print istr else: data={"down_link":url,\ "filename":filename,\ @@ -473,7 +498,7 @@ def usage(): try: xf = XF() if not hasattr(xf,"_downpath"): - xf._downpath = os.path.expanduser("~/Download") + xf._downpath = os.path.expanduser("~/Video/") os.makedirs(xf._downpath) if not os.path.exists(xf._downpath) else None opts, args = getopt.getopt(sys.argv[1:], "hd:p:A:", ["help", "downloaddir=","player=","add="]) @@ -494,6 +519,9 @@ def usage(): except KeyboardInterrupt: print (" exit now.") sys.exit(2) +except EOFError: + print (" exit now.") + sys.exit(2) except getopt.GetoptError as err: print(err) usage()