diff options
| -rw-r--r-- | youtube_dl/extractor/generic.py | 11 | ||||
| -rw-r--r-- | youtube_dl/extractor/limelight.py | 7 | ||||
| -rw-r--r-- | youtube_dl/extractor/nba.py | 8 | ||||
| -rw-r--r-- | youtube_dl/extractor/nbc.py | 27 | ||||
| -rw-r--r-- | youtube_dl/extractor/npo.py | 2 | ||||
| -rw-r--r-- | youtube_dl/extractor/nrk.py | 18 | ||||
| -rw-r--r-- | youtube_dl/extractor/screenwavemedia.py | 8 | ||||
| -rw-r--r-- | youtube_dl/extractor/senateisvp.py | 16 | ||||
| -rw-r--r-- | youtube_dl/extractor/tv2.py | 11 | ||||
| -rw-r--r-- | youtube_dl/extractor/vgtv.py | 7 | ||||
| -rw-r--r-- | youtube_dl/extractor/viidea.py | 4 | 
11 files changed, 87 insertions, 32 deletions
diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index 26d3698c8..b18e734c4 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -1819,6 +1819,17 @@ class GenericIE(InfoExtractor):          if digiteka_url:              return self.url_result(self._proto_relative_url(digiteka_url), DigitekaIE.ie_key()) +        # Look for Limelight embeds +        mobj = re.search(r'LimelightPlayer\.doLoad(Media|Channel|ChannelList)\(["\'](?P<id>[a-z0-9]{32})', webpage) +        if mobj: +            lm = { +                'Media': 'media', +                'Channel': 'channel', +                'ChannelList': 'channel_list', +            } +            return self.url_result('limelight:%s:%s' % ( +                lm[mobj.group(1)], mobj.group(2)), 'Limelight%s' % mobj.group(1), mobj.group(2)) +          # Look for AdobeTVVideo embeds          mobj = re.search(              r'<iframe[^>]+src=[\'"]((?:https?:)?//video\.tv\.adobe\.com/v/\d+[^"]+)[\'"]', diff --git a/youtube_dl/extractor/limelight.py b/youtube_dl/extractor/limelight.py index fb03dd527..1a0625ac3 100644 --- a/youtube_dl/extractor/limelight.py +++ b/youtube_dl/extractor/limelight.py @@ -40,7 +40,8 @@ class LimelightBaseIE(InfoExtractor):              if not stream_url:                  continue              if '.f4m' in stream_url: -                formats.extend(self._extract_f4m_formats(stream_url, video_id)) +                formats.extend(self._extract_f4m_formats( +                    stream_url, video_id, fatal=False))              else:                  fmt = {                      'url': stream_url, @@ -72,8 +73,8 @@ class LimelightBaseIE(InfoExtractor):              format_id = mobile_url.get('targetMediaPlatform')              if determine_ext(media_url) == 'm3u8':                  formats.extend(self._extract_m3u8_formats( -                    media_url, video_id, 'mp4', entry_protocol='m3u8_native', -                    preference=-1, m3u8_id=format_id)) +                    media_url, video_id, 'mp4', 'm3u8_native', +                    m3u8_id=format_id, fatal=False))              else:                  formats.append({                      'url': media_url, diff --git a/youtube_dl/extractor/nba.py b/youtube_dl/extractor/nba.py index 9d26030d3..a071378b6 100644 --- a/youtube_dl/extractor/nba.py +++ b/youtube_dl/extractor/nba.py @@ -18,13 +18,17 @@ class NBAIE(InfoExtractor):          'md5': '9e7729d3010a9c71506fd1248f74e4f4',          'info_dict': {              'id': '0021200253-okc-bkn-recap', -            'ext': 'flv', +            'ext': 'mp4',              'title': 'Thunder vs. Nets',              'description': 'Kevin Durant scores 32 points and dishes out six assists as the Thunder beat the Nets in Brooklyn.',              'duration': 181,              'timestamp': 1354638466,              'upload_date': '20121204',          }, +        'params': { +            # m3u8 download +            'skip_download': True, +        },      }, {          'url': 'http://www.nba.com/video/games/hornets/2014/12/05/0021400276-nyk-cha-play5.nba/',          'only_matching': True, @@ -68,7 +72,7 @@ class NBAIE(InfoExtractor):              if video_url.startswith('/'):                  continue              if video_url.endswith('.m3u8'): -                formats.extend(self._extract_m3u8_formats(video_url, video_id, m3u8_id='hls', fatal=False)) +                formats.extend(self._extract_m3u8_formats(video_url, video_id, ext='mp4', m3u8_id='hls', fatal=False))              elif video_url.endswith('.f4m'):                  formats.extend(self._extract_f4m_formats(video_url + '?hdcore=3.4.1.1', video_id, f4m_id='hds', fatal=False))              else: diff --git a/youtube_dl/extractor/nbc.py b/youtube_dl/extractor/nbc.py index 1dd54c2f1..18d01f423 100644 --- a/youtube_dl/extractor/nbc.py +++ b/youtube_dl/extractor/nbc.py @@ -19,32 +19,39 @@ class NBCIE(InfoExtractor):      _TESTS = [          {              'url': 'http://www.nbc.com/the-tonight-show/segments/112966', -            # md5 checksum is not stable              'info_dict': { -                'id': 'c9xnCo0YPOPH', -                'ext': 'flv', +                'id': '112966', +                'ext': 'mp4',                  'title': 'Jimmy Fallon Surprises Fans at Ben & Jerry\'s',                  'description': 'Jimmy gives out free scoops of his new "Tonight Dough" ice cream flavor by surprising customers at the Ben & Jerry\'s scoop shop.',              }, +            'params': { +                # m3u8 download +                'skip_download': True, +            },          },          {              'url': 'http://www.nbc.com/the-tonight-show/episodes/176',              'info_dict': { -                'id': 'XwU9KZkp98TH', +                'id': '176',                  'ext': 'flv',                  'title': 'Ricky Gervais, Steven Van Zandt, ILoveMakonnen',                  'description': 'A brand new episode of The Tonight Show welcomes Ricky Gervais, Steven Van Zandt and ILoveMakonnen.',              }, -            'skip': 'Only works from US', +            'skip': '404 Not Found',          },          {              'url': 'http://www.nbc.com/saturday-night-live/video/star-wars-teaser/2832821',              'info_dict': { -                'id': '8iUuyzWDdYUZ', -                'ext': 'flv', +                'id': '2832821', +                'ext': 'mp4',                  'title': 'Star Wars Teaser',                  'description': 'md5:0b40f9cbde5b671a7ff62fceccc4f442',              }, +            'params': { +                # m3u8 download +                'skip_download': True, +            },              'skip': 'Only works from US',          },          { @@ -66,7 +73,11 @@ class NBCIE(InfoExtractor):              webpage, 'theplatform url').replace('_no_endcard', '').replace('\\/', '/')))          if theplatform_url.startswith('//'):              theplatform_url = 'http:' + theplatform_url -        return self.url_result(smuggle_url(theplatform_url, {'source_url': url})) +        return { +            '_type': 'url_transparent', +            'url': smuggle_url(theplatform_url, {'source_url': url}), +            'id': video_id, +        }  class NBCSportsVPlayerIE(InfoExtractor): diff --git a/youtube_dl/extractor/npo.py b/youtube_dl/extractor/npo.py index ab418edf4..a4363c16e 100644 --- a/youtube_dl/extractor/npo.py +++ b/youtube_dl/extractor/npo.py @@ -189,7 +189,7 @@ class NPOIE(NPOBaseIE):                  if not video_url:                      continue                  if format_id == 'adaptive': -                    formats.extend(self._extract_m3u8_formats(video_url, video_id)) +                    formats.extend(self._extract_m3u8_formats(video_url, video_id, 'mp4'))                  else:                      formats.append({                          'url': video_url, diff --git a/youtube_dl/extractor/nrk.py b/youtube_dl/extractor/nrk.py index 6ff13050d..a126f5054 100644 --- a/youtube_dl/extractor/nrk.py +++ b/youtube_dl/extractor/nrk.py @@ -133,26 +133,32 @@ class NRKTVIE(InfoExtractor):      _TESTS = [          {              'url': 'https://tv.nrk.no/serie/20-spoersmaal-tv/MUHH48000314/23-05-2014', -            'md5': 'adf2c5454fa2bf032f47a9f8fb351342',              'info_dict': {                  'id': 'MUHH48000314', -                'ext': 'flv', +                'ext': 'mp4',                  'title': '20 spørsmål',                  'description': 'md5:bdea103bc35494c143c6a9acdd84887a',                  'upload_date': '20140523',                  'duration': 1741.52,              }, +            'params': { +                # m3u8 download +                'skip_download': True, +            },          },          {              'url': 'https://tv.nrk.no/program/mdfp15000514', -            'md5': '383650ece2b25ecec996ad7b5bb2a384',              'info_dict': {                  'id': 'mdfp15000514', -                'ext': 'flv', -                'title': 'Kunnskapskanalen: Grunnlovsjubiléet - Stor ståhei for ingenting', +                'ext': 'mp4', +                'title': 'Grunnlovsjubiléet - Stor ståhei for ingenting',                  'description': 'md5:654c12511f035aed1e42bdf5db3b206a',                  'upload_date': '20140524', -                'duration': 4605.0, +                'duration': 4605.08, +            }, +            'params': { +                # m3u8 download +                'skip_download': True,              },          },          { diff --git a/youtube_dl/extractor/screenwavemedia.py b/youtube_dl/extractor/screenwavemedia.py index 05f93904c..e5d62a139 100644 --- a/youtube_dl/extractor/screenwavemedia.py +++ b/youtube_dl/extractor/screenwavemedia.py @@ -71,7 +71,7 @@ class ScreenwaveMediaIE(InfoExtractor):          formats = []          for source in sources:              if source['type'] == 'hls': -                formats.extend(self._extract_m3u8_formats(source['file'], video_id)) +                formats.extend(self._extract_m3u8_formats(source['file'], video_id, ext='mp4'))              else:                  file_ = source.get('file')                  if not file_: @@ -107,7 +107,11 @@ class TeamFourIE(InfoExtractor):              'upload_date': '20130401',              'description': 'Check out this and more on our website: http://teamfourstar.com\nTFS Store: http://sharkrobot.com/team-four-star\nFollow on Twitter: http://twitter.com/teamfourstar\nLike on FB: http://facebook.com/teamfourstar',              'title': 'A Moment With TFS Episode 4', -        } +        }, +        'params': { +            # m3u8 download +            'skip_download': True, +        },      }      def _real_extract(self, url): diff --git a/youtube_dl/extractor/senateisvp.py b/youtube_dl/extractor/senateisvp.py index 474ebb49b..990ea0fa8 100644 --- a/youtube_dl/extractor/senateisvp.py +++ b/youtube_dl/extractor/senateisvp.py @@ -53,17 +53,25 @@ class SenateISVPIE(InfoExtractor):          'url': 'http://www.senate.gov/isvp/?comm=judiciary&type=live&stt=&filename=judiciary031715&auto_play=false&wmode=transparent&poster=http%3A%2F%2Fwww.judiciary.senate.gov%2Fthemes%2Fjudiciary%2Fimages%2Fvideo-poster-flash-fit.png',          'info_dict': {              'id': 'judiciary031715', -            'ext': 'flv', +            'ext': 'mp4',              'title': 'Integrated Senate Video Player',              'thumbnail': 're:^https?://.*\.(?:jpg|png)$', -        } +        }, +        'params': { +            # m3u8 download +            'skip_download': True, +        },      }, {          'url': 'http://www.senate.gov/isvp/?type=live&comm=commerce&filename=commerce011514.mp4&auto_play=false',          'info_dict': {              'id': 'commerce011514', -            'ext': 'flv', +            'ext': 'mp4',              'title': 'Integrated Senate Video Player' -        } +        }, +        'params': { +            # m3u8 download +            'skip_download': True, +        },      }, {          'url': 'http://www.senate.gov/isvp/?type=arch&comm=intel&filename=intel090613&hc_location=ufi',          # checksum differs each time diff --git a/youtube_dl/extractor/tv2.py b/youtube_dl/extractor/tv2.py index fa338b936..1457e524e 100644 --- a/youtube_dl/extractor/tv2.py +++ b/youtube_dl/extractor/tv2.py @@ -17,18 +17,21 @@ class TV2IE(InfoExtractor):      _VALID_URL = 'http://(?:www\.)?tv2\.no/v/(?P<id>\d+)'      _TEST = {          'url': 'http://www.tv2.no/v/916509/', -        'md5': '9cb9e3410b18b515d71892f27856e9b1',          'info_dict': {              'id': '916509', -            'ext': 'flv', -            'title': 'Se Gryttens hyllest av Steven Gerrard', +            'ext': 'mp4', +            'title': 'Se Frode Gryttens hyllest av Steven Gerrard',              'description': 'TV 2 Sportens huspoet tar avskjed med Liverpools kaptein Steven Gerrard.',              'timestamp': 1431715610,              'upload_date': '20150515',              'duration': 156.967,              'view_count': int,              'categories': list, -        } +        }, +        'params': { +            # m3u8 download +            'skip_download': True, +        },      }      def _real_extract(self, url): diff --git a/youtube_dl/extractor/vgtv.py b/youtube_dl/extractor/vgtv.py index 86ba70ed9..14e945d49 100644 --- a/youtube_dl/extractor/vgtv.py +++ b/youtube_dl/extractor/vgtv.py @@ -86,10 +86,9 @@ class VGTVIE(XstreamIE):          {              # streamType: wasLive              'url': 'http://www.vgtv.no/#!/live/113063/direkte-v75-fra-solvalla', -            'md5': '458f4841239dab414343b50e5af8869c',              'info_dict': {                  'id': '113063', -                'ext': 'flv', +                'ext': 'mp4',                  'title': 'V75 fra Solvalla 30.05.15',                  'description': 'md5:b3743425765355855f88e096acc93231',                  'thumbnail': 're:^https?://.*\.jpg', @@ -98,6 +97,10 @@ class VGTVIE(XstreamIE):                  'upload_date': '20150530',                  'view_count': int,              }, +            'params': { +                # m3u8 download +                'skip_download': True, +            },          },          {              'url': 'http://www.aftenposten.no/webtv/#!/video/21039/trailer-sweatshop-i-can-t-take-any-more', diff --git a/youtube_dl/extractor/viidea.py b/youtube_dl/extractor/viidea.py index 525e303d4..315984bf9 100644 --- a/youtube_dl/extractor/viidea.py +++ b/youtube_dl/extractor/viidea.py @@ -45,6 +45,10 @@ class ViideaIE(InfoExtractor):              'upload_date': '20130627',              'duration': 565,          }, +        'params': { +            # m3u8 download +            'skip_download': True, +        },      }, {          # video with invalid direct format links (HTTP 403)          'url': 'http://videolectures.net/russir2010_filippova_nlp/',  | 
