#!/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有误,请检查!


Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐