baidu:fix download error issue twlz0ne/you-get#4

This commit is contained in:
gongqijian 2013-05-13 15:55:42 +08:00
parent 219ea4325a
commit a6d6ad7e94

View File

@ -4,6 +4,7 @@
__all__ = ['baidu_download'] __all__ = ['baidu_download']
from ..common import * from ..common import *
from .. import common
from urllib import parse from urllib import parse
@ -11,20 +12,23 @@ def baidu_get_song_html(sid):
return get_html('http://music.baidu.com/song/%s/download?__o=%%2Fsong%%2F%s' % (sid, sid), faker = True) return get_html('http://music.baidu.com/song/%s/download?__o=%%2Fsong%%2F%s' % (sid, sid), faker = True)
def baidu_get_song_url(html): def baidu_get_song_url(html):
return r1(r'<a href="/data/music/file\?link=(.*)" id="download"', html) return r1(r'downlink="/data/music/file\?link=(.+?)"', html)
def baidu_get_song_artist(html): def baidu_get_song_artist(html):
return r1(r'singer_name:"(.*)"', html) return r1(r'singer_name:"(.+?)"', html)
def baidu_get_song_album(html): def baidu_get_song_album(html):
return r1(r'ablum_name:"(.*)"', html) return r1(r'ablum_name:"(.+?)"', html)
def baidu_get_song_title(html): def baidu_get_song_title(html):
return r1(r'song_title:"(.*)"', html) return r1(r'song_title:"(.+?)"', html)
def baidu_download_lyric(sid, file_name, output_dir): def baidu_download_lyric(sid, file_name, output_dir):
if common.dry_run:
return
html = get_html('http://music.baidu.com/song/' + sid) html = get_html('http://music.baidu.com/song/' + sid)
href = r1(r'<a class="down-lrc-btn" data-lyricdata=\'{ "href":"(.*)" }\' href="#">', html) href = r1(r'<a class="down-lrc-btn" data-lyricdata=\'{ "href":"(.+?)" }\' href="#">', html)
if href: if href:
lrc = get_html('http://music.baidu.com' + href) lrc = get_html('http://music.baidu.com' + href)
if len(lrc) > 0: if len(lrc) > 0:
@ -46,10 +50,10 @@ def baidu_download_song(sid, output_dir = '.', merge = True, info_only = False):
def baidu_download_album(aid, output_dir = '.', merge = True, info_only = False): def baidu_download_album(aid, output_dir = '.', merge = True, info_only = False):
html = get_html('http://music.baidu.com/album/%s' % aid, faker = True) html = get_html('http://music.baidu.com/album/%s' % aid, faker = True)
album_name = r1(r'<h2 class="album-name">(.*)<\/h2>', html) album_name = r1(r'<h2 class="album-name">(.+?)<\/h2>', html)
artist = r1(r'<span class="author_list" title="(.*)">', html) artist = r1(r'<span class="author_list" title="(.+?)">', html)
output_dir = '%s/%s - %s' % (output_dir, artist, album_name) output_dir = '%s/%s - %s' % (output_dir, artist, album_name)
ids = json.loads(r1(r'<span class="album-add" data-adddata=\'(.*)\'>', html).replace('&quot', '').replace(';', '"'))['ids'] ids = json.loads(r1(r'<span class="album-add" data-adddata=\'(.+?)\'>', html).replace('&quot', '').replace(';', '"'))['ids']
track_nr = 1 track_nr = 1
for id in ids: for id in ids:
song_html = baidu_get_song_html(id) song_html = baidu_get_song_html(id)