Fix Youtube mplayer error "No stream found to handle url"

Set the "_play_proxy" boolean attribute to the video object
to pipe the video to mplayer.

Fix Youtube module test.

Signed-off-by: Vincent Texier <vit@free.fr>
This commit is contained in:
Vincent Texier 2014-05-22 21:55:25 +02:00 committed by Florent
commit baa289a777
3 changed files with 10 additions and 5 deletions

View file

@ -95,6 +95,10 @@ class VideoPage(BasePage):
video.set_empty_fields(NotAvailable)
# Dailymotion video url is protected by a redirection with cookie verification
# so we need to use the "play_proxy" method using urllib2 proxy streaming to handle this
video._play_proxy = True
return video
def set_video_metadata(self, video):
@ -153,10 +157,6 @@ class VideoPage(BasePage):
video.url = unicode(info[max_quality])
# dailymotion video url is protected by a redirection with cookie verification
# so we need to do a "play_proxy" using urllib2 proxy streaming to handle this
video._play_proxy = True
class KidsVideoPage(VideoPage):
CONTROLLER_PAGE = 'http://kids.dailymotion.com/controller/Page_Kids_KidsUserHome?%s'

View file

@ -115,6 +115,11 @@ class YoutubeBackend(BaseBackend, ICapVideo, ICapCollection):
self._set_video_url(video)
video.set_empty_fields(NotAvailable)
# Youtube video url is https, using ssl encryption
# so we need to use the "play_proxy" method using urllib2 proxy streaming to handle this
video._play_proxy = True
return video
def search_videos(self, pattern, sortby=ICapVideo.SEARCH_RELEVANCE, nsfw=False):

View file

@ -30,7 +30,7 @@ class YoutubeTest(BackendTest):
self.assertTrue(len(l) > 0)
v = l[0]
self.backend.fillobj(v, ('url',))
self.assertTrue(v.url and v.url.startswith('http://'), 'URL for video "%s" not found: %s' % (v.id, v.url))
self.assertTrue(v.url and v.url.startswith('https://'), 'URL for video "%s" not found: %s' % (v.id, v.url))
assert self.backend.get_video(v.shorturl)
self.backend.browser.openurl(v.url)