From 651e472f3b4f275e3445751825c60fa4977cbd90 Mon Sep 17 00:00:00 2001 From: cnbeining Date: Mon, 26 Oct 2015 01:34:22 -0400 Subject: [PATCH] [dilidili] Add support --- README.md | 1 + src/you_get/common.py | 1 + src/you_get/extractors/__init__.py | 1 + src/you_get/extractors/dilidili.py | 65 ++++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+) create mode 100644 src/you_get/extractors/dilidili.py diff --git a/README.md b/README.md index 99fa1283..303346e5 100644 --- a/README.md +++ b/README.md @@ -335,6 +335,7 @@ Use `--url`/`-u` to get a list of downloadable resource URLs extracted from the | **Baidu
百度贴吧** | |✓|✓| | | 爆米花网 | |✓| | | | **bilibili
哔哩哔哩** | |✓| | | +| Dilidili | |✓| | | | 豆瓣 | | | |✓| | 斗鱼 | |✓| | | | 凤凰视频 | |✓| | | diff --git a/src/you_get/common.py b/src/you_get/common.py index d0df4c65..5ee03631 100755 --- a/src/you_get/common.py +++ b/src/you_get/common.py @@ -12,6 +12,7 @@ SITES = { 'cntv' : 'cntv', 'cbs' : 'cbs', 'dailymotion': 'dailymotion', + 'dilidili' : 'dilidili', 'dongting' : 'dongting', 'douban' : 'douban', 'douyutv' : 'douyutv', diff --git a/src/you_get/extractors/__init__.py b/src/you_get/extractors/__init__.py index 147d57d2..d78a111e 100755 --- a/src/you_get/extractors/__init__.py +++ b/src/you_get/extractors/__init__.py @@ -9,6 +9,7 @@ from .bilibili import * from .cbs import * from .cntv import * from .dailymotion import * +from .dilidili import * from .douban import * from .douyutv import * from .ehow import * diff --git a/src/you_get/extractors/dilidili.py b/src/you_get/extractors/dilidili.py new file mode 100644 index 00000000..1c5340a6 --- /dev/null +++ b/src/you_get/extractors/dilidili.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python + +__all__ = ['dilidili_download'] + +from ..common import * + +#---------------------------------------------------------------------- +def dilidili_parser_data_to_stream_types(typ ,vid ,hd2 ,sign): + """->list""" + parse_url = 'http://player.005.tv/parse.php?xmlurl=null&type={typ}&vid={vid}&hd={hd2}&sign={sign}'.format(typ = typ, vid = vid, hd2 = hd2, sign = sign) + html = get_html(parse_url) + + info = re.search(r'(\{[^{]+\})(\{[^{]+\})(\{[^{]+\})(\{[^{]+\})(\{[^{]+\})', html).groups() + info = [i.strip('{}').split('->') for i in info] + info = {i[0]: i [1] for i in info} + + stream_types = [] + for i in zip(info['deft'].split('|'), info['defa'].split('|')): + stream_types.append({'id': str(i[1][-1]), 'container': 'mp4', 'video_profile': i[0]}) + return stream_types + +#---------------------------------------------------------------------- +def dilidili_parser_data_to_download_url(typ ,vid ,hd2 ,sign): + """->str""" + parse_url = 'http://player.005.tv/parse.php?xmlurl=null&type={typ}&vid={vid}&hd={hd2}&sign={sign}'.format(typ = typ, vid = vid, hd2 = hd2, sign = sign) + html = get_html(parse_url) + + return match1(html, r'') + +#---------------------------------------------------------------------- +def dilidili_download(url, output_dir = '.', merge = False, info_only = False, **kwargs): + if re.match(r'http://www.dilidili.com/watch/\w+', url): + html = get_html(url) + title = match1(html, r'(.+)丨(.+)') #title + + # player loaded via internal iframe + frame_url = re.search(r'