mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-07 20:30:41 -05:00
[youtube:user] Workaround 35 pages limitation (Closes #5778)
This commit is contained in:
parent
1ae7ff771b
commit
386bdfa698
1 changed files with 20 additions and 0 deletions
|
@ -1399,6 +1399,26 @@ def _real_extract(self, url):
|
|||
channel_id = self._match_id(url)
|
||||
|
||||
url = self._TEMPLATE_URL % channel_id
|
||||
|
||||
# Channel by page listing is restricted to 35 pages of 30 items, i.e. 1050 videos total (see #5778)
|
||||
# Workaround by extracting as a playlist if managed to obtain channel playlist URL
|
||||
# otherwise fallback on channel by page extraction
|
||||
channel_page = self._download_webpage(
|
||||
url + '?view=57', channel_id,
|
||||
'Downloading channel page', fatal=False)
|
||||
channel_playlist_id = self._search_regex(
|
||||
[r'<meta itemprop="channelId" content="([^"]+)">',
|
||||
r'data-channel-external-id="([^"]+)"'],
|
||||
channel_page, 'channel id', default=None)
|
||||
if channel_playlist_id and channel_playlist_id.startswith('UC'):
|
||||
playlist_id = 'UU' + channel_playlist_id[2:]
|
||||
channel_playlist = unescapeHTML(self._search_regex(
|
||||
r'href="/?(watch\?v=[0-9A-Za-z_-]{11}&list=%s)"' % playlist_id,
|
||||
channel_page, 'channel playlist URL', default=None))
|
||||
if channel_playlist:
|
||||
return self.url_result(
|
||||
compat_urlparse.urljoin(url, '/%s' % channel_playlist), 'YoutubePlaylist')
|
||||
|
||||
channel_page = self._download_webpage(url, channel_id, 'Downloading page #1')
|
||||
autogenerated = re.search(r'''(?x)
|
||||
class="[^"]*?(?:
|
||||
|
|
Loading…
Reference in a new issue