youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit bf5f6100998dc24fdf866af93ea2bb2433bfacdb
parent b3fa3917e228eecefc9057b0c5fb784ca5252369
Author: Philipp Hagemeister <phihag@phihag.de>
Date:   Sat,  8 Feb 2014 18:37:33 +0100

[pbs] Add support for viralplayer links (Fixes #2350)

Diffstat:
Mtest/test_all_urls.py | 29++++++++++++++++++-----------
Myoutube_dl/extractor/pbs.py | 2+-
2 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/test/test_all_urls.py b/test/test_all_urls.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import unicode_literals + # Allow direct execution import os import sys @@ -13,6 +15,7 @@ from youtube_dl.extractor import ( FacebookIE, gen_extractors, JustinTVIE, + PBSIE, YoutubeIE, ) @@ -29,20 +32,20 @@ class TestAllURLsMatching(unittest.TestCase): def test_youtube_playlist_matching(self): assertPlaylist = lambda url: self.assertMatch(url, ['youtube:playlist']) - assertPlaylist(u'ECUl4u3cNGP61MdtwGTqZA0MreSaDybji8') - assertPlaylist(u'UUBABnxM4Ar9ten8Mdjj1j0Q') #585 - assertPlaylist(u'PL63F0C78739B09958') - assertPlaylist(u'https://www.youtube.com/playlist?list=UUBABnxM4Ar9ten8Mdjj1j0Q') - assertPlaylist(u'https://www.youtube.com/course?list=ECUl4u3cNGP61MdtwGTqZA0MreSaDybji8') - assertPlaylist(u'https://www.youtube.com/playlist?list=PLwP_SiAcdui0KVebT0mU9Apz359a4ubsC') - assertPlaylist(u'https://www.youtube.com/watch?v=AV6J6_AeFEQ&playnext=1&list=PL4023E734DA416012') #668 - self.assertFalse('youtube:playlist' in self.matching_ies(u'PLtS2H6bU1M')) + assertPlaylist('ECUl4u3cNGP61MdtwGTqZA0MreSaDybji8') + assertPlaylist('UUBABnxM4Ar9ten8Mdjj1j0Q') #585 + assertPlaylist('PL63F0C78739B09958') + assertPlaylist('https://www.youtube.com/playlist?list=UUBABnxM4Ar9ten8Mdjj1j0Q') + assertPlaylist('https://www.youtube.com/course?list=ECUl4u3cNGP61MdtwGTqZA0MreSaDybji8') + assertPlaylist('https://www.youtube.com/playlist?list=PLwP_SiAcdui0KVebT0mU9Apz359a4ubsC') + assertPlaylist('https://www.youtube.com/watch?v=AV6J6_AeFEQ&playnext=1&list=PL4023E734DA416012') #668 + self.assertFalse('youtube:playlist' in self.matching_ies('PLtS2H6bU1M')) # Top tracks assertPlaylist('https://www.youtube.com/playlist?list=MCUS.20142101') def test_youtube_matching(self): - self.assertTrue(YoutubeIE.suitable(u'PLtS2H6bU1M')) - self.assertFalse(YoutubeIE.suitable(u'https://www.youtube.com/watch?v=AV6J6_AeFEQ&playnext=1&list=PL4023E734DA416012')) #668 + self.assertTrue(YoutubeIE.suitable('PLtS2H6bU1M')) + self.assertFalse(YoutubeIE.suitable('https://www.youtube.com/watch?v=AV6J6_AeFEQ&playnext=1&list=PL4023E734DA416012')) #668 self.assertMatch('http://youtu.be/BaW_jenozKc', ['youtube']) self.assertMatch('http://www.youtube.com/v/BaW_jenozKc', ['youtube']) self.assertMatch('https://youtube.googleapis.com/v/BaW_jenozKc', ['youtube']) @@ -91,7 +94,7 @@ class TestAllURLsMatching(unittest.TestCase): assertExtractId('BaW_jenozKc', 'BaW_jenozKc') def test_facebook_matching(self): - self.assertTrue(FacebookIE.suitable(u'https://www.facebook.com/Shiniknoh#!/photo.php?v=10153317450565268')) + self.assertTrue(FacebookIE.suitable('https://www.facebook.com/Shiniknoh#!/photo.php?v=10153317450565268')) def test_no_duplicates(self): ies = gen_extractors() @@ -126,5 +129,9 @@ class TestAllURLsMatching(unittest.TestCase): self.assertMatch('http://tatianamaslanydaily.tumblr.com/post/54196191430/orphan-black-dvd-extra-behind-the-scenes', ['Tumblr']) self.assertMatch('http://tatianamaslanydaily.tumblr.com/post/54196191430', ['Tumblr']) + def test_pbs(self): + # https://github.com/rg3/youtube-dl/issues/2350 + self.assertMatch('http://video.pbs.org/viralplayer/2365173446/', ['PBS']) + if __name__ == '__main__': unittest.main() diff --git a/youtube_dl/extractor/pbs.py b/youtube_dl/extractor/pbs.py @@ -9,7 +9,7 @@ class PBSIE(InfoExtractor): _VALID_URL = r'''(?x)https?:// (?: # Direct video URL - video\.pbs\.org/video/(?P<id>[0-9]+)/? | + video\.pbs\.org/(?:viralplayer|video)/(?P<id>[0-9]+)/? | # Article with embedded player (?:www\.)?pbs\.org/(?:[^/]+/){2,5}(?P<presumptive_id>[^/]+)/?(?:$|[?\#]) | # Player