]> jfr.im git - yt-dlp.git/commitdiff
[CPTwentyFour] Add extractor (#1769)
authorAshish Gupta <redacted>
Sat, 27 Nov 2021 06:31:42 +0000 (12:01 +0530)
committerGitHub <redacted>
Sat, 27 Nov 2021 06:31:42 +0000 (12:01 +0530)
Closes #1768
Authored by: Ashish0804

yt_dlp/extractor/extractors.py
yt_dlp/extractor/ninecninemedia.py

index ed8a23e723834944162a35a0b190c39ec6c705e6..a277bf722686edf719f28e20dc02aa3ee436e28a 100644 (file)
     NicovideoSearchIE,
     NicovideoSearchURLIE,
 )
-from .ninecninemedia import NineCNineMediaIE
+from .ninecninemedia import (
+    NineCNineMediaIE,
+    CPTwentyFourIE,
+)
 from .ninegag import NineGagIE
 from .ninenow import NineNowIE
 from .nintendo import NintendoIE
index 4aaf21a12082a225f4a8d6f43afc6bdac2878148..781842721b0ea4fca332cfa4696557498f5a6dca 100644 (file)
@@ -1,7 +1,6 @@
 # coding: utf-8
 from __future__ import unicode_literals
 
-
 from .common import InfoExtractor
 from ..utils import (
     float_or_none,
@@ -99,3 +98,37 @@ def _real_extract(self, url):
             }
 
         return info
+
+
+class CPTwentyFourIE(InfoExtractor):
+    IE_NAME = 'cp24'
+    _GEO_COUNTRIES = ['CA']
+    _VALID_URL = r'https?://(?:www\.)?cp24\.com/news/(?P<id>[^?#]+)'
+
+    _TESTS = [{
+        'url': 'https://www.cp24.com/news/video-shows-atm-being-ripped-out-of-business-by-pickup-truck-driver-in-mississauga-1.5676877',
+        'info_dict': {
+            'id': '2328005',
+            'ext': 'mp4',
+            'title': 'WATCH: Truck rips ATM from Mississauga business',
+            'description': 'md5:cf7498480885f080a754389a2b2f7073',
+            'timestamp': 1637618377,
+            'episode_number': None,
+            'season': 'Season 0',
+            'season_number': 0,
+            'season_id': 57974,
+            'series': 'CTV News Toronto',
+            'duration': 26.86,
+            'thumbnail': 'http://images2.9c9media.com/image_asset/2014_11_5_2eb609a0-475b-0132-fbd6-34b52f6f1279_jpg_2000x1125.jpg',
+            'upload_date': '20211122',
+        },
+        'params': {'skip_download': True, 'format': 'bv'}
+    }]
+
+    def _real_extract(self, url):
+        display_id = self._match_id(url)
+        webpage = self._download_webpage(url, display_id)
+        id, destination = self._search_regex(
+            r'getAuthStates\("(?P<id>[^"]+)",\s?"(?P<destination>[^"]+)"\);',
+            webpage, 'video id and destination', group=('id', 'destination'))
+        return self.url_result(f'9c9media:{destination}:{id}', ie=NineCNineMediaIE.ie_key(), video_id=id)