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

Code before:
            'timestamp': 1724070828,
            'uploader_url': 'https://mixch.tv/u/12299174',
            'live_status': 'not_live',
            'upload_date': '20240819',
        },
    }, {
        'url': 'https://mixch.tv/m/61DzpIKE',
        'only_matching': True,
    }]

    def _real_extract(self, url):
        video_id = self._match_id(url)
        data = self._download_json(
            f'https://mixch.tv/api-web/movies/{video_id}', video_id)
        return {
            'id': video_id,
            'formats': [{
                'format_id': 'mp4',
                'url': data['movie']['file'],
                'ext': 'mp4',
            }],
            **traverse_obj(data, {
                'title': ('movie', 'title', {str}),
                'thumbnail': ('movie', 'thumbnailURL', {url_or_none}),
                'uploader': ('ownerInfo', 'name', {str}),
                'uploader_id': ('ownerInfo', 'id', {int_or_none}),
                'channel_follower_count': ('ownerInfo', 'fan', {int_or_none}),
                'view_count': ('ownerInfo', 'view', {int_or_none}),
                'like_count': ('movie', 'favCount', {int_or_none}),
                'comment_count': ('movie', 'commentCount', {int_or_none}),
                'timestamp': ('movie', 'published', {int_or_none}),
                'uploader_url': ('ownerInfo', 'id', {lambda x: x and f'https://mixch.tv/u/{x}'}, filter),
            }),
            'live_status': 'not_live',
        }


Review comment (suggestion):
shouldn't be int
```suggestion
                'uploader_id': ('ownerInfo', 'id', {str}),
```

or
```suggestion
                'uploader_id': ('ownerInfo', 'id', {int}, {str_or_none}),
```

Code after:
            'timestamp': 1724070828,
            'uploader_url': 'https://mixch.tv/u/12299174',
            'live_status': 'not_live',
            'upload_date': '20240819',
        },
    }, {
        'url': 'https://mixch.tv/m/61DzpIKE',
        'only_matching': True,
    }]

    def _real_extract(self, url):
        video_id = self._match_id(url)
        data = self._download_json(
            f'https://mixch.tv/api-web/movies/{video_id}', video_id)
        return {
            'id': video_id,
            'formats': [{
                'format_id': 'mp4',
                'url': data['movie']['file'],
                'ext': 'mp4',
            }],
            **traverse_obj(data, {
                'title': ('movie', 'title', {str}),
                'thumbnail': ('movie', 'thumbnailURL', {url_or_none}),
                'uploader': ('ownerInfo', 'name', {str}),
                'uploader_id': ('ownerInfo', 'id', {int}, {str_or_none}),
                'channel_follower_count': ('ownerInfo', 'fan', {int_or_none}),
                'view_count': ('ownerInfo', 'view', {int_or_none}),
                'like_count': ('movie', 'favCount', {int_or_none}),
                'comment_count': ('movie', 'commentCount', {int_or_none}),
                'timestamp': ('movie', 'published', {int_or_none}),
                'uploader_url': ('ownerInfo', 'id', {lambda x: x and f'https://mixch.tv/u/{x}'}, filter),
            }),
            'live_status': 'not_live',
        }