mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2025-06-28 01:18:30 +00:00
parent
5b559d0072
commit
c57412d1f9
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
|
|
||||||
class CloudyCDNIE(InfoExtractor):
|
class CloudyCDNIE(InfoExtractor):
|
||||||
_VALID_URL = r'(?:https?:)?//embed\.cloudycdn\.services/(?P<site_id>[^/?#]+)/media/(?P<id>[\w-]+)'
|
_VALID_URL = r'(?:https?:)?//embed\.(?P<domain>cloudycdn\.services|backscreen\.com)/(?P<site_id>[^/?#]+)/media/(?P<id>[\w-]+)'
|
||||||
_EMBED_REGEX = [rf'<iframe[^>]+\bsrc=[\'"](?P<url>{_VALID_URL})']
|
_EMBED_REGEX = [rf'<iframe[^>]+\bsrc=[\'"](?P<url>{_VALID_URL})']
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://embed.cloudycdn.services/ltv/media/46k_d23-6000-105?',
|
'url': 'https://embed.cloudycdn.services/ltv/media/46k_d23-6000-105?',
|
||||||
@ -23,7 +23,7 @@ class CloudyCDNIE(InfoExtractor):
|
|||||||
'duration': 1442,
|
'duration': 1442,
|
||||||
'upload_date': '20231121',
|
'upload_date': '20231121',
|
||||||
'title': 'D23-6000-105_cetstud',
|
'title': 'D23-6000-105_cetstud',
|
||||||
'thumbnail': 'https://store.cloudycdn.services/tmsp00060/assets/media/660858/placeholder1700589200.jpg',
|
'thumbnail': 'https://store.bstrm.net/tmsp00060/assets/media/660858/placeholder1700589200.jpg',
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
'url': 'https://embed.cloudycdn.services/izm/media/26e_lv-8-5-1',
|
'url': 'https://embed.cloudycdn.services/izm/media/26e_lv-8-5-1',
|
||||||
@ -33,7 +33,7 @@ class CloudyCDNIE(InfoExtractor):
|
|||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'title': 'LV-8-5-1',
|
'title': 'LV-8-5-1',
|
||||||
'timestamp': 1669767167,
|
'timestamp': 1669767167,
|
||||||
'thumbnail': 'https://store.cloudycdn.services/tmsp00120/assets/media/488306/placeholder1679423604.jpg',
|
'thumbnail': 'https://store.bstrm.net/tmsp00120/assets/media/488306/placeholder1679423604.jpg',
|
||||||
'duration': 1205,
|
'duration': 1205,
|
||||||
'upload_date': '20221130',
|
'upload_date': '20221130',
|
||||||
},
|
},
|
||||||
@ -48,9 +48,21 @@ class CloudyCDNIE(InfoExtractor):
|
|||||||
'duration': 1673,
|
'duration': 1673,
|
||||||
'title': 'D24-6000-074-cetstud',
|
'title': 'D24-6000-074-cetstud',
|
||||||
'timestamp': 1718902233,
|
'timestamp': 1718902233,
|
||||||
'thumbnail': 'https://store.cloudycdn.services/tmsp00060/assets/media/788392/placeholder1718903938.jpg',
|
'thumbnail': 'https://store.bstrm.net/tmsp00060/assets/media/788392/placeholder1718903938.jpg',
|
||||||
},
|
},
|
||||||
'params': {'format': 'bv'},
|
'params': {'format': 'bv'},
|
||||||
|
}, {
|
||||||
|
'url': 'https://embed.backscreen.com/ltv/media/32j_z25-0600-127?',
|
||||||
|
'md5': '9b6fa09ac1a4de53d4f42b94affc3b42',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '32j_z25-0600-127',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'title': 'Z25-0600-127-DZ',
|
||||||
|
'duration': 1906,
|
||||||
|
'thumbnail': 'https://store.bstrm.net/tmsp00060/assets/media/977427/placeholder1746633646.jpg',
|
||||||
|
'timestamp': 1746632402,
|
||||||
|
'upload_date': '20250507',
|
||||||
|
},
|
||||||
}]
|
}]
|
||||||
_WEBPAGE_TESTS = [{
|
_WEBPAGE_TESTS = [{
|
||||||
'url': 'https://www.tavaklase.lv/video/es-esmu-mina-um-2/',
|
'url': 'https://www.tavaklase.lv/video/es-esmu-mina-um-2/',
|
||||||
@ -60,17 +72,17 @@ class CloudyCDNIE(InfoExtractor):
|
|||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'upload_date': '20230223',
|
'upload_date': '20230223',
|
||||||
'duration': 629,
|
'duration': 629,
|
||||||
'thumbnail': 'https://store.cloudycdn.services/tmsp00120/assets/media/518407/placeholder1678748124.jpg',
|
'thumbnail': 'https://store.bstrm.net/tmsp00120/assets/media/518407/placeholder1678748124.jpg',
|
||||||
'timestamp': 1677181513,
|
'timestamp': 1677181513,
|
||||||
'title': 'LIB-2',
|
'title': 'LIB-2',
|
||||||
},
|
},
|
||||||
}]
|
}]
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
site_id, video_id = self._match_valid_url(url).group('site_id', 'id')
|
domain, site_id, video_id = self._match_valid_url(url).group('domain', 'site_id', 'id')
|
||||||
|
|
||||||
data = self._download_json(
|
data = self._download_json(
|
||||||
f'https://player.cloudycdn.services/player/{site_id}/media/{video_id}/',
|
f'https://player.{domain}/player/{site_id}/media/{video_id}/',
|
||||||
video_id, data=urlencode_postdata({
|
video_id, data=urlencode_postdata({
|
||||||
'version': '6.4.0',
|
'version': '6.4.0',
|
||||||
'referer': url,
|
'referer': url,
|
||||||
|
@ -167,11 +167,11 @@ class LSMLTVEmbedIE(InfoExtractor):
|
|||||||
'duration': 1442,
|
'duration': 1442,
|
||||||
'upload_date': '20231121',
|
'upload_date': '20231121',
|
||||||
'title': 'D23-6000-105_cetstud',
|
'title': 'D23-6000-105_cetstud',
|
||||||
'thumbnail': 'https://store.cloudycdn.services/tmsp00060/assets/media/660858/placeholder1700589200.jpg',
|
'thumbnail': 'https://store.bstrm.net/tmsp00060/assets/media/660858/placeholder1700589200.jpg',
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
'url': 'https://ltv.lsm.lv/embed?enablesdkjs=1&c=eyJpdiI6IncwVzZmUFk2MU12enVWK1I3SUcwQ1E9PSIsInZhbHVlIjoid3FhV29vamc3T2sxL1RaRmJ5Rm1GTXozU0o2dVczdUtLK0cwZEZJMDQ2a3ZIRG5DK2pneGlnbktBQy9uazVleHN6VXhxdWIweWNvcHRDSnlISlNYOHlVZ1lpcTUrcWZSTUZPQW14TVdkMW9aOUtRWVNDcFF4eWpHNGcrT0VZbUNFQStKQk91cGpndW9FVjJIa0lpbkh3PT0iLCJtYWMiOiIyZGI1NDJlMWRlM2QyMGNhOGEwYTM2MmNlN2JlOGRhY2QyYjdkMmEzN2RlOTEzYTVkNzI1ODlhZDlhZjU4MjQ2IiwidGFnIjoiIn0=',
|
'url': 'https://ltv.lsm.lv/embed?enablesdkjs=1&c=eyJpdiI6IncwVzZmUFk2MU12enVWK1I3SUcwQ1E9PSIsInZhbHVlIjoid3FhV29vamc3T2sxL1RaRmJ5Rm1GTXozU0o2dVczdUtLK0cwZEZJMDQ2a3ZIRG5DK2pneGlnbktBQy9uazVleHN6VXhxdWIweWNvcHRDSnlISlNYOHlVZ1lpcTUrcWZSTUZPQW14TVdkMW9aOUtRWVNDcFF4eWpHNGcrT0VZbUNFQStKQk91cGpndW9FVjJIa0lpbkh3PT0iLCJtYWMiOiIyZGI1NDJlMWRlM2QyMGNhOGEwYTM2MmNlN2JlOGRhY2QyYjdkMmEzN2RlOTEzYTVkNzI1ODlhZDlhZjU4MjQ2IiwidGFnIjoiIn0=',
|
||||||
'md5': 'a1711e190fe680fdb68fd8413b378e87',
|
'md5': 'f236cef2fd5953612754e4e66be51e7a',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': 'wUnFArIPDSY',
|
'id': 'wUnFArIPDSY',
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
@ -198,6 +198,8 @@ class LSMLTVEmbedIE(InfoExtractor):
|
|||||||
'uploader_url': 'https://www.youtube.com/@LTV16plus',
|
'uploader_url': 'https://www.youtube.com/@LTV16plus',
|
||||||
'like_count': int,
|
'like_count': int,
|
||||||
'description': 'md5:7ff0c42ba971e3c13e4b8a2ff03b70b5',
|
'description': 'md5:7ff0c42ba971e3c13e4b8a2ff03b70b5',
|
||||||
|
'media_type': 'livestream',
|
||||||
|
'timestamp': 1652550741,
|
||||||
},
|
},
|
||||||
}]
|
}]
|
||||||
|
|
||||||
@ -208,7 +210,7 @@ def _real_extract(self, url):
|
|||||||
r'window\.ltvEmbedPayload\s*=', webpage, 'embed json', video_id)
|
r'window\.ltvEmbedPayload\s*=', webpage, 'embed json', video_id)
|
||||||
embed_type = traverse_obj(data, ('source', 'name', {str}))
|
embed_type = traverse_obj(data, ('source', 'name', {str}))
|
||||||
|
|
||||||
if embed_type == 'telia':
|
if embed_type in ('backscreen', 'telia'): # 'telia' only for backwards compat
|
||||||
ie_key = 'CloudyCDN'
|
ie_key = 'CloudyCDN'
|
||||||
embed_url = traverse_obj(data, ('source', 'embed_url', {url_or_none}))
|
embed_url = traverse_obj(data, ('source', 'embed_url', {url_or_none}))
|
||||||
elif embed_type == 'youtube':
|
elif embed_type == 'youtube':
|
||||||
@ -226,9 +228,9 @@ def _real_extract(self, url):
|
|||||||
|
|
||||||
|
|
||||||
class LSMReplayIE(InfoExtractor):
|
class LSMReplayIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://replay\.lsm\.lv/[^/?#]+/(?:ieraksts|statja)/[^/?#]+/(?P<id>\d+)'
|
_VALID_URL = r'https?://replay\.lsm\.lv/[^/?#]+/(?:skaties/|klausies/)?(?:ieraksts|statja)/[^/?#]+/(?P<id>\d+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://replay.lsm.lv/lv/ieraksts/ltv/311130/4-studija-zolitudes-tragedija-un-incupes-stacija',
|
'url': 'https://replay.lsm.lv/lv/skaties/ieraksts/ltv/311130/4-studija-zolitudes-tragedija-un-incupes-stacija',
|
||||||
'md5': '64f72a360ca530d5ed89c77646c9eee5',
|
'md5': '64f72a360ca530d5ed89c77646c9eee5',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': '46k_d23-6000-105',
|
'id': '46k_d23-6000-105',
|
||||||
@ -241,20 +243,23 @@ class LSMReplayIE(InfoExtractor):
|
|||||||
'thumbnail': 'https://ltv.lsm.lv/storage/media/8/7/large/5/1f9604e1.jpg',
|
'thumbnail': 'https://ltv.lsm.lv/storage/media/8/7/large/5/1f9604e1.jpg',
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
'url': 'https://replay.lsm.lv/lv/ieraksts/lr/183522/138-nepilniga-kompensejamo-zalu-sistema-pat-menesiem-dzena-pacientus-pa-aptiekam',
|
'url': 'https://replay.lsm.lv/lv/klausies/ieraksts/lr/183522/138-nepilniga-kompensejamo-zalu-sistema-pat-menesiem-dzena-pacientus-pa-aptiekam',
|
||||||
'md5': '719b33875cd1429846eeeaeec6df2830',
|
'md5': '84feb80fd7e6ec07744726a9f01cda4d',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': 'a342781',
|
'id': '183522',
|
||||||
'ext': 'mp3',
|
'ext': 'm4a',
|
||||||
'duration': 1823,
|
'duration': 1823,
|
||||||
'title': '#138 Nepilnīgā kompensējamo zāļu sistēma pat mēnešiem dzenā pacientus pa aptiekām',
|
'title': '#138 Nepilnīgā kompensējamo zāļu sistēma pat mēnešiem dzenā pacientus pa aptiekām',
|
||||||
'thumbnail': 'https://pic.latvijasradio.lv/public/assets/media/9/d/large_fd4675ac.jpg',
|
'thumbnail': 'https://pic.latvijasradio.lv/public/assets/media/9/d/large_fd4675ac.jpg',
|
||||||
'upload_date': '20231102',
|
'upload_date': '20231102',
|
||||||
'timestamp': 1698921060,
|
'timestamp': 1698913860,
|
||||||
'description': 'md5:7bac3b2dd41e44325032943251c357b1',
|
'description': 'md5:7bac3b2dd41e44325032943251c357b1',
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
'url': 'https://replay.lsm.lv/ru/statja/ltv/311130/4-studija-zolitudes-tragedija-un-incupes-stacija',
|
'url': 'https://replay.lsm.lv/ru/skaties/statja/ltv/355067/v-kengaragse-nacalas-ukladka-relsov',
|
||||||
|
'only_matching': True,
|
||||||
|
}, {
|
||||||
|
'url': 'https://replay.lsm.lv/lv/ieraksts/ltv/311130/4-studija-zolitudes-tragedija-un-incupes-stacija',
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
}]
|
}]
|
||||||
|
|
||||||
@ -267,12 +272,24 @@ def _real_extract(self, url):
|
|||||||
|
|
||||||
data = self._search_nuxt_data(
|
data = self._search_nuxt_data(
|
||||||
self._fix_nuxt_data(webpage), video_id, context_name='__REPLAY__')
|
self._fix_nuxt_data(webpage), video_id, context_name='__REPLAY__')
|
||||||
|
playback_type = data['playback']['type']
|
||||||
|
|
||||||
|
if playback_type == 'playable_audio_lr':
|
||||||
|
playback_data = {
|
||||||
|
'formats': self._extract_m3u8_formats(data['playback']['service']['hls_url'], video_id),
|
||||||
|
}
|
||||||
|
elif playback_type == 'embed':
|
||||||
|
playback_data = {
|
||||||
|
'_type': 'url_transparent',
|
||||||
|
'url': data['playback']['service']['url'],
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
raise ExtractorError(f'Unsupported playback type "{playback_type}"')
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'_type': 'url_transparent',
|
|
||||||
'id': video_id,
|
'id': video_id,
|
||||||
|
**playback_data,
|
||||||
**traverse_obj(data, {
|
**traverse_obj(data, {
|
||||||
'url': ('playback', 'service', 'url', {url_or_none}),
|
|
||||||
'title': ('mediaItem', 'title'),
|
'title': ('mediaItem', 'title'),
|
||||||
'description': ('mediaItem', ('lead', 'body')),
|
'description': ('mediaItem', ('lead', 'body')),
|
||||||
'duration': ('mediaItem', 'duration', {int_or_none}),
|
'duration': ('mediaItem', 'duration', {int_or_none}),
|
||||||
|
Loading…
Reference in New Issue
Block a user