def fetch_video_info ( video_code: str, ) -> VideoInfo | None: bs = _create_bs_from_url (f"https://www.nicovideo.jp/watch/{ video_code }") if bs is None: return None try: title = bs.find ('title') if title is None: return None title = '-'.join (title.text.split ('-')[:(-1)])[:(-1)] tags_str: str = bs.find ('meta', attrs = { 'name': 'keywords' }).get ('content') # type: ignore tags = tags_str.split (',') description = bs.find ('meta', attrs = { 'name': 'description' }).get ('content') # type: ignore except Exception: return None return { 'contentId': video_code, 'title': title, 'tags': tags, 'description': description }