From cd3e27bb64007407614a7fd05559f64aa61e883b Mon Sep 17 00:00:00 2001 From: jackyzy823 Date: Wed, 23 Jul 2014 23:53:56 +0800 Subject: [PATCH 1/5] fix support for pptv temp --- src/you_get/extractor/pptv.py | 125 ++++++++++++++++++++++++++++++++-- 1 file changed, 120 insertions(+), 5 deletions(-) diff --git a/src/you_get/extractor/pptv.py b/src/you_get/extractor/pptv.py index b1d45edf..15549b89 100644 --- a/src/you_get/extractor/pptv.py +++ b/src/you_get/extractor/pptv.py @@ -6,23 +6,138 @@ from ..common import * import re import urllib -import hashlib +# import hashlib +import time +from random import random + + +def constructKey(arg): + + def str2hex(s): + r="" + for i in s[:8]: + t=hex(ord(i))[2:] + if len(t)==1: + t="0"+t + r+=t + for i in range(16): + r+=hex(int(15*random()))[2:] + return r + + #ABANDONED Because SERVER_KEY is static + def getkey(s): + #returns 1896220160 + l2=[i for i in s] + l4=0 + l3=0 + while l4>> in as3 + if k>=0: + return k>>b + elif k<0: + return (2**32+k)>>b + pass + + def lot(k,b): + return (k<([^<>]+)', xml) - key = r1(r']+>([^<>]+)', xml) + k = r1(r']+>([^<>]+)', xml) rid = r1(r'rid="([^"]+)"', xml) title = r1(r'nm="([^"]+)"', xml) + + st=r1(r'([^<>]+)',xml)[:-4] + st=time.mktime(time.strptime(st))*1000-60*1000-time.time()*1000 + st+=time.time()*1000 + st=st/1000 + + key=constructKey(st) + pieces = re.findall(']+fs="(\d+)"', xml) numbers, fs = zip(*pieces) - urls = ['http://%s/%s/%s?k=%s' % (host, i, rid, key) for i in numbers] + urls=[ "http://ccf.pptv.com/{}/{}?key={}&fpp.ver=1.3.0.4&k={}&type=web.fpp".format(i,rid,key,k) for i in range(max(map(int,numbers))+1)] + print(urls) + # urls = ['http://%s/%s/%s?k=%s' % (host, i, rid, key) for i in numbers] total_size = sum(map(int, fs)) assert rid.endswith('.mp4') - print_info(site_info, title, 'mp4', total_size) if not info_only: - download_urls(urls, title, 'mp4', total_size, output_dir = output_dir, merge = merge) + download_urls([urls], title, 'mp4', total_size, output_dir = output_dir, merge = merge) def pptv_download(url, output_dir = '.', merge = True, info_only = False): assert re.match(r'http://v.pptv.com/show/(\w+)\.html$', url) From 87f6b5afb16b1b1cf4baa89923080e534971e683 Mon Sep 17 00:00:00 2001 From: jackyzy823 Date: Wed, 23 Jul 2014 23:55:47 +0800 Subject: [PATCH 2/5] fix pptv --- src/you_get/extractor/pptv.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/you_get/extractor/pptv.py b/src/you_get/extractor/pptv.py index 15549b89..07ab04dc 100644 --- a/src/you_get/extractor/pptv.py +++ b/src/you_get/extractor/pptv.py @@ -137,7 +137,7 @@ def pptv_download_by_id(id, title = None, output_dir = '.', merge = True, info_o assert rid.endswith('.mp4') print_info(site_info, title, 'mp4', total_size) if not info_only: - download_urls([urls], title, 'mp4', total_size, output_dir = output_dir, merge = merge) + download_urls(urls, title, 'mp4', total_size, output_dir = output_dir, merge = merge) def pptv_download(url, output_dir = '.', merge = True, info_only = False): assert re.match(r'http://v.pptv.com/show/(\w+)\.html$', url) From 2bd4b7213d649967c1e6992aaa06885fa959ccf7 Mon Sep 17 00:00:00 2001 From: jackyzy823 Date: Wed, 23 Jul 2014 23:56:22 +0800 Subject: [PATCH 3/5] some changes --- src/you_get/extractor/pptv.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/you_get/extractor/pptv.py b/src/you_get/extractor/pptv.py index 07ab04dc..7c8279b7 100644 --- a/src/you_get/extractor/pptv.py +++ b/src/you_get/extractor/pptv.py @@ -131,8 +131,7 @@ def pptv_download_by_id(id, title = None, output_dir = '.', merge = True, info_o pieces = re.findall(']+fs="(\d+)"', xml) numbers, fs = zip(*pieces) urls=[ "http://ccf.pptv.com/{}/{}?key={}&fpp.ver=1.3.0.4&k={}&type=web.fpp".format(i,rid,key,k) for i in range(max(map(int,numbers))+1)] - print(urls) - # urls = ['http://%s/%s/%s?k=%s' % (host, i, rid, key) for i in numbers] + total_size = sum(map(int, fs)) assert rid.endswith('.mp4') print_info(site_info, title, 'mp4', total_size) From 3eb787471147ef7c0737363e94e45d891c3c320d Mon Sep 17 00:00:00 2001 From: jackyzy823 Date: Thu, 24 Jul 2014 00:01:26 +0800 Subject: [PATCH 4/5] some changes --- src/you_get/extractor/pptv.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/you_get/extractor/pptv.py b/src/you_get/extractor/pptv.py index 7c8279b7..105f88e6 100644 --- a/src/you_get/extractor/pptv.py +++ b/src/you_get/extractor/pptv.py @@ -5,8 +5,6 @@ __all__ = ['pptv_download', 'pptv_download_by_id'] from ..common import * import re -import urllib -# import hashlib import time from random import random From 272fd8887950bb2305e28cb546203556367f999c Mon Sep 17 00:00:00 2001 From: jackyzy823 Date: Thu, 24 Jul 2014 00:37:56 +0800 Subject: [PATCH 5/5] fix key expired --- src/you_get/extractors/pptv.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/you_get/extractors/pptv.py b/src/you_get/extractors/pptv.py index 105f88e6..17e146ac 100644 --- a/src/you_get/extractors/pptv.py +++ b/src/you_get/extractors/pptv.py @@ -6,6 +6,7 @@ from ..common import * import re import time +import urllib from random import random @@ -133,8 +134,13 @@ def pptv_download_by_id(id, title = None, output_dir = '.', merge = True, info_o total_size = sum(map(int, fs)) assert rid.endswith('.mp4') print_info(site_info, title, 'mp4', total_size) + if not info_only: - download_urls(urls, title, 'mp4', total_size, output_dir = output_dir, merge = merge) + try: + download_urls(urls, title, 'mp4', total_size, output_dir = output_dir, merge = merge) + except urllib.error.HTTPError: + #for key expired + pptv_download_by_id(id, output_dir = output_dir, merge = merge, info_only = info_only) def pptv_download(url, output_dir = '.', merge = True, info_only = False): assert re.match(r'http://v.pptv.com/show/(\w+)\.html$', url)