Repository: yt-dlp/yt-dlp
Issue category: Bug Report

Issue:
[Youtube] Playlist search broken
### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

- [X] I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\* field

### Checklist

- [X] I'm reporting that yt-dlp is broken on a **supported** site
- [X] I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
- [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
- [X] I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
- [X] I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
- [X] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required

### Region

Germany

### Provide a description that is worded well enough to be understood

Using the youtube search functionality with playlist filter enabled does not work anymore.
Worked on previous versions. Should be related to current playlist issues which return 0 results.

Expected behavior should be getting the json result of the playlists results.

### Provide verbose output that clearly demonstrates the problem

- [X] Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
- [X] If using API, add `'verbose': True` to `YoutubeDL` params instead
- [X] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below

### Complete Verbose Output

```shell
[debug] Command-line config: ['-vvvv', '-4', '--no-warnings', '--no-check-certificate', '--dump-json', '--playlist-start', '1', '--playlist-end', '50', '--flat-playlist', 'https://www.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2024.11.18 from yt-dlp/yt-dlp [7ea278792] (linux_exe)
[debug] Lazy loading extractors is disabled
[debug] Python 3.9.2 (CPython x86_64 64bit) - Linux-4.19.0-24-amd64-x86_64-with-glibc2.31 (OpenSSL 1.1.1w  11 Sep 2023, glibc 2.31)
[debug] exe versions: ffmpeg 4.3.8-0, ffprobe 4.3.8-0
[debug] Optional libraries: Cryptodome-3.9.7, certifi-2020.06.20, requests-2.25.1, secretstorage-3.3.1, sqlite3-3.34.1, urllib3-1.26.5
[debug] Proxy map: {}
[debug] Request Handlers: urllib
[debug] Loaded 1837 extractors
[youtube:search_url] Extracting URL: https://www.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D
[download] Downloading playlist: cute cat
[youtube:search_url] query "cute cat": Downloading web client config
[youtube:search_url] query "cute cat" page 1: Downloading API JSON
[youtube:search_url] query "cute cat" page 2: Downloading API JSON
[youtube:search_url] query "cute cat" page 3: Downloading API JSON
[youtube:search_url] query "cute cat" page 4: Downloading API JSON
[youtube:search_url] query "cute cat" page 5: Downloading API JSON
[youtube:search_url] query "cute cat" page 6: Downloading API JSON
[youtube:search_url] query "cute cat" page 7: Downloading API JSON
[youtube:search_url] query "cute cat" page 8: Downloading API JSON
[youtube:search_url] query "cute cat" page 9: Downloading API JSON
[youtube:search_url] query "cute cat" page 10: Downloading API JSON
[youtube:search_url] query "cute cat" page 11: Downloading API JSON
[youtube:search_url] query "cute cat" page 12: Downloading API JSON
[youtube:search_url] query "cute cat" page 13: Downloading API JSON
[youtube:search_url] query "cute cat" page 14: Downloading API JSON
[youtube:search_url] query "cute cat" page 15: Downloading API JSON
[youtube:search_url] query "cute cat" page 16: Downloading API JSON
[youtube:search_url] query "cute cat" page 17: Downloading API JSON
[youtube:search_url] query "cute cat" page 18: Downloading API JSON
[youtube:search_url] query "cute cat" page 19: Downloading API JSON
[youtube:search_url] query "cute cat" page 20: Downloading API JSON
[youtube:search_url] query "cute cat" page 21: Downloading API JSON
[youtube:search_url] query "cute cat" page 22: Downloading API JSON
[youtube:search_url] query "cute cat" page 23: Downloading API JSON
[youtube:search_url] query "cute cat" page 24: Downloading API JSON
[youtube:search_url] Playlist cute cat: Downloading 0 items
[debug] The information of all playlist entries will be held in memory
[download] Finished downloading playlist: cute cat
```



Hints:
did you update to nightly/master like the issue template told you to, though?
yes, i am on master and compiled it myself.




> yes, i am on master and compiled it myself.

that verbose log tells me that you are on yt-dlp stable branch and not nightly/master branch
how can i be on stable if i clone the master branche and compile it? I am on the master branche.
if you want to extract the flat-playlist from eg.
https://www.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D

its still broken in master.
> if you want to extract the flat-playlist from eg. https://www.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D
> 
> its still broken in master.

You need to change the search link to this: https://m.youtube.com/results?search_query=your+search+terms
Well that’s a potential workaround but no fix.
If YouTube is doing site/layout changes, then the parsers have to get updated and not just pointed to a mobile site, which is likely to also getting changed.
> > if you want to extract the flat-playlist from eg. https://www.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D
> > its still broken in master.
> 
> You need to change the search link to this: https://m.youtube.com/results?search_query=your+search+terms

for notice:

suggested change is also broken.

https://m.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D

does not work, as the parsing for playlists in general is broken and we only search for playlists with "&sp=EgIQAw%253D%253D" search filter added.
> > > if you want to extract the flat-playlist from eg. https://www.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D
> > > its still broken in master.
> > 
> > 
> > You need to change the search link to this: https://m.youtube.com/results?search_query=your+search+terms
> 
> for notice:
> 
> suggested change is also broken.
> 
> https://m.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D
> 
> does not work, as the parsing for playlists in general is broken and we only search for playlists with "&sp=EgIQAw%253D%253D" search filter added.

cute cat playlist as you search doesn't exist
I do not search for a specific playlist. That is a general search request to youtube to get a list of all available playlists where youtube results for the query.
This worked before and for years. To be able to search for type "playlist" only in the search results and get it back as a json response by using --flat-playlist and --dump-json
> I do not search for a specific playlist. That is a general search request to youtube to get a list of all available playlists where youtube results for the query. This worked before and for years. To be able to search for type "playlist" only in the search results and get it back as a json response by using --flat-playlist and --dump-json

playlists from youtube results for cute cat that you say don't exist now
so then whats this?:

https://www.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D

its a list of playlists for the search query "cute cat", which before yt-dlp parsed as a json list of playlist urls, with titles, amount of videos in the playlist, creator ... 

i think you don't get the point what is tried to archive here, which worked fine before.
I am currently debugging this issue and found out, that the search query calls "_search_results" function first and then "_extract_entries" is beeing called.

Inside "_extract_entries" there is a definition of known renderers:

```
known_renderers = {
                    'playlistVideoListRenderer': self._playlist_entries,
                    'gridRenderer': self._grid_entries,
                    'reelShelfRenderer': self._grid_entries,
                    'shelfRenderer': self._shelf_entries,
                    'musicResponsiveListItemRenderer': lambda x: [self._music_reponsive_list_entry(x)],
                    'backstagePostThreadRenderer': self._post_thread_entries,
                    'videoRenderer': lambda x: [self._video_entry(x)],
                    'playlistRenderer': lambda x: self._grid_entries({'items': [{'playlistRenderer': x}]}),
                    'channelRenderer': lambda x: self._grid_entries({'items': [{'channelRenderer': x}]}),
                    'hashtagTileRenderer': lambda x: [self._hashtag_tile_entry(x)],
                    'richGridRenderer': lambda x: self._extract_entries(x, continuation_list),
                }
```

which is beeing looked for.
I added prints to see whats happening for:
```
for key, renderer in isr_content.items():
                    if key not in known_renderers:
                        print("key NOT found in known_renderers: " + key)
                        continue
                    for entry in known_renderers[key](renderer):
                        print("found renderer: " + entry)
```

which results in this output:

```
[youtube:search_url] query "cute cat" page 1: Downloading API JSON
=====================_extract_entries=====================
key NOT found in known_renderers: adSlotRenderer
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: adSlotRenderer
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: adSlotRenderer
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: adSlotRenderer
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: adSlotRenderer
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
key NOT found in known_renderers: lockupViewModel
```



For me this looks like on the search results there are "lockupViewModel" which is missing in the "knwon_rednerers", so no parsing is done anymore, as continue just skips it as no renderer is defined anymore for this case.

Any ideas to speed this up fixing this? Otherwise I have to look through all the code myself.
This issue probably highly relates to:
https://github.com/yt-dlp/yt-dlp/pull/11615

I am looking how this already merged pull request can be used to solve this issue too.
How about
```diff
diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py
index e69373ba2..0814d0a06 100644
--- a/yt_dlp/extractor/youtube.py
+++ b/yt_dlp/extractor/youtube.py
@@ -5282,6 +5282,7 @@ def _extract_entries(self, parent_renderer, continuation_list):
                     'channelRenderer': lambda x: self._grid_entries({'items': [{'channelRenderer': x}]}),
                     'hashtagTileRenderer': lambda x: [self._hashtag_tile_entry(x)],
                     'richGridRenderer': lambda x: self._extract_entries(x, continuation_list),
+                    'lockupViewModel': lambda x: [self._extract_lockup_view_model(x)],
                 }
                 for key, renderer in isr_content.items():
                     if key not in known_renderers:
```
> How about
> 
> ```diff
> diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py
> index e69373ba2..0814d0a06 100644
> --- a/yt_dlp/extractor/youtube.py
> +++ b/yt_dlp/extractor/youtube.py
> @@ -5282,6 +5282,7 @@ def _extract_entries(self, parent_renderer, continuation_list):
>                      'channelRenderer': lambda x: self._grid_entries({'items': [{'channelRenderer': x}]}),
>                      'hashtagTileRenderer': lambda x: [self._hashtag_tile_entry(x)],
>                      'richGridRenderer': lambda x: self._extract_entries(x, continuation_list),
> +                    'lockupViewModel': lambda x: [self._extract_lockup_view_model(x)],
>                  }
>                  for key, renderer in isr_content.items():
>                      if key not in known_renderers:
> ```

this does work!

output:
```
=====================_extract_entries=====================
[youtube:search_url] Playlist cute cat: Downloading 50 items
[debug] The information of all playlist entries will be held in memory
[download] Downloading item 1 of 50
{"title": "Cute Cat of NI", "thumbnails": [{"url": "https://i.ytimg.com/vi/phXmMI35fIo/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLCexppnbWUPXQgz341lRGXxTwGGww", "height": 94, "width": 168}, {"url": "https://i.ytimg.com/vi/phXmMI35fIo/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLCNJgQ2qs-2znEem1B90IIx-h8QcA", "height": 110, "width": 196}, {"url": "https://i.ytimg.com/vi/phXmMI35fIo/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCpjHdPSkoqpwTrF9zPElW4ICJwkw", "height": 138, "width": 246}, {"url": "https://i.ytimg.com/vi/phXmMI35fIo/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAgoA5ZH_HfuzDBg1QYHVu4R_kRzQ", "height": 188, "width": 336}], "ie_key": "YoutubeTab", "id": "PLBFAOHoKf1k6-tWa_yjDJKxnR6srQXhSH", "_type": "url", "url": "https://www.youtube.com/playlist?list=PLBFAOHoKf1k6-tWa_yjDJKxnR6srQXhSH", "__x_forwarded_for_ip": null, "webpage_url": "https://www.youtube.com/playlist?list=PLBFAOHoKf1k6-tWa_yjDJKxnR6srQXhSH", "original_url": "https://www.youtube.com/playlist?list=PLBFAOHoKf1k6-tWa_yjDJKxnR6srQXhSH", "webpage_url_basename": "playlist", "webpage_url_domain": "youtube.com", "extractor": "youtube:tab", "extractor_key": "YoutubeTab", "playlist_count": null, "playlist": "cute cat", "playlist_id": "cute cat", "playlist_title": "cute cat", "playlist_uploader": null, "playlist_uploader_id": null, "playlist_channel": null, "playlist_channel_id": null, "playlist_webpage_url": "https://www.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D", "n_entries": 50, "playlist_index": 1, "__last_playlist_index": 50, "playlist_autonumber": 1, "epoch": 1733840411, "release_year": null, "_version": {"version": "2024.12.06", "current_git_head": null, "release_git_head": "4bd2655398aed450456197a6767639114a24eac2", "repository": "yt-dlp/yt-dlp"}}
[download] Downloading item 2 of 50
{"title": "Cute cat \u2618\ufe0f \u3010Cute Lofi Mix\ud83c\udf52\u3011\ud83c\udf3crelax / study / sleep / work / aesthetic", "thumbnails": [{"url": "https://i.ytimg.com/vi/hW9g7To610w/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDPa1XYgae4ZMThWSTnPuckBqOwYg", "height": 94, "width": 168}, {"url": "https://i.ytimg.com/vi/hW9g7To610w/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDA0cKLczY3zRxwelwc4LBRfz_FOA", "height": 110, "width": 196}, {"url": "https://i.ytimg.com/vi/hW9g7To610w/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDd60KIWDS1XMf99cU-L93sTYWa1w", "height": 138, "width": 246}, {"url": "https://i.ytimg.com/vi/hW9g7To610w/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLC2dbcOvc9nlk_OrOPTyeklrmxFXg", "height": 188, "width": 336}], "ie_key": "YoutubeTab", "id": "PLumUPw_clK5HHuZIUFXApW7jShX5JPmMJ", "_type": "url", "url": "https://www.youtube.com/playlist?list=PLumUPw_clK5HHuZIUFXApW7jShX5JPmMJ", "__x_forwarded_for_ip": null,"webpage_url": "https://www.youtube.com/playlist?list=PLumUPw_clK5HHuZIUFXApW7jShX5JPmMJ", "original_url": "https://www.youtube.com/playlist?list=PLumUPw_clK5HHuZIUFXApW7jShX5JPmMJ", "webpage_url_basename": "playlist", "webpage_url_domain": "youtube.com", "extractor": "youtube:tab", "extractor_key": "YoutubeTab", "playlist_count": null, "playlist": "cute cat", "playlist_id": "cute cat", "playlist_title": "cute cat", "playlist_uploader": null, "playlist_uploader_id": null, "playlist_channel": null, "playlist_channel_id": null, "playlist_webpage_url": "https://www.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D", "n_entries": 50, "playlist_index": 2, "__last_playlist_index": 50, "playlist_autonumber": 2, "epoch": 1733840411, "release_year": null, "_version": {"version": "2024.12.06", "current_git_head": null, "release_git_head": "4bd2655398aed450456197a6767639114a24eac2", "repository": "yt-dlp/yt-dlp"}}
[download] Downloading item 3 of 50
{"title": "Cute Kitten, Cute Cat | Little Kittens", "thumbnails": [{"url": "https://i.ytimg.com/vi/nAvtX22KNTg/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLA37XsAbQxF7--pdSd9V-8Mgdvk-Q", "height": 94, "width": 168}, {"url": "https://i.ytimg.com/vi/nAvtX22KNTg/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDgP2JXJQQ9eKyjRq_kzHH-PvSjZQ", "height": 110, "width": 196}, {"url": "https://i.ytimg.com/vi/nAvtX22KNTg/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLD7sRLFMJcsZyb78yGmcrvD3JIZmw", "height": 138, "width": 246}, {"url": "https://i.ytimg.com/vi/nAvtX22KNTg/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBE3bQuBq3UpaLpq71JYp9bmfRZnQ", "height": 188, "width": 336}], "ie_key": "YoutubeTab", "id": "PLlBfWe1gfOezsfNKeEE00vzCjgBgBVeE-", "_type": "url", "url": "https://www.youtube.com/playlist?list=PLlBfWe1gfOezsfNKeEE00vzCjgBgBVeE-", "__x_forwarded_for_ip": null, "webpage_url": "https://www.youtube.com/playlist?list=PLlBfWe1gfOezsfNKeEE00vzCjgBgBVeE-", "original_url": "https://www.youtube.com/playlist?list=PLlBfWe1gfOezsfNKeEE00vzCjgBgBVeE-", "webpage_url_basename": "playlist", "webpage_url_domain": "youtube.com", "extractor": "youtube:tab", "extractor_key": "YoutubeTab", "playlist_count": null, "playlist": "cute cat", "playlist_id": "cute cat", "playlist_title": "cute cat", "playlist_uploader": null, "playlist_uploader_id": null, "playlist_channel": null, "playlist_channel_id": null, "playlist_webpage_url": "https://www.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D", "n_entries": 50, "playlist_index": 3, "__last_playlist_index": 50, "playlist_autonumber": 3, "epoch": 1733840411, "release_year": null, "_version": {"version": "2024.12.06", "current_git_head": null, "release_git_head": "4bd2655398aed450456197a6767639114a24eac2", "repository": "yt-dlp/yt-dlp"}}
[download] Downloading item 4 of 50
{"title": "Cute Cat Videos", "thumbnails": [{"url": "https://i.ytimg.com/vi/nMeSViR6Uoc/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDZyAud_wlAIhfjJsELZG7jgfRlpw", "height": 94, "width": 168}, {"url": "https://i.ytimg.com/vi/nMeSViR6Uoc/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDqn_ufZK0wAMo5ahDJOSvyiOFLfw", "height": 110, "width": 196}, {"url": "https://i.ytimg.com/vi/nMeSViR6Uoc/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAkHUkEJUTHwdwphBPzCBmis1Ga-A", "height": 138, "width": 246}, {"url": "https://i.ytimg.com/vi/nMeSViR6Uoc/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDLyEqB0fjSAVjRU2YOLzsztNKgvA", "height": 188, "width": 336}], "ie_key": "YoutubeTab", "id": "PL7-x6iMIEpgc1Vhq-FASNb186TWXVS_u2", "_type": "url", "url": "https://www.youtube.com/playlist?list=PL7-x6iMIEpgc1Vhq-FASNb186TWXVS_u2", "__x_forwarded_for_ip": null, "webpage_url": "https://www.youtube.com/playlist?list=PL7-x6iMIEpgc1Vhq-FASNb186TWXVS_u2", "original_url": "https://www.youtube.com/playlist?list=PL7-x6iMIEpgc1Vhq-FASNb186TWXVS_u2", "webpage_url_basename": "playlist", "webpage_url_domain": "youtube.com", "extractor": "youtube:tab", "extractor_key": "YoutubeTab", "playlist_count": null, "playlist": "cute cat", "playlist_id": "cute cat", "playlist_title": "cute cat", "playlist_uploader": null, "playlist_uploader_id": null, "playlist_channel": null, "playlist_channel_id": null, "playlist_webpage_url": "https://www.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D", "n_entries": 50, "playlist_index": 4, "__last_playlist_index": 50, "playlist_autonumber": 4, "epoch": 1733840411, "release_year": null, "_version": {"version": "2024.12.06", "current_git_head": null, "release_git_head": "4bd2655398aed450456197a6767639114a24eac2", "repository": "yt-dlp/yt-dlp"}}
[download] Downloading item 5 of 50
{"title": "Cute cat and puppy world", "thumbnails": [{"url": "https://i.ytimg.com/vi/GCnQYjXvV7Q/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLBd6bosQTSVHcMWS8miLbZT2gq_ig", "height": 94, "width": 168}, {"url": "https://i.ytimg.com/vi/GCnQYjXvV7Q/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDV7lb4j_K5SUFVZQ5qRuAcU4MWNQ", "height": 110, "width": 196}, {"url": "https://i.ytimg.com/vi/GCnQYjXvV7Q/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBqjGracCqwvT3R-4U19k5GUiAY4w", "height": 138, "width": 246}, {"url": "https://i.ytimg.com/vi/GCnQYjXvV7Q/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCotimRQTnkRcbXiEDjnTTJEOwGzQ", "height": 188, "width": 336}], "ie_key": "YoutubeTab", "id": "PLdL74Q19adY0dh-ymKIxIHrwSRyIFL5a1", "_type": "url", "url": "https://www.youtube.com/playlist?list=PLdL74Q19adY0dh-ymKIxIHrwSRyIFL5a1", "__x_forwarded_for_ip": null, "webpage_url": "https://www.youtube.com/playlist?list=PLdL74Q19adY0dh-ymKIxIHrwSRyIFL5a1", "original_url": "https://www.youtube.com/playlist?list=PLdL74Q19adY0dh-ymKIxIHrwSRyIFL5a1", "webpage_url_basename": "playlist", "webpage_url_domain": "youtube.com", "extractor": "youtube:tab", "extractor_key": "YoutubeTab", "playlist_count": null, "playlist": "cute cat", "playlist_id": "cute cat", "playlist_title": "cute cat", "playlist_uploader": null, "playlist_uploader_id": null, "playlist_channel": null, "playlist_channel_id": null, "playlist_webpage_url": "https://www.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D", "n_entries": 50, "playlist_index": 5, "__last_playlist_index": 50, "playlist_autonumber": 5, "epoch": 1733840411, "release_year": null, "_version": {"version": "2024.12.06", "current_git_head": null, "release_git_head": "4bd2655398aed450456197a6767639114a24eac2", "repository": "yt-dlp/yt-dlp"}}
[download] Downloading item 6 of 50
{"title": "Duet Cats Cute Popcat Music - all SONG, CATS and FOOD", "thumbnails": [{"url": "https://i.ytimg.com/vi/X5-AkEhhjho/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLBhqwVi5L8OHVcLOc6KHVavr3Cplg", "height": 94, "width": 168}, {"url": "https://i.ytimg.com/vi/X5-AkEhhjho/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLBFRO7M6WkW6tPC_5Y__Ze9xM8M2A", "height": 110, "width": 196}, {"url": "https://i.ytimg.com/vi/X5-AkEhhjho/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLA1IVtb2WvU1ZVY4AYhDP3uT7n99A", "height": 138, "width": 246}, {"url": "https://i.ytimg.com/vi/X5-AkEhhjho/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDolJQfj3Qoim5rPS8LWifAerl5Aw", "height": 188, "width": 336}], "ie_key": "YoutubeTab", "id": "PL7DH5KKQ3-8LkwNGLHF_shz4Pmew1vtVN", "_type": "url", "url": "https://www.youtube.com/playlist?list=PL7DH5KKQ3-8LkwNGLHF_shz4Pmew1vtVN", "__x_forwarded_for_ip": null, "webpage_url": "https://www.youtube.com/playlist?list=PL7DH5KKQ3-8LkwNGLHF_shz4Pmew1vtVN", "original_url": "https://www.youtube.com/playlist?list=PL7DH5KKQ3-8LkwNGLHF_shz4Pmew1vtVN", "webpage_url_basename": "playlist", "webpage_url_domain": "youtube.com", "extractor": "youtube:tab", "extractor_key": "YoutubeTab", "playlist_count": null, "playlist": "cute cat", "playlist_id": "cute cat", "playlist_title": "cute cat", "playlist_uploader": null, "playlist_uploader_id": null, "playlist_channel": null, "playlist_channel_id": null, "playlist_webpage_url": "https://www.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D", "n_entries": 50, "playlist_index": 6, "__last_playlist_index": 50, "playlist_autonumber": 6, "epoch": 1733840411, "release_year": null, "_version": {"version": "2024.12.06", "current_git_head": null, "release_git_head": "4bd2655398aed450456197a6767639114a24eac2", "repository": "yt-dlp/yt-dlp"}}
[download] Downloading item 7 of 50
{"title": "Cute cat", "thumbnails": [{"url": "https://i.ytimg.com/vi/w9g6_xz8hUQ/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDWIKpFazsSR-TQR4NRvvEoI2dXRA", "height": 94, "width": 168}, {"url": "https://i.ytimg.com/vi/w9g6_xz8hUQ/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLB2gg6WiCJO7rSggnpyY_btM8318w", "height": 110, "width": 196}, {"url": "https://i.ytimg.com/vi/w9g6_xz8hUQ/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDVYR5pdbk9qoXhAF-kLDZT1mpIzA", "height": 138, "width": 246}, {"url": "https://i.ytimg.com/vi/w9g6_xz8hUQ/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLACrgV-nDaVlyDlUmPN8bCGwTffyQ", "height": 188, "width": 336}], "ie_key": "YoutubeTab", "id": "PL-_BwsNAuul_t0zp8SPKxbD-ktDqxiG5W", "_type": "url", "url": "https://www.youtube.com/playlist?list=PL-_BwsNAuul_t0zp8SPKxbD-ktDqxiG5W", "__x_forwarded_for_ip": null, "webpage_url": "https://www.youtube.com/playlist?list=PL-_BwsNAuul_t0zp8SPKxbD-ktDqxiG5W", "original_url": "https://www.youtube.com/playlist?list=PL-_BwsNAuul_t0zp8SPKxbD-ktDqxiG5W", "webpage_url_basename": "playlist", "webpage_url_domain": "youtube.com", "extractor": "youtube:tab", "extractor_key": "YoutubeTab", "playlist_count": null, "playlist": "cute cat", "playlist_id": "cute cat", "playlist_title": "cute cat", "playlist_uploader": null, "playlist_uploader_id": null, "playlist_channel": null, "playlist_channel_id": null, "playlist_webpage_url": "https://www.youtube.com/results?search_query=cute+cat&sp=EgIQAw%253D%253D", "n_entries": 50, "playlist_index": 7, "__last_playlist_index": 50, "playlist_autonumber": 7, "epoch": 1733840411, "release_year": null, "_version": {"version": "2024.12.06", "current_git_head": null, "release_git_head": "4bd2655398aed450456197a6767639114a24eac2", "repository": "yt-dlp/yt-dlp"}}
[download] Downloading item 8 of 50
...
```

Patch:
diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py
index e69373ba2f42..0814d0a0621b 100644
--- a/yt_dlp/extractor/youtube.py
+++ b/yt_dlp/extractor/youtube.py
@@ -5282,6 +5282,7 @@ def _extract_entries(self, parent_renderer, continuation_list):
                     'channelRenderer': lambda x: self._grid_entries({'items': [{'channelRenderer': x}]}),
                     'hashtagTileRenderer': lambda x: [self._hashtag_tile_entry(x)],
                     'richGridRenderer': lambda x: self._extract_entries(x, continuation_list),
+                    'lockupViewModel': lambda x: [self._extract_lockup_view_model(x)],
                 }
                 for key, renderer in isr_content.items():
                     if key not in known_renderers:


Test patch: