Repository: yt-dlp/yt-dlp
File: yt_dlp/extractor/dlf.py (Python)

Code before:
                    'thumbnail': 'https://assets.deutschlandfunk.de/a595989d-1ed1-4a2e-8370-b64d7f11d757/512x512.jpg?t=1679173825412',
                    'uploader': 'Deutschlandfunk',
                    'series': 'Sport am Samstag',
                    'channel': 'deutschlandfunk'
                }
            }],
            'params': {'skip_download': 'm3u8'}
        },
        # Podcast feed with tag buttons
        {
            'url': 'https://www.deutschlandfunk.de/corso-100.html',
            'info_dict': {
                'id': False,
                'title': r're:Kunst & Pop [-/] Corso',
                'description': 'md5:ba0f80303683591bff4b7459077bef58'
            },
            'playlist_mincount': 34,
            'params': {'skip_download': True}
        },
        # Podcast feed with no description
        {
            'url': 'https://www.deutschlandfunk.de/podcast-tolle-idee-100.html',
            'info_dict': {
                'id': False,
                'title': 'Wissenschaftspodcast - Tolle Idee! - Was wurde daraus?',
                'description': None
            },
            'playlist_mincount': 11,
            'params': {'skip_download': True}
        },
    ]

    def _real_extract(self, url):
        # Multi-feed pages do not embed an ID within the URL
        webpage = self._download_webpage(url, None)

        return {
            '_type': 'playlist',
            'id': False,
            'description': self._html_search_meta(
                ['description', 'og:description', 'twitter:description'], webpage, default=None),
            'title': self._html_search_meta(
                ['og:title', 'twitter:title'], webpage),
            'entries': [self._parse_button_attrs(button)
                        for button in re.findall(self._BUTTON_REGEX, webpage)],
        }


Review comment (bug):
Keys with `None` values can be omitted from tests

Let the test_download script generate the info_dicts for you by only manually entering `url` and `id`, and then `ext` (if single media) or `playlist_count`/`playlist_mincount` (if playlist). The test will fail and output the rest of the dict for you to copy/paste

Code after:
                'title': 'Meinung - Kommentare und Themen der Woche',
                'description': 'md5:2901bbd65cd2d45e116d399a099ce5d5',
            },
            'playlist_mincount': 10,
        },
        # Podcast feed with no description
        {
            'url': 'https://www.deutschlandfunk.de/podcast-tolle-idee-100.html',
            'info_dict': {
                'id': 'podcast-tolle-idee-100',
                'title': 'Wissenschaftspodcast - Tolle Idee! - Was wurde daraus?',
            },
            'playlist_mincount': 11,
        },
    ]

    def _real_extract(self, url):
        playlist_id = self._match_id(url)
        webpage = self._download_webpage(url, playlist_id)

        return {
            '_type': 'playlist',
            'id': playlist_id,
            'description': self._html_search_meta(
                ['description', 'og:description', 'twitter:description'], webpage, default=None),
            'title': self._html_search_meta(
                ['og:title', 'twitter:title'], webpage, default=None),
            'entries': map(self._parse_button_attrs, re.findall(self._BUTTON_REGEX, webpage)),
        }