Compare commits

..

2 Commits

Author SHA1 Message Date
c-basalt
63654ea6f9 use early exit 2024-02-10 11:51:28 -05:00
c-basalt
ef958d16a6
Change to separate query
Co-authored-by: Simon Sawicki <accounts@grub4k.xyz>
2024-02-10 11:47:23 -05:00

View File

@ -196,7 +196,10 @@ class MicrosoftLearnIE(MicrosoftMediusBaseIE):
def _entries(self, url_base, video_id): def _entries(self, url_base, video_id):
skip = 0 skip = 0
while True: while True:
playlist_info = self._download_json(f'{url_base}&$skip={skip}', video_id, f'Downloading entries {skip}') playlist_info = self._download_json(url_base, video_id, f'Downloading entries {skip}', query={
'locale': 'en-us',
'$skip': skip,
})
items = traverse_obj(playlist_info, ( items = traverse_obj(playlist_info, (
'results', ..., 'url', {lambda x: self.url_result(f'https://learn.microsoft.com/en-us{x}')})) 'results', ..., 'url', {lambda x: self.url_result(f'https://learn.microsoft.com/en-us{x}')}))
yield from items yield from items
@ -214,14 +217,17 @@ class MicrosoftLearnIE(MicrosoftMediusBaseIE):
'description': self._og_search_description(webpage), 'description': self._og_search_description(webpage),
} }
if slug: if not slug:
url_base = f'https://learn.microsoft.com/api/contentbrowser/search/{video_type}/{series}/{"sessions" if video_type == "events" else "episodes"}'
return self.playlist_result(self._entries(url_base, video_id), video_id, **metainfo)
if video_type == 'events': if video_type == 'events':
return self.url_result( return self.url_result(
self._search_regex(r'<meta\s+name="externalVideoUrl"\s+content="([^"]+)"', webpage, 'videoUrl'), url_transparent=True, **metainfo, **{ self._search_regex(r'<meta\s+name="externalVideoUrl"\s+content="([^"]+)"', webpage, 'videoUrl'), url_transparent=True, **metainfo, **{
'timestamp': parse_iso8601(self._search_regex( 'timestamp': parse_iso8601(self._search_regex(
r'<meta\s+name="startDate"\s+content="([^"]+)"', webpage, 'date', default=None)), r'<meta\s+name="startDate"\s+content="([^"]+)"', webpage, 'date', default=None)),
}) })
else:
entry_id = self._search_regex(r'<meta name="entryId" content="([^"]+)"', webpage, 'entryId') entry_id = self._search_regex(r'<meta name="entryId" content="([^"]+)"', webpage, 'entryId')
video_info = self._download_json( video_info = self._download_json(
f'https://learn.microsoft.com/api/video/public/v1/entries/{entry_id}', video_id) f'https://learn.microsoft.com/api/video/public/v1/entries/{entry_id}', video_id)
@ -238,9 +244,6 @@ class MicrosoftLearnIE(MicrosoftMediusBaseIE):
'thumbnails': ('publicVideo', 'thumbnailOtherSizes', ..., {lambda x: {'url': x}}), 'thumbnails': ('publicVideo', 'thumbnailOtherSizes', ..., {lambda x: {'url': x}}),
}), }),
} }
else:
url_base = f'https://learn.microsoft.com/api/contentbrowser/search/{video_type}/{series}/{"sessions" if video_type == "events" else "episodes"}?locale=en-us'
return self.playlist_result(self._entries(url_base, video_id), video_id, **metainfo)
class MicrosoftBuildIE(MicrosoftMediusBaseIE): class MicrosoftBuildIE(MicrosoftMediusBaseIE):