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

Code before:
                note=f'Downloading {media_typ} metadata')

            stream = self._download_json(
                'https://www.floatplane.com/api/v2/cdn/delivery', media_id,
                query={
                    'type': 'vod' if media_typ == 'video' else 'aod',
                    'guid': metadata['guid']
                },
                note=f'Downloading {media_typ} stream data')

            def format_path(params):
                path = traverse_obj(stream, ('resource', 'uri', {str}))
                for i, val in (params or {}).items():
                    path = path.replace(f'{{qualityLevelParams.{i}}}', val)
                return path

            formats = []
            for quality in traverse_obj(stream, ('resource', 'data', 'qualityLevels', ...)):
                url = urljoin(stream['cdn'], format_path(traverse_obj(
                    stream, ('resource', 'data', 'qualityLevelParams', quality['name']))))
                formats.append({
                    **traverse_obj(quality, {
                        'format_id': 'name',
                        'format_note': 'label',
                        'width': 'width',
                        'height': 'height',
                    }),
                    **parse_codecs(quality.get('codecs')),
                    'url': url,
                    'ext': determine_ext(url.partition('/chunk.m3u8')[0], 'mp4'),
                })

            items.append({
                'id': media_id,
                **traverse_obj(metadata, {
                    'title': 'title',
                    'duration': ('duration', {int_or_none}),
                    'thumbnail': ('thumbnail', 'path'),
                }),
                'formats': formats,
            })

        uploader_url = traverse_obj(
            post_data, ('creator', 'urlname', {lambda x: f'https://www.floatplane.com/channel/{x}/home'
                                               if x else None}))
        channel_url = traverse_obj(
            post_data, ('channel', 'urlname', {lambda x: f'{uploader_url}/{x}'
                                               if x and uploader_url else None}))

        post_info = {
            'id': post_id,

Review comment (suggestion):
```suggestion
                        'width': ('width', {int}),
                        'height': ('height', {int}),
```

Code after:
                f'https://www.floatplane.com/api/v3/content/{media_typ}', media_id, query={'id': media_id},
                note=f'Downloading {media_typ} metadata')

            stream = self._download_json(
                'https://www.floatplane.com/api/v2/cdn/delivery', media_id, query={
                    'type': 'vod' if media_typ == 'video' else 'aod',
                    'guid': metadata['guid']
                }, note=f'Downloading {media_typ} stream data')

            path_template = traverse_obj(stream, ('resource', 'uri', {str}))

            def format_path(params):
                path = path_template
                for i, val in (params or {}).items():
                    path = path.replace(f'{{qualityLevelParams.{i}}}', val)
                return path

            formats = []
            for quality in traverse_obj(stream, ('resource', 'data', 'qualityLevels', ...)):
                url = urljoin(stream['cdn'], format_path(traverse_obj(
                    stream, ('resource', 'data', 'qualityLevelParams', quality['name']))))
                formats.append({
                    **traverse_obj(quality, {
                        'format_id': 'name',
                        'format_note': 'label',
                        'width': ('width', {int}),
                        'height': ('height', {int}),
                    }),
                    **parse_codecs(quality.get('codecs')),
                    'url': url,
                    'ext': determine_ext(url.partition('/chunk.m3u8')[0], 'mp4'),
                })

            items.append({
                'id': media_id,
                **traverse_obj(metadata, {
                    'title': 'title',
                    'duration': ('duration', {int_or_none}),
                    'thumbnail': ('thumbnail', 'path'),
                }),
                'formats': formats,
            })

        uploader_url = format_field(traverse_obj(
            post_data, 'creator'), 'urlname', 'https://www.floatplane.com/channel/%s/home', default=None)
        channel_url = urljoin(f'{uploader_url}/', traverse_obj(post_data, ('channel', 'urlname')))

        post_info = {
            'id': post_id,
            'display_id': post_id,
            **traverse_obj(post_data, {