diff --git a/src/you_get/common.py b/src/you_get/common.py
index 7375c524..863cba7c 100644
--- a/src/you_get/common.py
+++ b/src/you_get/common.py
@@ -675,21 +675,22 @@ def download_urls_chunked(urls, title, ext, total_size, output_dir='.', refer=No
print()
-def download_rtmp_url(url, playpath, title, ext, total_size=0, output_dir='.', refer=None, merge=True, faker=False):
+def download_rtmp_url(url,title, ext,params={}, total_size=0, output_dir='.', refer=None, merge=True, faker=False):
assert url
if dry_run:
print('Real URL:\n%s\n' % [url])
- print('Real Playpath:\n%s\n' % [playpath])
+ if params.get("-y",False): #None or unset ->False
+ print('Real Playpath:\n%s\n' % [params.get("-y")])
return
if player:
from .processor.rtmpdump import play_rtmpdump_stream
- play_rtmpdump_stream(player, url, playpath)
+ play_rtmpdump_stream(player, url, params)
return
from .processor.rtmpdump import has_rtmpdump_installed, download_rtmpdump_stream
assert has_rtmpdump_installed(), "RTMPDump not installed."
- download_rtmpdump_stream(url, playpath, title, ext, output_dir)
+ download_rtmpdump_stream(url, title, ext,params, output_dir)
def playlist_not_supported(name):
def f(*args, **kwargs):
diff --git a/src/you_get/extractor/__init__.py b/src/you_get/extractor/__init__.py
index 9c99b80f..75544a9f 100644
--- a/src/you_get/extractor/__init__.py
+++ b/src/you_get/extractor/__init__.py
@@ -26,6 +26,7 @@ from .letv import *
from .magisto import *
from .miomio import *
from .mixcloud import *
+from .mtv81 import *
from .netease import *
from .nicovideo import *
from .pptv import *
diff --git a/src/you_get/extractor/__main__.py b/src/you_get/extractor/__main__.py
index 5d16f7bf..a7991e47 100644
--- a/src/you_get/extractor/__main__.py
+++ b/src/you_get/extractor/__main__.py
@@ -46,6 +46,7 @@ def url_to_module(url):
'magisto': magisto,
'miomio': miomio,
'mixcloud': mixcloud,
+ 'mtv81':mtv81,
'nicovideo': nicovideo,
'pptv': pptv,
'qq': qq,
diff --git a/src/you_get/extractor/mtv81.py b/src/you_get/extractor/mtv81.py
new file mode 100644
index 00000000..e8e4dabb
--- /dev/null
+++ b/src/you_get/extractor/mtv81.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+
+__all__ = ['mtv81_download']
+
+from ..common import *
+from html.parser import unescape
+from xml.dom.minidom import parseString
+
+def mtv81_download(url, output_dir = '.', merge = True, info_only = False):
+ html=get_content(url)
+ title=unescape("|".join(match1(html,r"
(.*?)").split("|")[:-2]))
+
+ #mgid%3Auma%3Avideo%3Amtv81.com%3A897974
+ vid=match1(html,r'getTheVideo\("(.*?)"')
+ xml=parseString(get_content("http://intl.esperanto.mtvi.com/www/xml/media/mediaGen.jhtml?uri={}&flashPlayer=LNX%2013,0,0,206&geo=CN&sid=123456".format(vid)))
+
+ url=sorted(map(lambda x:x.firstChild.nodeValue,xml.getElementsByTagName("src")),key=lambda x:int(match1(x,r'_(\d+?)_')))[-1]
+
+ mediatype, ext, size = 'mp4', 'mp4', 0
+ print_info(site_info, title, mediatype, size)
+ ##
+ # rtmpdump -r 'rtmpe://cp30865.edgefcs.net/ondemand/mtviestor/_!/intlod/MTVInternational/MBUS/GeoLocals/00JP/VIAMTVI/PYC/201304/7122HVAQ4/00JPVIAMTVIPYC7122HVAQ4_640x_360_1200_m30.mp4' -o "title.mp4" --swfVfy http://media.mtvnservices.com/player/prime/mediaplayerprime.1.10.8.swf
+ ##
+ # because rtmpdump is unstable,may try serveral times
+ ##
+ if not info_only:
+ # import pdb
+ # pdb.set_trace()
+ download_rtmp_url(url=url, title=title, ext=ext, params={"--swfVfy":"http://media.mtvnservices.com/player/prime/mediaplayerprime.1.10.8.swf"}, output_dir=output_dir)
+
+
+
+site_info = "mtv81.com"
+download = mtv81_download
+download_playlist = playlist_not_supported('mtv81')
diff --git a/src/you_get/extractor/theplatform.py b/src/you_get/extractor/theplatform.py
index 2938c459..db129c2a 100644
--- a/src/you_get/extractor/theplatform.py
+++ b/src/you_get/extractor/theplatform.py
@@ -17,7 +17,7 @@ def theplatform_download_by_pid(pid, title, output_dir='.', merge=True, info_onl
print_info(site_info, title, type, size)
if not info_only:
- download_rtmp_url(url=smil_base, playpath=ext+':'+smil_video, title=title, ext=ext, output_dir=output_dir)
+ download_rtmp_url(url=smil_base, title=title, ext=ext,params={"-y":ext+':'+smil_video}, output_dir=output_dir)
site_info = "thePlatform.com"
download = theplatform_download_by_pid
diff --git a/src/you_get/processor/rtmpdump.py b/src/you_get/processor/rtmpdump.py
index 6f291979..85400819 100644
--- a/src/you_get/processor/rtmpdump.py
+++ b/src/you_get/processor/rtmpdump.py
@@ -16,20 +16,40 @@ RTMPDUMP = get_usable_rtmpdump('rtmpdump')
def has_rtmpdump_installed():
return RTMPDUMP is not None
-def download_rtmpdump_stream(url, playpath, title, ext, output_dir='.'):
+#
+#params ={"-y":"playlist","-q":None,}
+#if Only Key ,Value should be None
+#-r -o should not be included in params
+
+def download_rtmpdump_stream(url, title, ext,params={},output_dir='.'):
filename = '%s.%s' % (title, ext)
filepath = os.path.join(output_dir, filename)
- params = [RTMPDUMP, '-r']
- params.append(url)
- params.append('-y')
- params.append(playpath)
- params.append('-o')
- params.append(filepath)
+ cmdline = [RTMPDUMP, '-r']
+ cmdline.append(url)
+ cmdline.append('-o')
+ cmdline.append(filepath)
- subprocess.call(params)
+ for key in params.keys():
+ cmdline.append(key)
+ if params[key]!=None:
+ cmdline.append(params[key])
+
+ # cmdline.append('-y')
+ # cmdline.append(playpath)
+ print("Call rtmpdump:\n"+" ".join(cmdline)+"\n")
+ subprocess.call(cmdline)
return
-def play_rtmpdump_stream(player, url, playpath):
- os.system("rtmpdump -r '%s' -y '%s' -o - | %s -" % (url, playpath, player))
+#
+#To be refactor
+#
+def play_rtmpdump_stream(player, url, params={}):
+ cmdline="rtmpdump -r '%s' "%url
+ for key in params.keys():
+ cmdline+=key+" "+params[key] if params[key]!=None else ""+" "
+ cmdline+=" -o - | %s -"%player
+ print(cmdline)
+ os.system(cmdline)
+ # os.system("rtmpdump -r '%s' -y '%s' -o - | %s -" % (url, playpath, player))
return