-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy path下载地址转换.py
87 lines (65 loc) · 2.03 KB
/
下载地址转换.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: LostInNight
# @Date: 2015-11-03 18:47:47
# @Last Modified by: LostInNight
# @Last Modified time: 2015-11-19 15:45:56
# 真实、迅雷、QQ旋风下载地址之间的转换
import base64
import re
'''
原理:
迅雷下载地址:"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__":
# 测试用
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))