From 2165ce2c3f0bd93534002000965a720d98458832 Mon Sep 17 00:00:00 2001 From: Angelo Verlain Date: Mon, 1 Apr 2024 04:58:53 +0200 Subject: [PATCH] feat: get FlatSong's LikeStatus --- parsers/browsing.ts | 3 +++ parsers/playlists.ts | 12 +++++------- parsers/songs.ts | 5 +++++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/parsers/browsing.ts b/parsers/browsing.ts index b493a87..98fa114 100644 --- a/parsers/browsing.ts +++ b/parsers/browsing.ts @@ -31,6 +31,7 @@ import { } from "../nav.ts"; import { get_option } from "../setup.ts"; import { j, jo } from "../util.ts"; +import { get_buttons_like_status } from "./songs.ts"; import { ArtistRun, get_library_like_status, @@ -520,6 +521,7 @@ export interface FlatSong { id: string; } | null; views: string | null; + likeStatus: LikeStatus | null; } export function parse_song_flat(data: any) { @@ -537,6 +539,7 @@ export function parse_song_flat(data: any) { isExplicit: jo(data, BADGE_LABEL) != null, album: null, views: null, + likeStatus: get_buttons_like_status(data), }; if ( diff --git a/parsers/playlists.ts b/parsers/playlists.ts index 87d5f22..1968b54 100644 --- a/parsers/playlists.ts +++ b/parsers/playlists.ts @@ -1,7 +1,6 @@ import { BADGE_LABEL, MENU_ITEMS, - MENU_LIKE_STATUS, MENU_SERVICE, MRLIR, NAVIGATION_VIDEO_TYPE, @@ -14,6 +13,7 @@ import { j, jo } from "../util.ts"; import { TrendChange } from "./browsing.ts"; import { Album, + get_buttons_like_status, LikeStatus, MenuTokens, parse_song_album, @@ -66,7 +66,7 @@ export const parse_playlist_items = ( const data = result[MRLIR]; - let videoId = null, setVideoId = null, like = null, feedback_tokens = null; + let videoId = null, setVideoId = null, feedback_tokens = null; // if the item has a menu, find its setVideoId if ("menu" in data) { @@ -95,13 +95,11 @@ export const parse_playlist_items = ( if (play != null) { if ("playNavigationEndpoint" in play) { videoId = j(play, "playNavigationEndpoint.watchEndpoint.videoId"); - - if ("menu" in data) { - like = jo(data, MENU_LIKE_STATUS); - } } } + const likeStatus = get_buttons_like_status(data)!; + const title = get_item_text(data, 0); if (title == "Song deleted") { @@ -148,7 +146,7 @@ export const parse_playlist_items = ( title, artists, album, - likeStatus: like, + likeStatus, thumbnails, isAvailable, isExplicit, diff --git a/parsers/songs.ts b/parsers/songs.ts index 9dceeee..523b92f 100644 --- a/parsers/songs.ts +++ b/parsers/songs.ts @@ -7,6 +7,7 @@ import { NAVIGATION_WATCH_PLAYLIST_ID, TOGGLE_MENU, } from "../nav.ts"; +import { MENU_LIKE_STATUS } from "../nav.ts"; import { j, jo } from "../util.ts"; import { _ } from "./browsing.ts"; import { @@ -296,6 +297,10 @@ export function get_menu_like_status(item: any): LikeStatus | null { return null; } +export function get_buttons_like_status(item: any): LikeStatus | null { + return jo(item, MENU_LIKE_STATUS); +} + export interface ShuffleAndRadioIds { shuffleId: string | null; radioId: string | null;