diff --git a/README.md b/README.md index 0e4fa5ad..46bf5fd0 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,7 @@ Fork me on GitHub: * NetEase (网易视频) * NetEase Music (网易云音乐) * PPTV +* QianMo (阡陌视频) * QQ (腾讯视频) * Sina (新浪视频) * Sohu (搜狐视频) diff --git a/src/you_get/common.py b/src/you_get/common.py index 3cb72805..ed305518 100755 --- a/src/you_get/common.py +++ b/src/you_get/common.py @@ -922,7 +922,7 @@ def script_main(script_name, download, download_playlist = None): sys.exit(1) def url_to_module(url): - from .extractors import netease, w56, acfun, baidu, baomihua, bilibili, blip, catfun, cntv, cbs, coursera, dailymotion, dongting, douban, douyutv, ehow, facebook, freesound, google, sina, ifeng, alive, instagram, iqiyi, joy, jpopsuki, khan, ku6, kugou, kuwo, letv, lizhi, magisto, miomio, mixcloud, mtv81, nicovideo, pptv, qq, sohu, songtaste, soundcloud, ted, theplatform, tudou, tucao, tumblr, twitter, vid48, videobam, vidto, vimeo, vine, vk, xiami, yinyuetai, youku, youtube, zhanqi + from .extractors import netease, w56, acfun, baidu, baomihua, bilibili, blip, catfun, cntv, cbs, coursera, dailymotion, dongting, douban, douyutv, ehow, facebook, freesound, google, sina, ifeng, alive, instagram, iqiyi, joy, jpopsuki, khan, ku6, kugou, kuwo, letv, lizhi, magisto, miomio, mixcloud, mtv81, nicovideo, pptv, qianmo, qq, sohu, songtaste, soundcloud, ted, theplatform, tudou, tucao, tumblr, twitter, vid48, videobam, vidto, vimeo, vine, vk, xiami, yinyuetai, youku, youtube, zhanqi video_host = r1(r'https?://([^/]+)/', url) video_url = r1(r'https?://[^/]+(.*)', url) @@ -974,6 +974,7 @@ def url_to_module(url): 'mtv81': mtv81, 'nicovideo': nicovideo, 'pptv': pptv, + 'qianmo':qianmo, 'qq': qq, 'sina': sina, 'smgbb': bilibili, diff --git a/src/you_get/extractors/__init__.py b/src/you_get/extractors/__init__.py old mode 100644 new mode 100755 index 9dcfdb30..5abc0d8c --- a/src/you_get/extractors/__init__.py +++ b/src/you_get/extractors/__init__.py @@ -33,6 +33,7 @@ from .mtv81 import * from .netease import * from .nicovideo import * from .pptv import * +from .qianmo import * from .qq import * from .sina import * from .sohu import * diff --git a/src/you_get/extractors/iqiyi.py b/src/you_get/extractors/iqiyi.py index 1fe85338..b1fc5deb 100644 --- a/src/you_get/extractors/iqiyi.py +++ b/src/you_get/extractors/iqiyi.py @@ -12,6 +12,15 @@ import hashlib ''' Changelog: +-> http://www.iqiyi.com/common/flashplayer/20150810/MainPlayer_5_2_26_c3_3_7_1.swf + http://www.iqiyi.com/common/flashplayer/20150811/MainPlayer_5_2_26_c3_3_7_2.swf + http://www.iqiyi.com/common/flashplayer/20150820/MainPlayer_5_2_27_2_c3_3_7_3.swf + some small changes in Zombie.bite function + +-> http://www.iqiyi.com/common/flashplayer/20150805/MainPlayer_5_2_26_c3_3_7.swf + former key still works until 20150809 + In Zombie kcuf = [13, 3, 0, 15, 8, 2, 11, 7, 10, 1, 12, 9, 14, 6, 4, 5] ,which is construct in LogManager,CoreManager,impls.pub.setting,impls.pub.statistics,StageVideoManager + thd create a array of ['2', 'd', 'f', 'e', '0', 'c', '5', '3', '8', 'b', '9', '6', 'a', '7', '4', '1'] -> http://www.iqiyi.com/common/flashplayer/20150710/MainPlayer_5_2_25_c3_3_5_1.swf -> http://www.iqiyi.com/common/flashplayer/20150703/MainPlayer_5_2_24_1_c3_3_3.swf @@ -20,11 +29,6 @@ Changelog: -> http://www.iqiyi.com/common/flashplayer/20150618/MainPlayer_5_2_24_1_c3_3_2.swf In this version Z7elzzup.cexe,just use node.js to run this code(with some modification) and get innerkey. --> http://www.iqiyi.com/common/flashplayer/20150612/MainPlayer_5_2_23_1_c3_2_6_5.swf - In this version do not directly use enc key - gen enc key (so called sc ) in DMEmagelzzup.mix(tvid) -> (tm->getTimer(),src='hsalf',sc) - encrypy alogrithm is md5(DMEmagelzzup.mix.genInnerKey +tm+tvid) - how to gen genInnerKey ,can see first 3 lin in mix function in this file ''' ''' @@ -43,9 +47,9 @@ bid meaning for quality def mix(tvid): enc = [] - enc.append('8e29ab5666d041c3a1ea76e06dabdffb') + enc.append('3cba91f1453145438ac5e4f5983bc086') tm = str(randint(2000,4000)) - src = 'hsalf' + src = 'eknas' enc.append(str(tm)) enc.append(tvid) sc = hashlib.new('md5',bytes("".join(enc),'utf-8')).hexdigest() @@ -81,7 +85,7 @@ def getVMS(tvid,vid,uid): vmsreq='http://cache.video.qiyi.com/vms?key=fvip&src=1702633101b340d8917a69cf8a4b8c7' +\ "&tvId="+tvid+"&vid="+vid+"&vinfo=1&tm="+tm+\ "&enc="+sc+\ - "&qyid="+uid+"&tn="+str(random()) +"&um=0" +\ + "&qyid="+uid+"&tn="+str(random()) +"&um=1" +\ "&authkey="+hashlib.new('md5',bytes(''+str(tm)+tvid,'utf-8')).hexdigest() return json.loads(get_content(vmsreq)) @@ -92,7 +96,7 @@ def getDispathKey(rid): return hashlib.new("md5",bytes(t+tp+rid,"utf-8")).hexdigest() -def iqiyi_download(url, output_dir = '.', merge = True, info_only = False): +def iqiyi_download(url, output_dir = '.', merge = True, info_only = False, **kwargs): gen_uid=uuid4().hex html = get_html(url) diff --git a/src/you_get/extractors/qianmo.py b/src/you_get/extractors/qianmo.py new file mode 100644 index 00000000..cec8a14a --- /dev/null +++ b/src/you_get/extractors/qianmo.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python + +__all__ = ['qianmo_download'] + +from ..common import * +import urllib.error +import json + +def qianmo_download(url, output_dir = '.', merge = False, info_only = False): + if re.match(r'http://qianmo.com/\w+', url): + html = get_html(url) + match = re.search(r'(.+?)var video =(.+?);', html) + + if match: + video_info_json = json.loads(match.group(2)) + title = video_info_json['title'] + ext_video_id = video_info_json['ext_video_id'] + + html = get_content('http://v.qianmo.com/player/{ext_video_id}'.format(ext_video_id = ext_video_id)) + c = json.loads(html) + url_list = [] + for i in c['seg']: #Cannot do list comprehensions + for a in c['seg'][i]: + for b in a['url']: + url_list.append(b[0]) + + type_ = '' + size = 0 + for url in url_list: + _, type_, temp = url_info(url) + size += temp + + type, ext, size = url_info(url) + print_info(site_info, title, type_, size) + if not info_only: + download_urls(url_list, title, type_, total_size=None, output_dir=output_dir, merge=merge) + +site_info = "qianmo" +download = qianmo_download +download_playlist = playlist_not_supported('qianmo') \ No newline at end of file