您的位置:首页 > 编程语言 > Python开发

Python 3 转换真实、迅雷、QQ旋风下载地址

2015-11-03 18:38 756 查看
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 真实、迅雷、QQ旋风下载地址之间的转换
import base64
import urllib
import re

__Author__ = "LostInNight"

'''
原理:
迅雷下载地址:"thunder://"+Base64编码("AA"+"真实地址"+"ZZ")
QQ旋风下载地址:"qqdl://"+Base64编码("真实地址")
'''

#############
# 常量定义区 #
#############
THUNDER_HEADER = "thunder://"
THUNDER_PREFIX = "AA"
THUNDER_SUFFIX = "ZZ"
QQ_HEADER = "qqdl://"
ERROR = "传入的URL有误,请检查!"

# 判断url是否有效
def checkUrl(func):
def wrapper(url):
if re.match(r"(http|https|ftp|ed2k|thunder|qqdl)://", url):
return func(url)
else:
return ERROR
return wrapper

@checkUrl
def real2QQ(url):
url = base64.b64encode(url.encode("utf-8"))
url = QQ_HEADER + url.decode("utf-8")
return url

@checkUrl
def qq2Real(url):
url = url[len(QQ_HEADER):]
url = base64.b64decode(url.encode("utf-8"))
url = url.decode("utf-8")
return url

@checkUrl
def real2Thunder(url):
url = THUNDER_PREFIX + url + THUNDER_SUFFIX
url = base64.b64encode(url.encode("utf-8"))
url = THUNDER_HEADER + url.decode("utf-8")
return url

@checkUrl
def thunder2Real(url):
url = url[len(THUNDER_HEADER):]
url = base64.b64decode(url.encode("utf-8"))
url = url.decode("utf-8")
url = url[len(THUNDER_PREFIX):-len(THUNDER_SUFFIX)]
return url

@checkUrl
def qq2Thunder(url):
return real2Thunder(qq2Real(url))

@checkUrl
def thunder2QQ(url):
return real2QQ(thunder2Real(url))

if __name__ == "__main__":
# 测试用,SuperGirl第一季第2集下载地址:
url_1 = r'ed2k://|file|Supergirl.S01E02.720p.HDTV.X264-DIMENSION.mkv|947617048|5D430BBD720C13598D867C3424B50B8D|h=2AG3ZXRLCWNGC4K5WFNC4QOMVDSXWBBM|/'
url_2 = r'd2k://|file|Supergirl.S01E02.720p.HDTV.X264-DIMENSION.mkv|947617048|5D430BBD720C13598D867C3424B50B8D|h=2AG3ZXRLCWNGC4K5WFNC4QOMVDSXWBBM|/'
print(real2QQ(url_1))
print(thunder2QQ(real2Thunder(url_1)))
print(real2QQ(url_2))


输出:
qqdl://ZWQyazovL3xmaWxlfFN1cGVyZ2lybC5TMDFFMDIuNzIwcC5IRFRWLlgyNjQtRElNRU5TSU9OLm1rdnw5NDc2MTcwNDh8NUQ0MzBCQkQ3MjBDMTM1OThEODY3QzM0MjRCNTBCOER8aD0yQUczWlhSTENXTkdDNEs1V0ZOQzRRT01WRFNYV0JCTXwv
qqdl://ZWQyazovL3xmaWxlfFN1cGVyZ2lybC5TMDFFMDIuNzIwcC5IRFRWLlgyNjQtRElNRU5TSU9OLm1rdnw5NDc2MTcwNDh8NUQ0MzBCQkQ3MjBDMTM1OThEODY3QzM0MjRCNTBCOER8aD0yQUczWlhSTENXTkdDNEs1V0ZOQzRRT01WRFNYV0JCTXwv
传入的URL有误,请检查!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: