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

Code before:
            'id': 'ochenlichnoe',
            'title': 'Очень личное',
            'description': 'md5:ee36a6a52546b91b487fe08c552fdbb2',
        },
        'playlist_mincount': 20,
    }, {
        'url': 'https://geekcity.mave.digital/',
        'info_dict': {
            'id': 'geekcity',
            'title': 'Мужчины в трико',
            'description': 'md5:4164d425d60a0d97abdce9d1f6f8e049',
        },
        'playlist_mincount': 80,
    }]
    _PAGE_SIZE = 50

    def _entries(self, channel_id, channel_meta, page_num):
        page_data = self._download_json(
            f'{self._API_BASE_URL}/{channel_id}/episodes', channel_id, query={
                'view': 'all',
                'page': page_num + 1,
                'sort': 'newest',
                'format': 'all',
            }, note=f'Downloading page {page_num + 1}')
        for ep in traverse_obj(page_data, ('episodes', ..., {dict})):
            yield self._create_entry(channel_id, channel_meta, episode_meta=ep)

    def _real_extract(self, url):
        channel_id = self._match_id(url)

        channel_meta = self._load_channel_meta(channel_id, channel_id)

        return {
            '_type': 'playlist',
            'id': channel_id,
            **traverse_obj(channel_meta, {
                'title': ('podcast', 'title', {str}),
                'description': ('podcast', 'description', {str}),
            }),
            'entries': InAdvancePagedList(
                functools.partial(self._entries, channel_id, channel_meta),
                math.ceil(channel_meta['podcast']['episodes_count'] / self._PAGE_SIZE), self._PAGE_SIZE),
        }


Review comment (suggestion):
```suggestion
            yield self._create_entry(channel_id, channel_meta, ep)
```

Code after:
            'id': 'ochenlichnoe',
            'title': 'Очень личное',
            'description': 'md5:ee36a6a52546b91b487fe08c552fdbb2',
        },
        'playlist_mincount': 20,
    }, {
        'url': 'https://geekcity.mave.digital/',
        'info_dict': {
            'id': 'geekcity',
            'title': 'Мужчины в трико',
            'description': 'md5:4164d425d60a0d97abdce9d1f6f8e049',
        },
        'playlist_mincount': 80,
    }]
    _PAGE_SIZE = 50

    def _entries(self, channel_id, channel_meta, page_num):
        page_data = self._download_json(
            f'{self._API_BASE_URL}/{channel_id}/episodes', channel_id, query={
                'view': 'all',
                'page': page_num + 1,
                'sort': 'newest',
                'format': 'all',
            }, note=f'Downloading page {page_num + 1}')
        for ep in traverse_obj(page_data, ('episodes', lambda _, v: v['audio'] and v['id'])):
            yield self._create_entry(channel_id, channel_meta, ep)

    def _real_extract(self, url):
        channel_id = self._match_id(url)

        channel_meta = self._load_channel_meta(channel_id, channel_id)

        return {
            '_type': 'playlist',
            'id': channel_id,
            **traverse_obj(channel_meta, {
                'title': ('title', {str}),
                'description': ('description', {str}),
            }),
            'entries': InAdvancePagedList(
                functools.partial(self._entries, channel_id, channel_meta),
                math.ceil(channel_meta['episodes_count'] / self._PAGE_SIZE), self._PAGE_SIZE),
        }