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

Code before:
            'ext': 'mp3',
            'title': 'Máte po celé sezóně poslouchání Čelistí právo na wellness, nebo můžete být rádi, že jste vůbec naživu? Poslechněte si filmově kritickou bilanci všeho, co v uplynulých měsících stálo za vidění',
            'description': '8888928: Vánoce s Radiem Wave | 7702992: Český rozhlas má nadílku pro každého',
            'duration': 1574
        }
    }]

    def find_element(self, webpage):
        # Use utils.get_element_text_and_html_by_tag() instead when it accepts less strict html.

        playerDiv = ''
        for k, line in enumerate(webpage.split("\n")):
            if line.find('mujRozhlasPlayer') != -1:
                playerDiv = line.strip()
                break

        if playerDiv.count('<div') > 1:
            for k, element in enumerate(playerDiv.split('<div')):
                if element.count('mujRozhlasPlayer') == 1:
                    playerDiv = '<div' + element
                    break

        return playerDiv

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

        playerDiv = self.find_element(webpage)

        jsonString = extract_attributes(playerDiv).get('data-player')
        jsonData = json.loads(jsonString)

        entries = []
        for entry in jsonData.get("data").get('playlist'):
            entry0 = entry.get('audioLinks')[0]
            format = {
                'url': entry0.get('url'),
                'ext': entry0.get('variant'),
                'format_id': entry0.get('variant'),
                'abr': entry0.get('bitrate'),
                'acodec': entry0.get('variant'),
                'vcodec': 'none',
            }
            temp = {
                'id': self._match_id(url),  # Prefering to user entry.get('meta').get('ga').get('contentId') for id. Using this because of tests.
                'title': entry.get('title'),
                'description': entry.get('meta').get('ga').get('contentEvent'),
                'duration': entry.get('duration'),
                'formats': [format],
            }
            entries.append(temp)

Review comment (suggestion):
```suggestion
        video_id = self._match_id(url)
        webpage = self._download_webpage(url, video_id)
```

Code after:
            'info_dict': {
                'id': '10520988',
                'ext': 'mp3',
                'title': 'Papej masíčko! Porcujeme a bilancujeme filmy a seriály, které to letos zabily',
                'description': 'md5:1c6d29fb9564e1f17fc1bb83ae7da0bc',
                'duration': 1574,
                'artist': 'Aleš Stuchlý',
                'channel_id': 'radio-wave',
            },
        }]
    }, {
        'url': 'https://wave.rozhlas.cz/poslechnete-si-neklid-podcastovy-thriller-o-vine-strachu-a-vztahu-ktery-zasel-8554744',
        'info_dict': {
            'id': 8554744,
            'title': 'Poslechněte si Neklid. Podcastový thriller o vině, strachu a vztahu, který zašel příliš daleko',
        },
        'playlist_count': 5,
        'playlist': [{
            'md5': '93d4109cf8f40523699ae9c1d4600bdd',
            'info_dict': {
                'id': '9890713',
                'ext': 'mp3',
                'title': 'Neklid #1',
                'description': '1. díl: Neklid: 1. díl',
                'duration': 1025,
                'artist': 'Josef Kokta',
                'channel_id': 'radio-wave',
                'chapter': 'Neklid #1',
                'chapter_number': 1,
            },
        }, {
            'md5': 'e9763235be4a6dcf94bc8a5bac1ca126',
            'info_dict': {
                'id': '9890716',
                'ext': 'mp3',
                'title': 'Neklid #2',
                'description': '2. díl: Neklid: 2. díl',
                'duration': 768,
                'artist': 'Josef Kokta',
                'channel_id': 'radio-wave',
                'chapter': 'Neklid #2',
                'chapter_number': 2,
            },
        }, {
            'md5': '00b642ea94b78cc949ac84da09f87895',
            'info_dict': {
                'id': '9890722',
                'ext': 'mp3',
                'title': 'Neklid #3',
                'description': '3. díl: Neklid: 3. díl',
                'duration': 607,