diff options
| -rw-r--r-- | youtube_dl/extractor/expressen.py | 23 | ||||
| -rw-r--r-- | youtube_dl/extractor/generic.py | 6 | 
2 files changed, 28 insertions, 1 deletions
| diff --git a/youtube_dl/extractor/expressen.py b/youtube_dl/extractor/expressen.py index f61178012..934571472 100644 --- a/youtube_dl/extractor/expressen.py +++ b/youtube_dl/extractor/expressen.py @@ -1,6 +1,8 @@  # coding: utf-8  from __future__ import unicode_literals +import re +  from .common import InfoExtractor  from ..utils import (      determine_ext, @@ -11,7 +13,13 @@ from ..utils import (  class ExpressenIE(InfoExtractor): -    _VALID_URL = r'https?://(?:www\.)?expressen\.se/tv/(?:[^/]+/)*(?P<id>[^/?#&]+)' +    _VALID_URL = r'''(?x) +                    https?:// +                        (?:www\.)?expressen\.se/ +                        (?:(?:tvspelare/video|videoplayer/embed)/)? +                        tv/(?:[^/]+/)* +                        (?P<id>[^/?#&]+) +                    '''      _TESTS = [{          'url': 'https://www.expressen.se/tv/ledare/ledarsnack/ledarsnack-om-arbetslosheten-bland-kvinnor-i-speciellt-utsatta-omraden/',          'md5': '2fbbe3ca14392a6b1b36941858d33a45', @@ -28,8 +36,21 @@ class ExpressenIE(InfoExtractor):      }, {          'url': 'https://www.expressen.se/tv/kultur/kulturdebatt-med-expressens-karin-olsson/',          'only_matching': True, +    }, { +        'url': 'https://www.expressen.se/tvspelare/video/tv/ditv/ekonomistudion/experterna-har-ar-fragorna-som-avgor-valet/?embed=true&external=true&autoplay=true&startVolume=0&partnerId=di', +        'only_matching': True, +    }, { +        'url': 'https://www.expressen.se/videoplayer/embed/tv/ditv/ekonomistudion/experterna-har-ar-fragorna-som-avgor-valet/?embed=true&external=true&autoplay=true&startVolume=0&partnerId=di', +        'only_matching': True,      }] +    @staticmethod +    def _extract_urls(webpage): +        return [ +            mobj.group('url') for mobj in re.finditer( +                r'<iframe[^>]+\bsrc=(["\'])(?P<url>(?:https?:)?//(?:www\.)?expressen\.se/(?:tvspelare/video|videoplayer/embed)/tv/.+?)\1', +                webpage)] +      def _real_extract(self, url):          display_id = self._match_id(url) diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index 43218c3a4..83a31f3d3 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -114,6 +114,7 @@ from .indavideo import IndavideoEmbedIE  from .apa import APAIE  from .foxnews import FoxNewsIE  from .viqeo import ViqeoIE +from .expressen import ExpressenIE  class GenericIE(InfoExtractor): @@ -3109,6 +3110,11 @@ class GenericIE(InfoExtractor):              return self.playlist_from_matches(                  viqeo_urls, video_id, video_title, ie=ViqeoIE.ie_key()) +        expressen_urls = ExpressenIE._extract_urls(webpage) +        if expressen_urls: +            return self.playlist_from_matches( +                expressen_urls, video_id, video_title, ie=ExpressenIE.ie_key()) +          # Look for HTML5 media          entries = self._parse_html5_media_entries(url, webpage, video_id, m3u8_id='hls')          if entries: | 
