mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-11-28 21:22:13 +00:00
[ctv] Add new extractor (closes #27525)
This commit is contained in:
parent
1d3cd29730
commit
7f3c90ab25
2 changed files with 53 additions and 0 deletions
52
youtube_dl/extractor/ctv.py
Normal file
52
youtube_dl/extractor/ctv.py
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
# coding: utf-8
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from .common import InfoExtractor
|
||||||
|
|
||||||
|
|
||||||
|
class CTVIE(InfoExtractor):
|
||||||
|
_VALID_URL = r'https?://(?:www\.)?ctv\.ca/(?P<id>(?:show|movie)s/[^/]+/[^/?#&]+)'
|
||||||
|
_TESTS = [{
|
||||||
|
'url': 'https://www.ctv.ca/shows/your-morning/wednesday-december-23-2020-s5e88',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '2102249',
|
||||||
|
'ext': 'flv',
|
||||||
|
'title': 'Wednesday, December 23, 2020',
|
||||||
|
'thumbnail': r're:^https?://.*\.jpg$',
|
||||||
|
'description': 'Your Morning delivers original perspectives and unique insights into the headlines of the day.',
|
||||||
|
'timestamp': 1608732000,
|
||||||
|
'upload_date': '20201223',
|
||||||
|
'series': 'Your Morning',
|
||||||
|
'season': '2020-2021',
|
||||||
|
'season_number': 5,
|
||||||
|
'episode_number': 88,
|
||||||
|
'tags': ['Your Morning'],
|
||||||
|
'categories': ['Talk Show'],
|
||||||
|
'duration': 7467.126,
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
'url': 'https://www.ctv.ca/movies/adam-sandlers-eight-crazy-nights/adam-sandlers-eight-crazy-nights',
|
||||||
|
'only_matching': True,
|
||||||
|
}]
|
||||||
|
|
||||||
|
def _real_extract(self, url):
|
||||||
|
display_id = self._match_id(url)
|
||||||
|
content = self._download_json(
|
||||||
|
'https://www.ctv.ca/space-graphql/graphql', display_id, query={
|
||||||
|
'query': '''{
|
||||||
|
resolvedPath(path: "/%s") {
|
||||||
|
lastSegment {
|
||||||
|
content {
|
||||||
|
... on AxisContent {
|
||||||
|
axisId
|
||||||
|
videoPlayerDestCode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}''' % display_id,
|
||||||
|
})['data']['resolvedPath']['lastSegment']['content']
|
||||||
|
video_id = content['axisId']
|
||||||
|
return self.url_result(
|
||||||
|
'9c9media:%s:%s' % (content['videoPlayerDestCode'], video_id),
|
||||||
|
'NineCNineMedia', video_id)
|
|
@ -244,6 +244,7 @@ from .crunchyroll import (
|
||||||
)
|
)
|
||||||
from .cspan import CSpanIE
|
from .cspan import CSpanIE
|
||||||
from .ctsnews import CtsNewsIE
|
from .ctsnews import CtsNewsIE
|
||||||
|
from .ctv import CTVIE
|
||||||
from .ctvnews import CTVNewsIE
|
from .ctvnews import CTVNewsIE
|
||||||
from .cultureunplugged import CultureUnpluggedIE
|
from .cultureunplugged import CultureUnpluggedIE
|
||||||
from .curiositystream import (
|
from .curiositystream import (
|
||||||
|
|
Loading…
Reference in a new issue