diff options
| -rw-r--r-- | youtube_dl/extractor/generic.py | 6 | ||||
| -rw-r--r-- | youtube_dl/extractor/webcaster.py | 17 | 
2 files changed, 23 insertions, 0 deletions
| diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index f9707c155..5aac65162 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -60,6 +60,7 @@ from .screenwavemedia import ScreenwaveMediaIE  from .mtv import MTVServicesEmbeddedIE  from .pladform import PladformIE  from .videomore import VideomoreIE +from .webcaster import WebcasterFeedIE  from .googledrive import GoogleDriveIE  from .jwplatform import JWPlatformIE  from .digiteka import DigitekaIE @@ -2140,6 +2141,11 @@ class GenericIE(InfoExtractor):          if videomore_url:              return self.url_result(videomore_url) +        # Look for Webcaster embeds +        webcaster_url = WebcasterFeedIE._extract_url(self, webpage) +        if webcaster_url: +            return self.url_result(webcaster_url, ie=WebcasterFeedIE.ie_key()) +          # Look for Playwire embeds          mobj = re.search(              r'<script[^>]+data-config=(["\'])(?P<url>(?:https?:)?//config\.playwire\.com/.+?)\1', webpage) diff --git a/youtube_dl/extractor/webcaster.py b/youtube_dl/extractor/webcaster.py index d366511a2..7486cb347 100644 --- a/youtube_dl/extractor/webcaster.py +++ b/youtube_dl/extractor/webcaster.py @@ -74,6 +74,23 @@ class WebcasterFeedIE(InfoExtractor):          'only_matching': True,      } +    @staticmethod +    def _extract_url(ie, webpage): +        mobj = re.search( +            r'<(?:object|a[^>]+class=["\']webcaster-player["\'])[^>]+data(?:-config)?=(["\']).*?config=(?P<url>https?://bl\.webcaster\.pro/feed/start/free_.*?)(?:[?&]|\1)', +            webpage) +        if mobj: +            return mobj.group('url') +        for secure in (True, False): +            video_url = ie._og_search_video_url( +                webpage, secure=secure, default=None) +            if video_url: +                mobj = re.search( +                    r'config=(?P<url>https?://bl\.webcaster\.pro/feed/start/free_[^?&=]+)', +                    video_url) +                if mobj: +                    return mobj.group('url') +      def _real_extract(self, url):          video_id = self._match_id(url) | 
