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

Code before:
        content_data = self._download_json(
            f'https://content.uplynk.com/preplay/{cid}/multiple.json', video_id, 'Downloading Content Data', query={
                'v': preplay_parameters.get('preplayAPIVersion'),
                'tc': preplay_parameters.get('tokenCheckAlgorithmVersion'),
                'rn': preplay_parameters.get('randomNumber'),
                'exp': preplay_parameters.get('tokenExpirationDate'),
                'ct': preplay_parameters.get('contentType'),
                'cid': cid,
                'mbtracks': preplay_parameters.get('tracksAssetNumber'),
                'ad': preplay_parameters.get('adConfiguration'),
                'ad.preroll': int(preplay_parameters.get('adPreroll')),
                'ad.cmsid': preplay_parameters.get('adCMSSourceId'),
                'ad.vid': preplay_parameters.get('adSourceVideoID'),
                'sig': preplay_parameters.get('signature'),
            })

        formats = self._extract_m3u8_formats(
            content_data.get('playURL'), video_id, note='Downloading m3u8 Information')

        return {
            'id': video_id,
            'title': json_data.get('title'),
            'description': json_data.get('description'),
            'duration': int_or_none(json_data.get('duration')),
            'release_timestamp': unified_timestamp(video_details.get('dateOfRelease')),
            'categories': [video_details.get('videoCategory'), video_details.get('videoSubcategory')],
            'thumbnail': traverse_obj(video_details, ('backgroundImage', 'src')),
            'formats': formats,
        }


Review comment (suggestion):
```suggestion
            'categories': traverse_obj(video_details, (('videoCategory', 'videoSubcategory'),)),
```

Code after:
        cid = f'{json_data["preIdentId"]},{json_data["verizonAssetId"]},{json_data["postIdentId"]}'
        content_data = self._download_json(
            f'https://content.uplynk.com/preplay/{cid}/multiple.json', video_id, 'Downloading Content Data', query={
                'v': preplay_parameters['preplayAPIVersion'],
                'tc': preplay_parameters['tokenCheckAlgorithmVersion'],
                'rn': preplay_parameters['randomNumber'],
                'exp': preplay_parameters['tokenExpirationDate'],
                'ct': preplay_parameters['contentType'],
                'cid': cid,
                'mbtracks': preplay_parameters['tracksAssetNumber'],
                'ad': preplay_parameters['adConfiguration'],
                'ad.preroll': int(preplay_parameters['adPreroll']),
                'ad.cmsid': preplay_parameters['adCMSSourceId'],
                'ad.vid': preplay_parameters['adSourceVideoID'],
                'sig': preplay_parameters['signature'],
            })

        formats = self._extract_m3u8_formats(
            content_data['playURL'], video_id, note='Downloading m3u8 Information')

        return {
            'id': video_id,
            'title': json_data.get('title'),
            'description': json_data.get('description'),
            'duration': int_or_none(json_data.get('duration')),
            'release_timestamp': unified_timestamp(video_details.get('dateOfRelease')),
            'categories': traverse_obj(video_details, (('videoCategory', 'videoSubcategory'),)),
            'thumbnail': traverse_obj(video_details, ('backgroundImage', 'src')),
            'formats': formats,
        }