diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index a8272f0d..264971d6 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,6 +1,16 @@
Changelog
=========
+0.3.12
+------
+
+*Date: 2013-05-19*
+
+* Fix issues for:
+ - Google+
+ - Mixcloud
+ - Tudou
+
0.3.11
------
diff --git a/src/you_get/common.py b/src/you_get/common.py
index 12b3c73a..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
@@ -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/downloader/baidu.py b/src/you_get/downloader/baidu.py
index 958631e4..245b1d4f 100755
--- a/src/you_get/downloader/baidu.py
+++ b/src/you_get/downloader/baidu.py
@@ -4,6 +4,7 @@
__all__ = ['baidu_download']
from ..common import *
+from .. import common
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)
def baidu_get_song_url(html):
- return r1(r'', html)
+ href = r1(r'', html)
if href:
lrc = get_html('http://music.baidu.com' + href)
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):
html = get_html('http://music.baidu.com/album/%s' % aid, faker = True)
- album_name = r1(r'(.*)<\/h2>', html)
- artist = r1(r'', html)
+ album_name = r1(r'(.+?)<\/h2>', html)
+ artist = r1(r'', html)
output_dir = '%s/%s - %s' % (output_dir, artist, album_name)
- ids = json.loads(r1(r'', html).replace('"', '').replace(';', '"'))['ids']
+ ids = json.loads(r1(r'', html).replace('"', '').replace(';', '"'))['ids']
track_nr = 1
for id in ids:
song_html = baidu_get_song_html(id)
diff --git a/src/you_get/downloader/google.py b/src/you_get/downloader/google.py
index 2094514d..cd02697f 100644
--- a/src/you_get/downloader/google.py
+++ b/src/you_get/downloader/google.py
@@ -14,54 +14,35 @@ def google_download(url, output_dir = '.', merge = True, info_only = False):
if service == 'plus': # Google Plus
- html = get_html(url)
- html = parse.unquote(html).replace('\/', '/')
-
- title = r1(r'(.*)', html) or r1(r'(.*)\n', html) or r1(r' 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
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
diff --git a/src/you_get/version.py b/src/you_get/version.py
index dbba337b..8b7c8a81 100644
--- a/src/you_get/version.py
+++ b/src/you_get/version.py
@@ -2,5 +2,5 @@
__all__ = ['__version__', '__date__']
-__version__ = '0.3.11'
-__date__ = '2013-04-26'
+__version__ = '0.3.12'
+__date__ = '2013-05-19'
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):