import type { ObservedArray } from '../helpers.js'; import { YTNode } from '../helpers.js'; import type { RawNode } from '../index.js'; import { Parser } from '../index.js'; import MetadataBadge from './MetadataBadge.js'; import Menu from './menus/Menu.js'; import Text from './misc/Text.js'; export default class VideoPrimaryInfo extends YTNode { static type = 'VideoPrimaryInfo'; title: Text; super_title_link?: Text; view_count: Text; short_view_count: Text; badges: ObservedArray; published: Text; relative_date: Text; menu: Menu | null; constructor(data: RawNode) { super(); this.title = new Text(data.title); if (Reflect.has(data, 'superTitleLink')) { this.super_title_link = new Text(data.superTitleLink); } this.view_count = new Text(data.viewCount?.videoViewCountRenderer?.viewCount); this.short_view_count = new Text(data.viewCount?.videoViewCountRenderer?.shortViewCount); this.badges = Parser.parseArray(data.badges, MetadataBadge); this.published = new Text(data.dateText); this.relative_date = new Text(data.relativeDateText); this.menu = Parser.parseItem(data.videoActions, Menu); } }