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

Code before:
            'episode': 'Om vetenskap, kritiskt tänkande och motstånd',
            'age_limit': 15,
        },
    }, {
        'url': 'https://urplay.se/program/222967-en-foralders-dagbok-mitt-barn-skadar-sig-sjalv',
        'info_dict': {
            'id': '222967',
            'ext': 'mp4',
            'title': 'En förälders dagbok : Mitt barn skadar sig själv',
            'description': 'md5:9f771eef03a732a213b367b52fe826ca',
            'thumbnail': r're:^https?://.+\.jpg',
            'timestamp': 1629676800,
            'upload_date': '20210823',
            'series': 'En förälders dagbok',
            'duration': 1740,
            'age_limit': 15,
            'episode_number': 3,
            'categories': ['Hälsa & relationer / Familj & sociala relationer',
                           'Hälsa & relationer / Psykisk ohälsa'],
            'tags': ["Familjesociologi",
                     "Föräldrar och barn",
                     "Föräldraskap",
                     "Psykiatri",
                     "Samhällsvetenskap",
                     "Självdestruktivt beteende",
                     "Sociologi"],
            'episode': 'Mitt barn skadar sig själv',
        },
    }, {
        'url': 'https://urskola.se/Produkter/190031-Tripp-Trapp-Trad-Sovkudde',
        'info_dict': {
            'id': '190031',
            'ext': 'mp4',
            'title': 'Tripp, Trapp, Träd : Sovkudde',
            'description': 'md5:b86bffdae04a7e9379d1d7e5947df1d1',
            'thumbnail': r're:^https?://.+\.jpg',
            'timestamp': 1440086400,
            'upload_date': '20150820',
            'series': 'Tripp, Trapp, Träd',
            'duration': 865,
            'age_limit': 1,
            'episode_number': 1,
            'categories': [],
            'tags': ['Sova'],
            'episode': 'Sovkudde',
            'season': 'Säsong 1',
        },
    }, {
        'url': 'http://urskola.se/Produkter/155794-Smasagor-meankieli-Grodan-i-vida-varlden',
        'only_matching': True,
    }]

Review comment (suggestion):
```suggestion
            'categories': 'count:2',
            'tags': 'count:7',
```

Code after:
            'episode': 'Om vetenskap, kritiskt tänkande och motstånd',
            'age_limit': 15,
        },
    }, {
        'url': 'https://urplay.se/program/222967-en-foralders-dagbok-mitt-barn-skadar-sig-sjalv',
        'info_dict': {
            'id': '222967',
            'ext': 'mp4',
            'title': 'En förälders dagbok : Mitt barn skadar sig själv',
            'description': 'md5:9f771eef03a732a213b367b52fe826ca',
            'thumbnail': r're:^https?://.+\.jpg',
            'timestamp': 1629676800,
            'upload_date': '20210823',
            'series': 'En förälders dagbok',
            'duration': 1740,
            'age_limit': 15,
            'episode_number': 3,
            'categories': 'count:2',
            'tags': 'count:7',
            'episode': 'Mitt barn skadar sig själv',
        },
    }, {
        'url': 'https://urskola.se/Produkter/190031-Tripp-Trapp-Trad-Sovkudde',
        'info_dict': {
            'id': '190031',
            'ext': 'mp4',
            'title': 'Tripp, Trapp, Träd : Sovkudde',
            'description': 'md5:b86bffdae04a7e9379d1d7e5947df1d1',
            'thumbnail': r're:^https?://.+\.jpg',
            'timestamp': 1440086400,
            'upload_date': '20150820',
            'series': 'Tripp, Trapp, Träd',
            'duration': 865,
            'age_limit': 1,
            'episode_number': 1,
            'categories': [],
            'tags': ['Sova'],
            'episode': 'Sovkudde',
            'season': 'Säsong 1',
        },
    }, {
        'url': 'http://urskola.se/Produkter/155794-Smasagor-meankieli-Grodan-i-vida-varlden',
        'only_matching': True,
    }]

    def _real_extract(self, url):
        video_id = self._match_id(url)
        url = url.replace('skola.se/Produkter', 'play.se/program')
        webpage = self._download_webpage(url, video_id)
        urplayer_data = self._search_nextjs_data(webpage, video_id, fatal=False) or {}
        if urplayer_data: