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

Code before:


class MLBArticleIE(InfoExtractor):
    _VALID_URL = r'https?://www\.mlb\.com/news/(?P<id>[\w-]+)'
    _TESTS = [{
        'url': 'https://www.mlb.com/news/manny-machado-robs-guillermo-heredia-reacts',
        'info_dict': {
            'id': '36db7394-343c-4ea3-b8ca-ead2e61bca9a',
            'title': 'Machado\'s grab draws hilarious irate reaction',
            'modified_timestamp': 1675888370,
            'description': 'md5:a19d4eb0487b2cb304e9a176f6b67676',
            'modified_date': '20230208',
        },
        'playlist_mincount': 2,
    }]

    def _real_extract(self, url):
        display_id = self._match_id(url)
        webpage = self._download_webpage(url, display_id)
        apollo_cache_json = self._search_json(r'window\.initState\s*=', webpage, 'window.initState', display_id)['apolloCache']

        content_real_info = traverse_obj(
            apollo_cache_json, ('ROOT_QUERY', lambda k, _: k.startswith('getArticle')), get_all=False)

        return self.playlist_from_matches(
            traverse_obj(content_real_info, ('parts', lambda _, v: (v['__typename'] == 'Video' or v['type'] == 'video'))),
            getter=lambda x: f'https://www.mlb.com/video/{x["slug"]}',
            ie=MLBVideoIE, playlist_id=content_real_info.get('translationId'),
            title=self._html_search_meta('og:title', webpage),
            description=content_real_info.get('summary'),
            modified_timestamp=parse_iso8601(content_real_info.get('lastUpdatedDate')))


Review comment (suggestion):
```suggestion
            traverse_obj(content_real_info, ('parts', lambda _, v: v['__typename'] == 'Video' or v['type'] == 'video')),
```

Code after:


class MLBArticleIE(InfoExtractor):
    _VALID_URL = r'https?://www\.mlb\.com/news/(?P<id>[\w-]+)'
    _TESTS = [{
        'url': 'https://www.mlb.com/news/manny-machado-robs-guillermo-heredia-reacts',
        'info_dict': {
            'id': '36db7394-343c-4ea3-b8ca-ead2e61bca9a',
            'title': 'Machado\'s grab draws hilarious irate reaction',
            'modified_timestamp': 1675888370,
            'description': 'md5:a19d4eb0487b2cb304e9a176f6b67676',
            'modified_date': '20230208',
        },
        'playlist_mincount': 2,
    }]

    def _real_extract(self, url):
        display_id = self._match_id(url)
        webpage = self._download_webpage(url, display_id)
        apollo_cache_json = self._search_json(r'window\.initState\s*=', webpage, 'window.initState', display_id)['apolloCache']

        content_real_info = traverse_obj(
            apollo_cache_json, ('ROOT_QUERY', lambda k, _: k.startswith('getArticle')), get_all=False)

        return self.playlist_from_matches(
            traverse_obj(content_real_info, ('parts', lambda _, v: v['__typename'] == 'Video' or v['type'] == 'video')),
            getter=lambda x: f'https://www.mlb.com/video/{x["slug"]}',
            ie=MLBVideoIE, playlist_id=content_real_info.get('translationId'),
            title=self._html_search_meta('og:title', webpage),
            description=content_real_info.get('summary'),
            modified_timestamp=parse_iso8601(content_real_info.get('lastUpdatedDate')))