From 421522e464e43cb92cdd1b70d2d7a918b815ccba Mon Sep 17 00:00:00 2001 From: jonz94 Date: Mon, 16 Dec 2024 18:12:39 +0800 Subject: [PATCH] feat(parser): Update `LiveChatTickerPaidStickerItem` The `LiveChatTickerPaidStickerItem` class has been updated to extend `YTNode` instead of `LiveChatTickerPaidMessageItem` to better align with the latest data provided by InnerTube --- .../items/LiveChatTickerPaidStickerItem.ts | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/src/parser/classes/livechat/items/LiveChatTickerPaidStickerItem.ts b/src/parser/classes/livechat/items/LiveChatTickerPaidStickerItem.ts index 008a106ed..caa21d13a 100644 --- a/src/parser/classes/livechat/items/LiveChatTickerPaidStickerItem.ts +++ b/src/parser/classes/livechat/items/LiveChatTickerPaidStickerItem.ts @@ -1,5 +1,40 @@ -import LiveChatTickerPaidMessageItem from './LiveChatTickerPaidMessageItem.js'; +import { YTNode } from '../../../helpers.js'; +import { Parser, type RawNode } from '../../../index.js'; +import Thumbnail from '../../misc/Thumbnail.js'; +import NavigationEndpoint from '../../NavigationEndpoint.js'; -export default class LiveChatTickerPaidStickerItem extends LiveChatTickerPaidMessageItem { +export default class LiveChatTickerPaidStickerItem extends YTNode { static type = 'LiveChatTickerPaidStickerItem'; + + id: string; + author_external_channel_id: string; + author_photo: Thumbnail[]; + start_background_color: number; + end_background_color: number; + duration_sec: number; + full_duration_sec: number; + show_item: YTNode; + show_item_endpoint: NavigationEndpoint; + ticker_thumbnails: { + thumbnails: Thumbnail[], + label?: string, + }[]; + + constructor(data: RawNode) { + super(); + this.id = data.id; + this.author_external_channel_id = data.authorExternalChannelId; + this.author_photo = Thumbnail.fromResponse(data.authorPhoto); + this.start_background_color = data.startBackgroundColor; + this.end_background_color = data.endBackgroundColor; + this.duration_sec = data.durationSec; + this.full_duration_sec = data.fullDurationSec; + this.show_item = Parser.parseItem(data.showItemEndpoint?.showLiveChatItemEndpoint?.renderer); + this.show_item_endpoint = new NavigationEndpoint(data.showItemEndpoint); + + this.ticker_thumbnails = data.tickerThumbnails.map((item: any) => ({ + thumbnails: Thumbnail.fromResponse(item), + label: item?.accessibility?.accessibilityData?.label + })); + } } \ No newline at end of file