From d152c3e78d59e7ce9ac2d3dc8a61c84d5af1ac4b Mon Sep 17 00:00:00 2001 From: lilydjwg Date: Sun, 14 Sep 2014 16:13:29 +0800 Subject: [PATCH] =?UTF-8?q?add=20Dongting=20(=E5=A4=A9=E5=A4=A9=E5=8A=A8?= =?UTF-8?q?=E5=90=AC)=20support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit example URL: http://www.dongting.com/?song_id=281575 --- src/you_get/common.py | 13 ++++++++- src/you_get/extractors/dongting.py | 45 ++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 src/you_get/extractors/dongting.py diff --git a/src/you_get/common.py b/src/you_get/common.py index ef62a34a..9875f8fb 100644 --- a/src/you_get/common.py +++ b/src/you_get/common.py @@ -928,7 +928,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, bilibili, blip, catfun, cntv, cbs, coursera, dailymotion, douban, ehow, facebook, freesound, google, sina, ifeng, alive, instagram, iqiyi, joy, jpopsuki, khan, ku6, kugou, kuwo, letv, magisto, miomio, mixcloud, mtv81, nicovideo, pptv, qq, sohu, songtaste, soundcloud, ted, theplatform, tudou, tucao, tumblr, vid48, videobam, vimeo, vine, vk, xiami, yinyuetai, youku, youtube + from .extractors import netease, w56, acfun, baidu, bilibili, blip, catfun, cntv, cbs, coursera, dailymotion, dongting, douban, ehow, facebook, freesound, google, sina, ifeng, alive, instagram, iqiyi, joy, jpopsuki, khan, ku6, kugou, kuwo, letv, magisto, miomio, mixcloud, mtv81, nicovideo, pptv, qq, sohu, songtaste, soundcloud, ted, theplatform, tudou, tucao, tumblr, vid48, videobam, vimeo, vine, vk, xiami, yinyuetai, youku, youtube video_host = r1(r'https?://([^/]+)/', url) video_url = r1(r'https?://[^/]+(.*)', url) @@ -952,6 +952,7 @@ def url_to_module(url): 'cbs': cbs, 'coursera': coursera, 'dailymotion': dailymotion, + 'dongting': dongting, 'douban': douban, 'ehow': ehow, 'facebook': facebook, @@ -1021,3 +1022,13 @@ def any_download_playlist(url, **kwargs): def main(): script_main('you-get', any_download, any_download_playlist) + +_unit_prefixes = 'bkmg' + +def parse_size(size): + m = re.match(r'([\d.]+)(.(?:i?B)?)', size, re.I) + if m: + return int(float(m.group(1)) * 1024 ** + _unit_prefixes.index(m.group(2).lower())) + else: + return 0 diff --git a/src/you_get/extractors/dongting.py b/src/you_get/extractors/dongting.py new file mode 100644 index 00000000..381e8575 --- /dev/null +++ b/src/you_get/extractors/dongting.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- + +__all__ = ['dongting_download'] + +from ..common import * + +def dongting_download_lyric(lrc_url, file_name, output_dir): + j = get_html(lrc_url) + info = json.loads(j) + lrc = j['data']['lrc'] + filename = get_filename(file_name) + with open(output_dir + "/" + filename + '.lrc', 'w', encoding='utf-8') as x: + x.write(lrc) + +def dongting_download_song(sid, output_dir = '.', merge = True, info_only = False): + j = get_html('http://ting.hotchanson.com/detail.do?neid=%s&size=0' % sid) + info = json.loads(j) + + song_title = info['data']['songName'] + album_name = info['data']['albumName'] + artist = info['data']['singerName'] + ext = 'mp3' + size = parse_size(info['data']['itemList'][-1]['size']) + url = info['data']['itemList'][-1]['downUrl'] + + print_info(site_info, song_title, ext, size) + if not info_only: + file_name = "%s - %s - %s" % (song_title, album_name, artist) + download_urls([url], file_name, ext, size, output_dir, merge = merge) + lrc_url = ('http://lp.music.ttpod.com/lrc/down?' + 'lrcid=&artist=%s&title=%s') % ( + parse.quote(artist), parse.quote(song_title)) + try: + dongting_download_lyric(lrc_url, file_name, output_dir) + except: + pass + +def dongting_download(url, output_dir = '.', stream_type = None, merge = True, info_only = False): + if re.match('http://www.dongting.com/\?song_id=\d+', url): + id = r1(r'http://www.dongting.com/\?song_id=(\d+)', url) + dongting_download_song(id, output_dir, merge, info_only) + +site_info = "Dongting.com" +download = dongting_download +download_playlist = playlist_not_supported("dongting")