From bc759b0a27ac24ac3cb6fc444fc9f75c29271f3a Mon Sep 17 00:00:00 2001 From: Mort Yao Date: Sun, 28 Apr 2013 22:22:07 +0200 Subject: [PATCH 1/6] add ffmpeg_concat_mp4_to_mp4 --- src/you_get/common.py | 4 ++-- src/you_get/processor/ffmpeg.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/you_get/common.py b/src/you_get/common.py index 12b3c73a..a22e1655 100644 --- a/src/you_get/common.py +++ b/src/you_get/common.py @@ -444,8 +444,8 @@ def download_urls(urls, title, ext, total_size, output_dir = '.', refer = None, except: from .processor.ffmpeg import has_ffmpeg_installed if has_ffmpeg_installed(): - from .processor.ffmpeg import ffmpeg_concat_mp4_to_mpg - ffmpeg_concat_mp4_to_mpg(parts, os.path.join(output_dir, title + '.mp4')) + from .processor.ffmpeg import ffmpeg_concat_mp4_to_mp4 + ffmpeg_concat_mp4_to_mp4(parts, os.path.join(output_dir, title + '.mp4')) for part in parts: os.remove(part) else: diff --git a/src/you_get/processor/ffmpeg.py b/src/you_get/processor/ffmpeg.py index 0d6c309a..e2106f60 100644 --- a/src/you_get/processor/ffmpeg.py +++ b/src/you_get/processor/ffmpeg.py @@ -96,3 +96,31 @@ def ffmpeg_concat_flv_to_mp4(files, output = 'output.mp4'): return True else: raise + +def ffmpeg_concat_mp4_to_mp4(files, output = 'output.mp4'): + for file in files: + if os.path.isfile(file): + params = [FFMPEG, '-i'] + params.append(file) + params += ['-c', 'copy', '-f', 'mpegts', '-bsf:v', 'h264_mp4toannexb'] + params.append(file + '.ts') + + subprocess.call(params) + + params = [FFMPEG, '-i'] + params.append('concat:') + for file in files: + f = file + '.ts' + if os.path.isfile(f): + params[-1] += f + '|' + if FFMPEG == 'avconv': + params += ['-c', 'copy', output] + else: + params += ['-c', 'copy', '-absf', 'aac_adtstoasc', output] + + if subprocess.call(params) == 0: + for file in files: + os.remove(file + '.ts') + return True + else: + raise From ce93c9ab774a088b2c1ff048005447b18b329aef Mon Sep 17 00:00:00 2001 From: "zhuhuotui[codepongo]" Date: Mon, 29 Apr 2013 09:53:13 +0800 Subject: [PATCH 2/6] download album cover pic in xiami --- src/you_get/downloader/xiami.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/you_get/downloader/xiami.py b/src/you_get/downloader/xiami.py index 42f6b754..937893f3 100644 --- a/src/you_get/downloader/xiami.py +++ b/src/you_get/downloader/xiami.py @@ -33,6 +33,15 @@ def xiami_download_lyric(lrc_url, file_name, output_dir): with open(output_dir + "/" + file_name.replace('/', '-') + '.lrc', 'w', encoding='utf-8') as x: x.write(lrc) +def xiami_download_pic(pic_url, file_name, output_dir): + pic_url = pic_url.replace('_1', '') + pos = pic_url.rfind('.') + ext = pic_url[pos:] + pic = get_response(pic_url, faker = True).data + if len(pic) > 0: + with open(output_dir + "/" + file_name.replace('/', '-') + ext, 'wb') as x: + x.write(pic) + def xiami_download_song(sid, output_dir = '.', merge = True, info_only = False): xml = get_html('http://www.xiami.com/song/playlist/id/%s/object_name/default/object_id/0' % sid, faker = True) doc = parseString(xml) @@ -87,10 +96,13 @@ def xiami_download_album(aid, output_dir = '.', merge = True, info_only = False) output_dir = output_dir + "/%s - %s" % (artist, album_name) tracks = doc.getElementsByTagName("track") track_nr = 1 + pic_exist = False for i in tracks: song_title = i.getElementsByTagName("title")[0].firstChild.nodeValue url = location_dec(i.getElementsByTagName("location")[0].firstChild.nodeValue) lrc_url = i.getElementsByTagName("lyric")[0].firstChild.nodeValue + if not pic_exist: + pic_url = i.getElementsByTagName("pic")[0].firstChild.nodeValue type, ext, size = url_info(url, faker = True) if not ext: ext = 'mp3' @@ -100,6 +112,9 @@ def xiami_download_album(aid, output_dir = '.', merge = True, info_only = False) file_name = "%02d.%s" % (track_nr, song_title) download_urls([url], file_name, ext, size, output_dir, merge = merge, faker = True) xiami_download_lyric(lrc_url, file_name, output_dir) + if not pic_exist: + xiami_download_pic(pic_url, 'cover', output_dir) + pic_exist = True track_nr += 1 From 8c7fe151b1622102a44ef942b851ec85fae63ff6 Mon Sep 17 00:00:00 2001 From: Terry Yin Date: Thu, 2 May 2013 23:05:18 +0800 Subject: [PATCH 3/6] wrong number of argument for string format --- src/you_get/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/you_get/common.py b/src/you_get/common.py index a22e1655..7f708511 100644 --- a/src/you_get/common.py +++ b/src/you_get/common.py @@ -235,7 +235,7 @@ def url_save(url, filepath, bar, refer = None, is_part = False, faker = False): if bar: bar.update_received(len(buffer)) - assert received == os.path.getsize(temp_filepath), '%s == %s == %s' % (received, os.path.getsize(temp_filepath)) + assert received == os.path.getsize(temp_filepath), '%s == %s == %s' % (received, os.path.getsize(temp_filepath), temp_filepath) if os.access(filepath, os.W_OK): os.remove(filepath) # on Windows rename could fail if destination filepath exists From c7569fff4def36d1741062f92ed3f4d382570703 Mon Sep 17 00:00:00 2001 From: Mort Yao Date: Fri, 3 May 2013 23:33:38 +0200 Subject: [PATCH 4/6] Tudou: fix #176 --- src/you_get/downloader/tudou.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/you_get/downloader/tudou.py b/src/you_get/downloader/tudou.py index 15265484..b2b8bc1a 100644 --- a/src/you_get/downloader/tudou.py +++ b/src/you_get/downloader/tudou.py @@ -22,12 +22,17 @@ def tudou_download_by_iid(iid, title, output_dir = '.', merge = True, info_only #url_save(url, filepath, bar): download_urls([url], title, ext, total_size = None, output_dir = output_dir, merge = merge) -def tudou_download_by_id(id, title, output_dir = '.', merge = True): +def tudou_download_by_id(id, title, output_dir = '.', merge = True, info_only = False): html = get_html('http://www.tudou.com/programs/view/%s/' % id) - iid = r1(r'iid\s*=\s*(\S+)', html) - tudou_download_by_iid(iid, title, output_dir = output_dir, merge = merge) + iid = r1(r'iid\s*[:=]\s*(\S+)', html) + tudou_download_by_iid(iid, title, output_dir = output_dir, merge = merge, info_only = info_only) def tudou_download(url, output_dir = '.', merge = True, info_only = False): + # Embedded player + id = r1(r'http://www.tudou.com/v/([^/]+)/', url) + if id: + return tudou_download_by_id(id, title="", info_only=info_only) + html = get_decoded_html(url) title = r1(r'kw\s*[:=]\s*[\'\"]([^\']+?)[\'\"]', html) From a716b5f0c1bdf7038e8fa8d1d2e2d15efc204b2a Mon Sep 17 00:00:00 2001 From: Mort Yao Date: Sat, 4 May 2013 00:06:25 +0200 Subject: [PATCH 5/6] temporarily remove JPopuuki from tests --- tests/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test.py b/tests/test.py index d931fa51..75f6f7ac 100644 --- a/tests/test.py +++ b/tests/test.py @@ -19,7 +19,7 @@ class YouGetTests(unittest.TestCase): def test_jpopsuki(self): test_urls([ - "http://jpopsuki.tv/video/Dragon-Ash---Run-to-the-Sun/8ad7aec604badd0b0798cd999b63ae17", + #"http://jpopsuki.tv/video/Dragon-Ash---Run-to-the-Sun/8ad7aec604badd0b0798cd999b63ae17", ]) def test_mixcloud(self): From 219ea4325ae12c1c02d6a46419ccd2a0932a6547 Mon Sep 17 00:00:00 2001 From: Mort Yao Date: Sat, 4 May 2013 00:07:04 +0200 Subject: [PATCH 6/6] Mixcloud: fix an issue --- src/you_get/downloader/mixcloud.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/you_get/downloader/mixcloud.py b/src/you_get/downloader/mixcloud.py index fdf07acb..0261f081 100644 --- a/src/you_get/downloader/mixcloud.py +++ b/src/you_get/downloader/mixcloud.py @@ -7,9 +7,9 @@ from ..common import * def mixcloud_download(url, output_dir = '.', merge = True, info_only = False): html = get_html(url) title = r1(r'