def METHOD_NAME(self, data, video_id=None):
    video = data['video']
    description = str_or_none(try_get(data, lambda x: x['desc']))
    width = int_or_none(try_get(data, lambda x: video['width']))
    height = int_or_none(try_get(data, lambda x: video['height']))
    format_urls = set()
    formats = []
    for format_id in ('download', 'play'):
        format_url = url_or_none(video.get('%sAddr' % format_id))
        if not format_url:
            continue
        if format_url in format_urls:
            continue
        format_urls.add(format_url)
        formats.append({
            'url': format_url,
            'ext': 'mp4',
            'height': height,
            'width': width,
            'http_headers': {
                'Referer': 'https://www.tiktok.com/',
            }
        })
    self._sort_formats(formats)
    thumbnail = url_or_none(video.get('cover'))
    duration = float_or_none(video.get('duration'))
    uploader = try_get(data, lambda x: x['author']['nickname'], compat_str)
    uploader_id = try_get(data, lambda x: x['author']['id'], compat_str)
    timestamp = int_or_none(data.get('createTime'))
    def stats(key):
        return int_or_none(try_get(
            data, lambda x: x['stats']['%sCount' % key]))
    view_count = stats('play')
    like_count = stats('digg')
    comment_count = stats('comment')
    repost_count = stats('share')
    aweme_id = data.get('id') or video_id
    return {
        'id': aweme_id,
        'title': uploader or aweme_id,
        'description': description,
        'thumbnail': thumbnail,
        'duration': duration,
        'uploader': uploader,
        'uploader_id': uploader_id,
        'timestamp': timestamp,
        'view_count': view_count,
        'like_count': like_count,
        'comment_count': comment_count,
        'repost_count': repost_count,
        'formats': formats,
    }