def METHOD_NAME(self, url):
    site_type, display_id = self._match_valid_url(url).group('type', 'display_id')
    webpage = self._download_webpage(url, display_id)
    nextjs_json = self._search_nextjs_data(webpage, display_id)['props']['pageProps']['data']
    return {
        '_type': 'playlist',
        'entries': self._entries(
            [nextjs_json['video']] if site_type == 'video' else nextjs_json['items'], display_id),
        'id': str(nextjs_json['id']),
        'title': nextjs_json.get('title') or self._html_search_meta(['title', 'og:title', 'twitter:title'], webpage),
        'description': (nextjs_json.get('description')
                        or self._html_search_meta(['description', 'twitter:description', 'og:description'], webpage)),
        'tags': nextjs_json.get('keywords'),
        'modified_timestamp': parse_iso8601(nextjs_json.get('modifiedAt')),
        'thumbnail': nextjs_json.get('shareImageSrc') or self._html_search_meta(['og:image', 'twitter:image'], webpage),
        'timestamp': parse_iso8601(nextjs_json.get('publishedAt')),
        'categories': traverse_obj(nextjs_json, ('categories', ..., 'label')),
    }