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有误,请检查!
# -*- 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有误,请检查!
相关文章推荐
- 【详解】Python统一解密
- [python 补充] _winreg
- 帮你提升 Python 的 27 种编程语言
- python通过SNMP协议收集服务器监控信息(安装、配置、示例)
- day2 python学习随笔
- python数组排序
- python 实现单例模式
- 在Ubuntu 14.04.3上安装python中的paramiko模块
- python实现分布式进程
- python IDLE 改变窗口背景颜色
- windows下python SSH-Client模块paramiko的安装与修改
- 从零开始机器学习实战1---python安装
- 关于Python类中的各种变量
- PEP8 Python 编码规范整理
- python 总结之 repr函数
- 王亟亟的Python学习之路(五)-dictionary,set,函数,函数参数
- 王亟亟的Python学习之路(五)-dictionary,set,函数,函数参数
- Python Imaging Library
- Python正则表达式指南
- windows下python开发环境搭建