Compare commits

...

2 commits

25 changed files with 5019 additions and 2680 deletions

View file

@ -2,7 +2,7 @@ use std::borrow::Cow;
use crate::{
error::{Error, ExtractionError},
model::{ChannelId, MusicAlbum, MusicPlaylist, Paginator},
model::{AlbumId, ChannelId, MusicAlbum, MusicPlaylist, Paginator},
serializer::MapResult,
util::{self, TryRemove},
};
@ -194,22 +194,24 @@ impl MapResponse<MusicAlbum> for response::MusicPlaylist {
let year_txt = subtitle_split.try_swap_remove(2).map(|cmp| cmp.to_string());
let artists_p = subtitle_split.try_swap_remove(1);
let (artists, artists_txt) = map_artists(artists_p);
let (artists, by_va) = map_artists(artists_p);
let album_type_txt = subtitle_split
.try_swap_remove(0)
.map(|part| part.to_string())
.unwrap_or_default();
let by_va = artists_txt == util::VARIOUS_ARTISTS;
let album_type = map_album_type(album_type_txt.as_str(), lang);
let year = year_txt.and_then(|txt| util::parse_numeric(&txt).ok());
let mut mapper = match by_va {
true => MusicListMapper::new(lang),
false => {
MusicListMapper::with_artists(lang, artists.clone(), artists_txt.clone(), false)
}
};
let mut mapper = MusicListMapper::with_album(
lang,
artists.clone(),
by_va,
AlbumId {
id: id.to_owned(),
name: header.title.to_owned(),
},
);
mapper.map_response(shelf.contents);
let tracks_res = mapper.conv_items();
let mut warnings = tracks_res.warnings;
@ -228,7 +230,6 @@ impl MapResponse<MusicAlbum> for response::MusicPlaylist {
name: header.title,
cover: header.thumbnail.into(),
artists,
artists_txt,
album_type,
year,
by_va,

View file

@ -3,8 +3,8 @@ use serde_with::{serde_as, DefaultOnError, VecSkipError};
use crate::{
model::{
self, AlbumId, AlbumItem, AlbumType, ArtistItem, ChannelId, FromYtItem, MusicEntityType,
MusicItem, MusicPlaylistItem, TrackItem,
self, AlbumId, AlbumItem, AlbumType, ArtistId, ArtistItem, ChannelId, FromYtItem,
MusicEntityType, MusicItem, MusicPlaylistItem, TrackItem,
},
param::Language,
serializer::{
@ -194,7 +194,9 @@ pub(crate) struct ContinuationContents {
#[derive(Debug)]
pub(crate) struct MusicListMapper {
lang: Language,
o_artists: Option<(Vec<ChannelId>, String)>,
/// Artists list + various artists flag
artists: Option<(Vec<ArtistId>, bool)>,
album: Option<AlbumId>,
artist_page: bool,
items: Vec<MusicItem>,
warnings: Vec<String>,
@ -212,26 +214,40 @@ impl MusicListMapper {
pub fn new(lang: Language) -> Self {
Self {
lang,
o_artists: None,
artists: None,
album: None,
artist_page: false,
items: Vec::new(),
warnings: Vec::new(),
}
}
/*
pub fn with_artists(
lang: Language,
artists: Vec<ChannelId>,
artists_txt: String,
artists: Vec<ArtistId>,
by_va: bool,
artist_page: bool,
) -> Self {
Self {
lang,
o_artists: Some((artists, artists_txt)),
artists: Some((artists, by_va)),
album: None,
artist_page,
items: Vec::new(),
warnings: Vec::new(),
}
}*/
pub fn with_album(lang: Language, artists: Vec<ArtistId>, by_va: bool, album: AlbumId) -> Self {
Self {
lang,
artists: Some((artists, by_va)),
album: Some(album),
artist_page: false,
items: Vec::new(),
warnings: Vec::new(),
}
}
fn map_item(&mut self, item: MusicResponseItem) -> Result<MusicEntityType, String> {
@ -281,7 +297,7 @@ impl MusicListMapper {
.map(|st| map_album_type(st.first_str(), self.lang))
.unwrap_or_default();
let (artists, artists_txt) = map_artists(subtitle_p2);
let (artists, by_va) = map_artists(subtitle_p2);
let year = subtitle_p3
.and_then(|st| util::parse_numeric(st.first_str()).ok());
@ -291,9 +307,9 @@ impl MusicListMapper {
name: title,
cover: item.thumbnail.into(),
artists,
artists_txt,
album_type,
year,
by_va,
}));
Ok(MusicEntityType::Album)
}
@ -349,8 +365,10 @@ impl MusicListMapper {
let title =
title.ok_or_else(|| format!("track {}: could not get title", id))?;
let is_video =
!first_tn.map(|tn| tn.height == tn.width).unwrap_or_default();
// Videos have rectangular thumbnails, YTM tracks have square covers
// Exception: there are no thumbnails on album items
let is_video = self.album.is_none()
&& !first_tn.map(|tn| tn.height == tn.width).unwrap_or_default();
let (artists_p, album_p, duration_p) = match item.flex_column_display_style
{
@ -385,8 +403,8 @@ impl MusicListMapper {
.and_then(|p| util::parse_video_length(p.first_str()))
.ok_or_else(|| format!("track {}: could not parse duration", id))?;
// The album field contains the track count for search videos
let (album, view_count) = match (item.flex_column_display_style, is_video) {
// The album field contains the view count for search videos
(FlexColumnDisplayStyle::TwoLines, true) => (
None,
album_p.and_then(|p| {
@ -394,29 +412,23 @@ impl MusicListMapper {
}),
),
(_, false) => (
album_p.and_then(|p| {
album_p
.and_then(|p| {
p.0.into_iter().find_map(|c| AlbumId::try_from(c).ok())
}),
})
.or_else(|| self.album.clone()),
None,
),
(FlexColumnDisplayStyle::Default, true) => (None, None),
};
let mut artists_txt =
artists_p.as_ref().and_then(TextComponents::to_opt_string);
let mut artists = artists_p
.map(|p| {
p.0.into_iter()
.filter_map(|c| ChannelId::try_from(c).ok())
.collect::<Vec<_>>()
})
.unwrap_or_default();
let (mut artists, _) = map_artists(artists_p);
if let Some(a) = &self.o_artists {
if artists.is_empty() && artists_txt.is_none() {
let xa = a.clone();
artists = xa.0;
artists_txt = Some(xa.1);
// Fall back to the artist given when constructing the mapper.
// This is used for extracting artist pages.
if let Some(a) = &self.artists {
if artists.is_empty() {
artists = a.0.clone();
}
}
@ -428,7 +440,6 @@ impl MusicListMapper {
duration,
cover: item.thumbnail.into(),
artists,
artists_txt,
album,
view_count,
is_video,
@ -454,23 +465,18 @@ impl MusicListMapper {
let mut year = None;
let mut album_type = AlbumType::Single;
let (artists, artists_txt) =
match (subtitle_p1, subtitle_p2, &self.o_artists, self.artist_page) {
let (artists, by_va) =
match (subtitle_p1, subtitle_p2, &self.artists, self.artist_page) {
// "2022" (Artist singles)
(Some(year_txt), None, Some((artists, artists_txt)), true) => {
(Some(year_txt), None, Some(artists), true) => {
year = util::parse_numeric(year_txt.first_str()).ok();
(artists.clone(), artists_txt.clone())
artists.clone()
}
// "Album", "2022" (Artist albums)
(
Some(atype_txt),
Some(year_txt),
Some((artists, artists_txt)),
true,
) => {
(Some(atype_txt), Some(year_txt), Some(artists), true) => {
year = util::parse_numeric(year_txt.first_str()).ok();
album_type = map_album_type(atype_txt.first_str(), self.lang);
(artists.clone(), artists_txt.clone())
artists.clone()
}
// "Album", <"Oonagh"> (Album variants, new releases)
(Some(atype_txt), Some(p2), _, false) => {
@ -490,9 +496,9 @@ impl MusicListMapper {
name: item.title,
cover: item.thumbnail_renderer.into(),
artists,
artists_txt,
year,
album_type,
year,
by_va,
}));
Ok(MusicEntityType::Album)
}
@ -595,21 +601,30 @@ impl MusicListMapper {
}
}
pub(crate) fn map_artists(artists_p: Option<TextComponents>) -> (Vec<ChannelId>, String) {
let artists_txt = artists_p
.as_ref()
.map(|p| p.to_string())
.unwrap_or_default();
pub(crate) fn map_artists(artists_p: Option<TextComponents>) -> (Vec<ArtistId>, bool) {
let mut by_va = false;
let artists = artists_p
.map(|part| {
part.0
.into_iter()
.filter_map(|c| ChannelId::try_from(c).ok())
.enumerate()
.filter_map(|(i, c)| {
let artist = ArtistId::from(c);
// Filter out text components with no links that are at
// odd positions (conjunctions)
if artist.id.is_none() && i % 2 == 1 {
None
} else if artist.id.is_none() && artist.name == util::VARIOUS_ARTISTS {
by_va = true;
None
} else {
Some(artist)
}
})
.collect::<Vec<_>>()
})
.unwrap_or_default();
(artists, artists_txt)
(artists, by_va)
}
pub(crate) fn map_album_type(txt: &str, lang: Language) -> AlbumType {

View file

@ -29,12 +29,11 @@ MusicAlbum(
),
],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: "Oonagh",
album_type: Album,
year: Some(2016),
by_va: false,
@ -45,15 +44,17 @@ MusicAlbum(
duration: 216,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(1),
),
TrackItem(
@ -62,15 +63,17 @@ MusicAlbum(
duration: 224,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(2),
),
TrackItem(
@ -79,15 +82,17 @@ MusicAlbum(
duration: 176,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(3),
),
TrackItem(
@ -96,15 +101,17 @@ MusicAlbum(
duration: 215,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(4),
),
TrackItem(
@ -113,15 +120,17 @@ MusicAlbum(
duration: 268,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(5),
),
TrackItem(
@ -130,15 +139,17 @@ MusicAlbum(
duration: 202,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(6),
),
TrackItem(
@ -147,15 +158,17 @@ MusicAlbum(
duration: 185,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(7),
),
TrackItem(
@ -164,15 +177,17 @@ MusicAlbum(
duration: 226,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(8),
),
TrackItem(
@ -181,15 +196,17 @@ MusicAlbum(
duration: 207,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(9),
),
TrackItem(
@ -198,15 +215,17 @@ MusicAlbum(
duration: 211,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(10),
),
TrackItem(
@ -215,15 +234,17 @@ MusicAlbum(
duration: 179,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(11),
),
TrackItem(
@ -232,15 +253,17 @@ MusicAlbum(
duration: 218,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(12),
),
TrackItem(
@ -249,15 +272,17 @@ MusicAlbum(
duration: 277,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(13),
),
TrackItem(
@ -266,15 +291,17 @@ MusicAlbum(
duration: 204,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(14),
),
TrackItem(
@ -283,15 +310,17 @@ MusicAlbum(
duration: 202,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(15),
),
TrackItem(
@ -300,15 +329,17 @@ MusicAlbum(
duration: 222,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(16),
),
TrackItem(
@ -317,15 +348,17 @@ MusicAlbum(
duration: 177,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(17),
),
TrackItem(
@ -334,15 +367,17 @@ MusicAlbum(
duration: 220,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(18),
),
],
@ -363,14 +398,14 @@ MusicAlbum(
),
],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: "Oonagh",
album_type: Album,
year: None,
by_va: false,
),
],
)

View file

@ -29,16 +29,15 @@ MusicAlbum(
),
],
artists: [
ChannelId(
id: "UCXGYZ-OhdOpPBamHX3K9YRg",
ArtistId(
id: Some("UCXGYZ-OhdOpPBamHX3K9YRg"),
name: "Joel Brandenstein",
),
ChannelId(
id: "UCFTcSVPYRWlDoHisR-ZKwgw",
ArtistId(
id: Some("UCFTcSVPYRWlDoHisR-ZKwgw"),
name: "Vanessa Mai",
),
],
artists_txt: "Joel Brandenstein & Vanessa Mai",
album_type: Single,
year: Some(2020),
by_va: false,
@ -49,19 +48,21 @@ MusicAlbum(
duration: 183,
cover: [],
artists: [
ChannelId(
id: "UCXGYZ-OhdOpPBamHX3K9YRg",
ArtistId(
id: Some("UCXGYZ-OhdOpPBamHX3K9YRg"),
name: "Joel Brandenstein",
),
ChannelId(
id: "UCFTcSVPYRWlDoHisR-ZKwgw",
ArtistId(
id: Some("UCFTcSVPYRWlDoHisR-ZKwgw"),
name: "Vanessa Mai",
),
],
artists_txt: Some("Joel Brandenstein & Vanessa Mai"),
album: None,
album: Some(AlbumId(
id: "MPREb_bHfHGoy7vuv",
name: "Der Himmel reißt auf",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(1),
),
],

View file

@ -29,7 +29,6 @@ MusicAlbum(
),
],
artists: [],
artists_txt: "Various Artists",
album_type: Single,
year: Some(2022),
by_va: true,
@ -39,11 +38,18 @@ MusicAlbum(
title: "Waka Boom (My Way) (feat. Lee Young Ji)",
duration: 274,
cover: [],
artists: [],
artists_txt: Some("HYOLYN"),
album: None,
artists: [
ArtistId(
id: None,
name: "HYOLYN",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(1),
),
TrackItem(
@ -51,11 +57,18 @@ MusicAlbum(
title: "AURA",
duration: 216,
cover: [],
artists: [],
artists_txt: Some("WJSN"),
album: None,
artists: [
ArtistId(
id: None,
name: "WJSN",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(2),
),
TrackItem(
@ -64,15 +77,17 @@ MusicAlbum(
duration: 239,
cover: [],
artists: [
ChannelId(
id: "UCAKvDuIX3m1AUdPpDSqV_3w",
ArtistId(
id: Some("UCAKvDuIX3m1AUdPpDSqV_3w"),
name: "Kep1er",
),
],
artists_txt: Some("Kep1er"),
album: None,
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(3),
),
TrackItem(
@ -80,11 +95,18 @@ MusicAlbum(
title: "Red Sun!",
duration: 254,
cover: [],
artists: [],
artists_txt: Some("VIVIZ"),
album: None,
artists: [
ArtistId(
id: None,
name: "VIVIZ",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(4),
),
TrackItem(
@ -92,11 +114,18 @@ MusicAlbum(
title: "POSE",
duration: 187,
cover: [],
artists: [],
artists_txt: Some("LOONA"),
album: None,
artists: [
ArtistId(
id: None,
name: "LOONA",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(5),
),
TrackItem(
@ -104,11 +133,18 @@ MusicAlbum(
title: "Whistle",
duration: 224,
cover: [],
artists: [],
artists_txt: Some("Brave Girls"),
album: None,
artists: [
ArtistId(
id: None,
name: "Brave Girls",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(6),
),
],

View file

@ -43,8 +43,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -61,8 +65,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -79,8 +87,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -97,8 +109,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -115,8 +131,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -133,8 +153,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -151,8 +175,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -169,8 +197,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -187,8 +219,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -205,8 +241,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -223,8 +263,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -241,8 +285,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -259,8 +307,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -277,8 +329,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -295,8 +351,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -313,8 +373,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -331,8 +395,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -349,8 +417,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -367,8 +439,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -385,8 +461,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -403,8 +483,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -421,8 +505,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -439,8 +527,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -457,8 +549,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -475,8 +571,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -493,8 +593,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -511,8 +615,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -529,8 +637,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -547,8 +659,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -565,8 +681,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -583,8 +703,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -601,8 +725,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -619,8 +747,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -637,8 +769,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -655,8 +791,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -673,8 +813,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -691,8 +835,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -709,8 +857,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -727,8 +879,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -745,8 +901,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -763,8 +923,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -781,8 +945,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -799,8 +967,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -817,8 +989,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -835,8 +1011,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -853,8 +1033,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -871,8 +1055,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -889,8 +1077,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -907,8 +1099,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -925,8 +1121,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -943,8 +1143,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -961,8 +1165,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -979,8 +1187,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -997,8 +1209,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -1015,8 +1231,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -1033,8 +1253,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -1051,8 +1275,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -1069,8 +1297,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -1087,8 +1319,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -1105,8 +1341,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -1123,8 +1363,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -1141,8 +1385,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -1159,8 +1407,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -1177,8 +1429,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -1195,8 +1451,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,
@ -1213,8 +1473,12 @@ MusicPlaylist(
height: 225,
),
],
artists: [],
artists_txt: Some("Chaosflo44"),
artists: [
ArtistId(
id: None,
name: "Chaosflo44",
),
],
album: None,
view_count: None,
is_video: true,

View file

@ -32,14 +32,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCEdZAdnnKqbaHOlv8nM6OtA",
ArtistId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
name: "aespa",
),
],
artists_txt: "aespa",
album_type: Single,
year: Some(2020),
by_va: false,
),
AlbumItem(
id: "MPREb_pvdHyqvGjbI",
@ -67,14 +67,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCEdZAdnnKqbaHOlv8nM6OtA",
ArtistId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
name: "aespa",
),
],
artists_txt: "aespa",
album_type: Album,
year: Some(2022),
by_va: false,
),
AlbumItem(
id: "MPREb_CznUTKnATw6",
@ -102,14 +102,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCZK5n7V2-iPHfUXLV2tDvzw",
ArtistId(
id: Some("UCZK5n7V2-iPHfUXLV2tDvzw"),
name: "Cojack",
),
],
artists_txt: "Cojack",
album_type: Single,
year: Some(2020),
by_va: false,
),
AlbumItem(
id: "MPREb_Sx4uifBuKyD",
@ -137,14 +137,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCudOYmRtW3uylYtqY1aAD0A",
ArtistId(
id: Some("UCudOYmRtW3uylYtqY1aAD0A"),
name: "Montana Of 300",
),
],
artists_txt: "Montana Of 300",
album_type: Single,
year: Some(2020),
by_va: false,
),
AlbumItem(
id: "MPREb_PdIIalyOQXF",
@ -172,14 +172,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UC8whsREta_7Fu-EjRq2Ys-A",
ArtistId(
id: Some("UC8whsREta_7Fu-EjRq2Ys-A"),
name: "Alpha Wolf",
),
],
artists_txt: "Alpha Wolf",
album_type: Single,
year: Some(2018),
by_va: false,
),
AlbumItem(
id: "MPREb_9KdyuqvufOL",
@ -207,14 +207,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCRy7ecValgvorRe_8dum9lA",
ArtistId(
id: Some("UCRy7ecValgvorRe_8dum9lA"),
name: "ESKIIMO",
),
],
artists_txt: "ESKIIMO",
album_type: Ep,
year: Some(2022),
by_va: false,
),
AlbumItem(
id: "MPREb_VDjWCOUvD7s",
@ -242,14 +242,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCdkNrc_l73BHYKRhDqxBo9w",
ArtistId(
id: Some("UCdkNrc_l73BHYKRhDqxBo9w"),
name: "Black Mamba Man",
),
],
artists_txt: "Black Mamba Man",
album_type: Album,
year: Some(2017),
by_va: false,
),
AlbumItem(
id: "MPREb_xjJaY8xb2Rw",
@ -277,14 +277,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCn09cNujyKjEA1NxD5Aj_mQ",
ArtistId(
id: Some("UCn09cNujyKjEA1NxD5Aj_mQ"),
name: "Paride Saraceni",
),
],
artists_txt: "Paride Saraceni",
album_type: Single,
year: Some(2019),
by_va: false,
),
AlbumItem(
id: "MPREb_CH1VEbx7Lle",
@ -312,14 +312,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCYAFIwL4uBWQHBrBiohx1vw",
ArtistId(
id: Some("UCYAFIwL4uBWQHBrBiohx1vw"),
name: "Addis Black Mamba",
),
],
artists_txt: "Addis Black Mamba",
album_type: Single,
year: Some(2019),
by_va: false,
),
AlbumItem(
id: "MPREb_IfiMtX5CnWJ",
@ -347,22 +347,22 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCs04jfHH78YUziFA52P97LA",
ArtistId(
id: Some("UCs04jfHH78YUziFA52P97LA"),
name: "R. Black Mamba",
),
ChannelId(
id: "UCsOfYy8UlBPRYkC5lgRaatA",
ArtistId(
id: Some("UCsOfYy8UlBPRYkC5lgRaatA"),
name: "Lonzzo",
),
ChannelId(
id: "UCEwg585uC9nBoL8KA7ayjPA",
ArtistId(
id: Some("UCEwg585uC9nBoL8KA7ayjPA"),
name: "24.Gz",
),
],
artists_txt: "R. Black Mamba, Lonzzo & 24.Gz",
album_type: Single,
year: Some(2022),
by_va: false,
),
AlbumItem(
id: "MPREb_DeCImAQRYMO",
@ -390,14 +390,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCZwE-b-kzA4pQaCQXwOQnlg",
ArtistId(
id: Some("UCZwE-b-kzA4pQaCQXwOQnlg"),
name: "Seoul Philharmonic Orchestra",
),
],
artists_txt: "Seoul Philharmonic Orchestra",
album_type: Single,
year: Some(2022),
by_va: false,
),
AlbumItem(
id: "MPREb_vXAHel98vo2",
@ -425,14 +425,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UC_SI7sOel-qMTvSe-lGHX8w",
ArtistId(
id: Some("UC_SI7sOel-qMTvSe-lGHX8w"),
name: "Hever Jara",
),
],
artists_txt: "Hever Jara",
album_type: Single,
year: Some(2018),
by_va: false,
),
AlbumItem(
id: "MPREb_iAemzaCGXuo",
@ -460,14 +460,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCMZowOoC3u_ntr9o52ekeZw",
ArtistId(
id: Some("UCMZowOoC3u_ntr9o52ekeZw"),
name: "Yung FN",
),
],
artists_txt: "Yung FN",
album_type: Single,
year: Some(2022),
by_va: false,
),
AlbumItem(
id: "MPREb_CbIA5po2cn4",
@ -495,14 +495,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCX6v_euBwliDYV2NMTouuSA",
ArtistId(
id: Some("UCX6v_euBwliDYV2NMTouuSA"),
name: "Hobino",
),
],
artists_txt: "Hobino",
album_type: Single,
year: Some(2022),
by_va: false,
),
AlbumItem(
id: "MPREb_yrsxU7t0h6l",
@ -530,14 +530,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCAlOD5s3Ro27M61-2Z_UB7w",
ArtistId(
id: Some("UCAlOD5s3Ro27M61-2Z_UB7w"),
name: "Tee See Connection",
),
],
artists_txt: "Tee See Connection",
album_type: Single,
year: Some(2013),
by_va: false,
),
AlbumItem(
id: "MPREb_fETChb2O2uR",
@ -565,14 +565,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UC77rFNJxH8Y2VwSYp8ZTXHA",
ArtistId(
id: Some("UC77rFNJxH8Y2VwSYp8ZTXHA"),
name: "Franco Vitola",
),
],
artists_txt: "Franco Vitola",
album_type: Single,
year: Some(2020),
by_va: false,
),
AlbumItem(
id: "MPREb_VcRKLYVgy11",
@ -600,14 +600,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCxX9tNcQgCBuU56ezupriqg",
ArtistId(
id: Some("UCxX9tNcQgCBuU56ezupriqg"),
name: "Black Mamba",
),
],
artists_txt: "Black Mamba",
album_type: Album,
year: Some(2011),
by_va: false,
),
AlbumItem(
id: "MPREb_grtT3Ze8U2Z",
@ -635,14 +635,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UC6Y8G45J9Uv2EsLLOatymOw",
ArtistId(
id: Some("UC6Y8G45J9Uv2EsLLOatymOw"),
name: "WookTheCrook",
),
],
artists_txt: "WookTheCrook",
album_type: Single,
year: Some(2022),
by_va: false,
),
AlbumItem(
id: "MPREb_hXasyBrDJm7",
@ -670,14 +670,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCaDT20-B3U8h-tPg_VMvntw",
ArtistId(
id: Some("UCaDT20-B3U8h-tPg_VMvntw"),
name: "The Black Mamba",
),
],
artists_txt: "The Black Mamba",
album_type: Album,
year: Some(2012),
by_va: false,
),
AlbumItem(
id: "MPREb_jDiEDfz09CY",
@ -705,14 +705,14 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCJq1MEuNM0SidXn5pMqqHBA",
ArtistId(
id: Some("UCJq1MEuNM0SidXn5pMqqHBA"),
name: "Voltage",
),
],
artists_txt: "Voltage",
album_type: Single,
year: Some(2019),
by_va: false,
),
],
ctoken: Some("EoIGEgtibGFjayBtYW1iYRryBUVnV0tBUUlZQVVnVWFnd1FBeEFFRUFrUURoQUtFQVdDQVJoVlEyRjJabUpWTlc0emFEaHZXR2RSUzBkTlZqTkhXbEdDQVJoVlEzbE1XR2hVTWxGU1ZYRlJVbUZUY2tST1RVSmZNMmVDQVJoVlEyZG1SR2RXWVRsbE9EWm1TVTVZYTE5elpWOWxlWGVDQVJoVlEzZGlNekEyT0ZkQ1dYTlJjbkl5WDBSS1pIRlRaWGVDQVJoVlEwZEhWVVkwWHpjMFZuWkxSbmR1Y0ZCRU1FWndPRUdDQVJoVlEyaHBaMVprUkhVM1owTkpZWEJ0ZUZSeGEyZG1RM2VDQVJoVlEyd3laVFpzVXkwdGQzYzNabnBLWVMxV2QxQkJNbWVDQVJoVlF6Z3RhbmxoVkdsSU9VWlViVGRRZG10RllYa3hWVUdDQVJoVlF5MDBOSGRNWm04eldISmplbGROZFdsQ1JWbHJWVUdDQVJoVlEzWnVjVmw1UVdSUGJWRnZVMlpMZEV0SldYVm5NbEdDQVJoVlEyWmlhMFpCTjFSU01tMXhRbU5WVVZCWFZFaDBWWGVDQVJoVlEzcHlkM2RGZUhZeWQxUmFkUzFrVldobU9DMVdUbmVDQVJoVlEySmpNa2xCYmxOTE0zcDBWR0YyVGtkTFJrRk5UWGVDQVJoVlF6UnlSVGRPTW5sR2VrVXdNVVozY1ZwdVdrWm5RVUdDQVJoVlEwRTBORFF4YlZGaGNHazNTbU5RWmpkVVkxOHdSVUdDQVJoVlEzZHBZVjl1ZUc5QlkwRjFiVmgzUmpVeVVHeDFYMmVDQVJoVlF6QlZVMWhDU1VOcmJHbGlhSGxVUkhKaWVHUldMVkdDQVJoVlF6bERMV1pwVG1JM1FWWjJjRGRWZGxKdlEyMTJjMUdDQVJoVlEwZFZkMUJHWVVaMFdVRXRiamRhVERSSFlubHlYM2VDQVJoVlEySkdiRTR5Y0RCT1owbERlbVZYVFRNd1pIQTFaMmMlM0QY8erQLg%3D%3D"),

View file

@ -16,12 +16,11 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCEdZAdnnKqbaHOlv8nM6OtA",
ArtistId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
name: "aespa",
),
],
artists_txt: Some("aespa"),
album: None,
view_count: Some(235000000),
is_video: true,
@ -44,12 +43,11 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCEdZAdnnKqbaHOlv8nM6OtA",
ArtistId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
name: "aespa",
),
],
artists_txt: Some("aespa"),
album: Some(AlbumId(
id: "MPREb_OpHWHwyNOuY",
name: "Black Mamba",
@ -75,16 +73,15 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCfCNL5oajlQBAlyjWv1ChVw",
ArtistId(
id: Some("UCfCNL5oajlQBAlyjWv1ChVw"),
name: "Hans Zimmer",
),
ChannelId(
id: "UCvTXGTZf9EvuCAwZOkoR2iQ",
ArtistId(
id: Some("UCvTXGTZf9EvuCAwZOkoR2iQ"),
name: "Lorne Balfe",
),
],
artists_txt: Some("Hans Zimmer & Lorne Balfe"),
album: Some(AlbumId(
id: "MPREb_UmDOhLpDsc0",
name: "Megamind (Music from the Motion Picture)",
@ -110,12 +107,11 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCz6yr3CgFGrrrPDa2asbWMQ",
ArtistId(
id: Some("UCz6yr3CgFGrrrPDa2asbWMQ"),
name: "Bayamon PR Tribe",
),
],
artists_txt: Some("Bayamon PR Tribe"),
album: Some(AlbumId(
id: "MPREb_RV0PGHyGfkp",
name: "LISTEN ME",
@ -136,12 +132,11 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCS_hnpJLQTvBkqALgapi_4g",
ArtistId(
id: Some("UCS_hnpJLQTvBkqALgapi_4g"),
name: "스브스케이팝 X INKIGAYO",
),
],
artists_txt: Some("스브스케이팝 X INKIGAYO"),
album: None,
view_count: Some(10000000),
is_video: true,
@ -159,12 +154,11 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCEdZAdnnKqbaHOlv8nM6OtA",
ArtistId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
name: "aespa",
),
],
artists_txt: Some("aespa"),
album: None,
view_count: Some(18000000),
is_video: true,
@ -182,12 +176,11 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UC5BMQOsAB8hKUyHu9KI6yig",
ArtistId(
id: Some("UC5BMQOsAB8hKUyHu9KI6yig"),
name: "KBS WORLD TV",
),
],
artists_txt: Some("KBS WORLD TV"),
album: None,
view_count: Some(3200000),
is_video: true,
@ -221,14 +214,14 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCEdZAdnnKqbaHOlv8nM6OtA",
ArtistId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
name: "aespa",
),
],
artists_txt: "aespa",
album_type: Single,
year: Some(2020),
by_va: false,
),
AlbumItem(
id: "MPREb_pvdHyqvGjbI",
@ -256,14 +249,14 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCEdZAdnnKqbaHOlv8nM6OtA",
ArtistId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
name: "aespa",
),
],
artists_txt: "aespa",
album_type: Album,
year: Some(2022),
by_va: false,
),
AlbumItem(
id: "MPREb_CznUTKnATw6",
@ -291,14 +284,14 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCZK5n7V2-iPHfUXLV2tDvzw",
ArtistId(
id: Some("UCZK5n7V2-iPHfUXLV2tDvzw"),
name: "Cojack",
),
],
artists_txt: "Cojack",
album_type: Single,
year: Some(2020),
by_va: false,
),
],
artists: [

View file

@ -23,12 +23,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCEdZAdnnKqbaHOlv8nM6OtA",
ArtistId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
name: "aespa",
),
],
artists_txt: Some("aespa"),
album: Some(AlbumId(
id: "MPREb_OpHWHwyNOuY",
name: "Black Mamba",
@ -54,16 +53,15 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCfCNL5oajlQBAlyjWv1ChVw",
ArtistId(
id: Some("UCfCNL5oajlQBAlyjWv1ChVw"),
name: "Hans Zimmer",
),
ChannelId(
id: "UCvTXGTZf9EvuCAwZOkoR2iQ",
ArtistId(
id: Some("UCvTXGTZf9EvuCAwZOkoR2iQ"),
name: "Lorne Balfe",
),
],
artists_txt: Some("Hans Zimmer & Lorne Balfe"),
album: Some(AlbumId(
id: "MPREb_UmDOhLpDsc0",
name: "Megamind (Music from the Motion Picture)",
@ -89,12 +87,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCZwE-b-kzA4pQaCQXwOQnlg",
ArtistId(
id: Some("UCZwE-b-kzA4pQaCQXwOQnlg"),
name: "Seoul Philharmonic Orchestra",
),
],
artists_txt: Some("Seoul Philharmonic Orchestra"),
album: Some(AlbumId(
id: "MPREb_DeCImAQRYMO",
name: "Black Mamba (Orchestra Version)",
@ -120,12 +117,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UC8whsREta_7Fu-EjRq2Ys-A",
ArtistId(
id: Some("UC8whsREta_7Fu-EjRq2Ys-A"),
name: "Alpha Wolf",
),
],
artists_txt: Some("Alpha Wolf"),
album: Some(AlbumId(
id: "MPREb_PdIIalyOQXF",
name: "Black Mamba",
@ -151,12 +147,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCz6yr3CgFGrrrPDa2asbWMQ",
ArtistId(
id: Some("UCz6yr3CgFGrrrPDa2asbWMQ"),
name: "Bayamon PR Tribe",
),
],
artists_txt: Some("Bayamon PR Tribe"),
album: Some(AlbumId(
id: "MPREb_RV0PGHyGfkp",
name: "LISTEN ME",
@ -182,12 +177,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UC7sFWdsZTzfR507dbonTlyQ",
ArtistId(
id: Some("UC7sFWdsZTzfR507dbonTlyQ"),
name: "Jethro Tull",
),
],
artists_txt: Some("Jethro Tull"),
album: Some(AlbumId(
id: "MPREb_uC4NIfLr7VS",
name: "J-Tull Dot Com",
@ -213,12 +207,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCzqRJ5qy_ekVd9jfaAlb7nA",
ArtistId(
id: Some("UCzqRJ5qy_ekVd9jfaAlb7nA"),
name: "FREE FLOW FLAVA",
),
],
artists_txt: Some("FREE FLOW FLAVA"),
album: Some(AlbumId(
id: "MPREb_4gkEob83yi2",
name: "Hidden Tape",
@ -244,12 +237,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCi8RICptUr15gPmPjEuIEDQ",
ArtistId(
id: Some("UCi8RICptUr15gPmPjEuIEDQ"),
name: "Ashkabad",
),
],
artists_txt: Some("Ashkabad"),
album: Some(AlbumId(
id: "MPREb_SU8gaBGZv2T",
name: "Reptile",
@ -275,12 +267,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCudOYmRtW3uylYtqY1aAD0A",
ArtistId(
id: Some("UCudOYmRtW3uylYtqY1aAD0A"),
name: "Montana Of 300",
),
],
artists_txt: Some("Montana Of 300"),
album: Some(AlbumId(
id: "MPREb_Sx4uifBuKyD",
name: "Black Mamba",
@ -306,12 +297,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCoNSQrGCiSZscyBwQTsMK2g",
ArtistId(
id: Some("UCoNSQrGCiSZscyBwQTsMK2g"),
name: "Dj Zapy & Dj Uragun",
),
],
artists_txt: Some("Dj Zapy & Dj Uragun"),
album: Some(AlbumId(
id: "MPREb_nfwzSf4mnx4",
name: "Black Mamba",
@ -337,12 +327,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCkjmrFnxpkxI4cVVwhc_mMw",
ArtistId(
id: Some("UCkjmrFnxpkxI4cVVwhc_mMw"),
name: "Alex Torres y Los Reyes Latinos",
),
],
artists_txt: Some("Alex Torres y Los Reyes Latinos"),
album: Some(AlbumId(
id: "MPREb_9SbptcWbS7a",
name: "Elementos",
@ -367,8 +356,12 @@ MusicSearchFiltered(
height: 120,
),
],
artists: [],
artists_txt: Some("C.JERRY"),
artists: [
ArtistId(
id: None,
name: "C.JERRY",
),
],
album: Some(AlbumId(
id: "MPREb_0lYy8bzdAWJ",
name: "Bleem多维视角",
@ -394,16 +387,15 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UC_PI4ScqWXzHuYP2TNqw6vg",
ArtistId(
id: Some("UC_PI4ScqWXzHuYP2TNqw6vg"),
name: "Nerissima Serpe",
),
ChannelId(
id: "UCugPYAOw4Ig_6043IZslywQ",
ArtistId(
id: Some("UCugPYAOw4Ig_6043IZslywQ"),
name: "Fri2",
),
],
artists_txt: Some("Nerissima Serpe & Fri2"),
album: Some(AlbumId(
id: "MPREb_6cqJGhzYwwg",
name: "BLCK MAMBA",
@ -429,12 +421,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCr8Gk2ECkAhRzNWCqKg62bA",
ArtistId(
id: Some("UCr8Gk2ECkAhRzNWCqKg62bA"),
name: "Biodizzy",
),
],
artists_txt: Some("Biodizzy"),
album: Some(AlbumId(
id: "MPREb_11tzMasyq5O",
name: "Mathomo Mayo",
@ -460,12 +451,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UC6LdZsjHDoy88JtQnEz4z4A",
ArtistId(
id: Some("UC6LdZsjHDoy88JtQnEz4z4A"),
name: "Mamba Cinco",
),
],
artists_txt: Some("Mamba Cinco"),
album: Some(AlbumId(
id: "MPREb_BBP23Ry1SBL",
name: "Told Black",
@ -491,16 +481,15 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCX1lJbaUf3IEGhNi1_KCEZw",
ArtistId(
id: Some("UCX1lJbaUf3IEGhNi1_KCEZw"),
name: "Vagabond",
),
ChannelId(
id: "UCt4qpUnoWz3aUM5DYDBod0A",
ArtistId(
id: Some("UCt4qpUnoWz3aUM5DYDBod0A"),
name: "Brisk",
),
],
artists_txt: Some("Vagabond & Brisk"),
album: Some(AlbumId(
id: "MPREb_aLZJtqNevjw",
name: "Night & Dayz / Black Mamba",
@ -526,12 +515,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCoJXsT1SzLsZZgg5P0yaVQw",
ArtistId(
id: Some("UCoJXsT1SzLsZZgg5P0yaVQw"),
name: "Ghost Tribe",
),
],
artists_txt: Some("Ghost Tribe"),
album: Some(AlbumId(
id: "MPREb_fzz3cs4IkeX",
name: "Black Mamba Jiu Jitsu",
@ -557,12 +545,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCxoJ3pl32f39kmTvIR_NWOg",
ArtistId(
id: Some("UCxoJ3pl32f39kmTvIR_NWOg"),
name: "Akae Beka",
),
],
artists_txt: Some("Akae Beka"),
album: Some(AlbumId(
id: "MPREb_iuN0lQwEmRp",
name: "Kings Dub",
@ -588,12 +575,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UC7RJTtpE3qwbw6-Idq9PTIg",
ArtistId(
id: Some("UC7RJTtpE3qwbw6-Idq9PTIg"),
name: "Shockwave-Sound",
),
],
artists_txt: Some("Shockwave-Sound"),
album: Some(AlbumId(
id: "MPREb_Kg4Ff883GH0",
name: "Out on the Road",
@ -619,12 +605,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCfGf1P_mK274Rp3OKFTgbBQ",
ArtistId(
id: Some("UCfGf1P_mK274Rp3OKFTgbBQ"),
name: "Dubb Bankroll",
),
],
artists_txt: Some("Dubb Bankroll"),
album: Some(AlbumId(
id: "MPREb_VGZMM6pmzrt",
name: "Area 51",

View file

@ -23,12 +23,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCIh4j8fXWf2U0ro0qnGU8Mg",
ArtistId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"),
name: "Namika",
),
],
artists_txt: Some("Namika"),
album: Some(AlbumId(
id: "MPREb_RXHxrUFfrvQ",
name: "Lieblingsmensch",
@ -54,12 +53,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCCpID8TTjkkjLCwBybAfHSg",
ArtistId(
id: Some("UCCpID8TTjkkjLCwBybAfHSg"),
name: "Boris Brejcha",
),
],
artists_txt: Some("Boris Brejcha"),
album: Some(AlbumId(
id: "MPREb_VFqQlfPhsFW",
name: "Lieblingsmensch",
@ -85,12 +83,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCMLbHQGqUHeNAqjOL1qXZXg",
ArtistId(
id: Some("UCMLbHQGqUHeNAqjOL1qXZXg"),
name: "Lumbematz",
),
],
artists_txt: Some("Lumbematz"),
album: Some(AlbumId(
id: "MPREb_14GKjCEauSE",
name: "Lieblingsmensch",
@ -116,12 +113,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCCpID8TTjkkjLCwBybAfHSg",
ArtistId(
id: Some("UCCpID8TTjkkjLCwBybAfHSg"),
name: "Boris Brejcha",
),
],
artists_txt: Some("Boris Brejcha"),
album: Some(AlbumId(
id: "MPREb_AlIjxpnBKtn",
name: "Lieblingsmensch (Edit)",
@ -147,12 +143,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCTJBrv8T8AxavAynvB3_DSw",
ArtistId(
id: Some("UCTJBrv8T8AxavAynvB3_DSw"),
name: "Seer",
),
],
artists_txt: Some("Seer"),
album: Some(AlbumId(
id: "MPREb_t2Laj9ENdVn",
name: "echt seerisch",
@ -178,12 +173,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCtoec88rzlhABHeo_4d-H8g",
ArtistId(
id: Some("UCtoec88rzlhABHeo_4d-H8g"),
name: "Dame",
),
],
artists_txt: Some("Dame"),
album: Some(AlbumId(
id: "MPREb_9ILis64aD76",
name: "Notiz an mich",
@ -209,12 +203,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UClOpZVfE5v-fFtM8vqFud-g",
ArtistId(
id: Some("UClOpZVfE5v-fFtM8vqFud-g"),
name: "KIDZ BOP Kids",
),
],
artists_txt: Some("KIDZ BOP Kids"),
album: Some(AlbumId(
id: "MPREb_vxdAMBsmm1s",
name: "KIDZ BOP Ultimate Playlist",
@ -240,12 +233,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCIh4j8fXWf2U0ro0qnGU8Mg",
ArtistId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"),
name: "Namika",
),
],
artists_txt: Some("Namika"),
album: Some(AlbumId(
id: "MPREb_V5f8YfHKp2j",
name: "Lieblingsmensch",
@ -271,12 +263,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCvfUKCnUBfsZAVHgF-pYmJg",
ArtistId(
id: Some("UCvfUKCnUBfsZAVHgF-pYmJg"),
name: "Voyce",
),
],
artists_txt: Some("Voyce"),
album: Some(AlbumId(
id: "MPREb_SpT32xAd4YR",
name: "Gegenstück EP",
@ -302,12 +293,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCosvbvqFxbUniyDCUNXN5wA",
ArtistId(
id: Some("UCosvbvqFxbUniyDCUNXN5wA"),
name: "Klaus Hanslbauer",
),
],
artists_txt: Some("Klaus Hanslbauer"),
album: Some(AlbumId(
id: "MPREb_oz9ZiEQcBU4",
name: "Lieblingsmensch",
@ -333,12 +323,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCIh4j8fXWf2U0ro0qnGU8Mg",
ArtistId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"),
name: "Namika",
),
],
artists_txt: Some("Namika"),
album: Some(AlbumId(
id: "MPREb_V5f8YfHKp2j",
name: "Lieblingsmensch",
@ -364,12 +353,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCk-g5nfpm8Q9gfy7DuU8PZA",
ArtistId(
id: Some("UCk-g5nfpm8Q9gfy7DuU8PZA"),
name: "VVIER",
),
],
artists_txt: Some("VVIER"),
album: Some(AlbumId(
id: "MPREb_Oc7tpyMz6uE",
name: "Zusammen",
@ -395,12 +383,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCIh4j8fXWf2U0ro0qnGU8Mg",
ArtistId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"),
name: "Namika",
),
],
artists_txt: Some("Namika"),
album: Some(AlbumId(
id: "MPREb_V5f8YfHKp2j",
name: "Lieblingsmensch",
@ -426,12 +413,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCDBvf2dl0XZQvIKPsrsDprg",
ArtistId(
id: Some("UCDBvf2dl0XZQvIKPsrsDprg"),
name: "Sebó",
),
],
artists_txt: Some("Sebó"),
album: Some(AlbumId(
id: "MPREb_X5boeaZWzPX",
name: "Lieblingsmensch",
@ -457,12 +443,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UC2_O7ywkwEh-crQedvyNOYg",
ArtistId(
id: Some("UC2_O7ywkwEh-crQedvyNOYg"),
name: "DIA Herbst",
),
],
artists_txt: Some("DIA Herbst"),
album: Some(AlbumId(
id: "MPREb_8f4SNZ8HDhD",
name: "Lieblingsmensch",
@ -487,8 +472,12 @@ MusicSearchFiltered(
height: 120,
),
],
artists: [],
artists_txt: Some("Jasmin Bick"),
artists: [
ArtistId(
id: None,
name: "Jasmin Bick",
),
],
album: Some(AlbumId(
id: "MPREb_6PhWrMAoiO3",
name: "Volksmusik Sommer 2017",
@ -514,12 +503,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCtsMcVBiK9QvtS2LH8Z6M5g",
ArtistId(
id: Some("UCtsMcVBiK9QvtS2LH8Z6M5g"),
name: "Apres Ski",
),
],
artists_txt: Some("Apres Ski"),
album: Some(AlbumId(
id: "MPREb_4HeyZ3um21Q",
name: "Ballermann Stars - Après Ski Hits 2016 Party (Die XXL Schlager Party im Karneval und Fasching der Saison 2015 bis 2016)",
@ -545,12 +533,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UC16V9XG1PfOD1E0m6G-s22A",
ArtistId(
id: Some("UC16V9XG1PfOD1E0m6G-s22A"),
name: "Trap Lion Beats",
),
],
artists_txt: Some("Trap Lion Beats"),
album: Some(AlbumId(
id: "MPREb_BVRbZ6muIXJ",
name: "25 Trap Beats, Vol. 5",
@ -575,8 +562,12 @@ MusicSearchFiltered(
height: 120,
),
],
artists: [],
artists_txt: Some("Eva Florist"),
artists: [
ArtistId(
id: None,
name: "Eva Florist",
),
],
album: Some(AlbumId(
id: "MPREb_wRHz8l7GRIp",
name: "Ballermann Raketen - Die Party Hits für Weihnachten und die Silvester Schlager Fete der Saison 2015 bis 2016",
@ -602,12 +593,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCIh4j8fXWf2U0ro0qnGU8Mg",
ArtistId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"),
name: "Namika",
),
],
artists_txt: Some("Namika"),
album: Some(AlbumId(
id: "MPREb_eew4y1xo5Q3",
name: "Live @ DELUXE MUSIC SESSION",

View file

@ -18,12 +18,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCEdZAdnnKqbaHOlv8nM6OtA",
ArtistId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
name: "aespa",
),
],
artists_txt: Some("aespa"),
album: None,
view_count: Some(235000000),
is_video: true,
@ -41,12 +40,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCyEMqKQPGdj8wKVKt2-agbQ",
ArtistId(
id: Some("UCyEMqKQPGdj8wKVKt2-agbQ"),
name: "Beatport",
),
],
artists_txt: Some("Beatport"),
album: None,
view_count: Some(6400),
is_video: true,
@ -64,12 +62,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UC0PlwwXUJihXdol4I9vuE0g",
ArtistId(
id: Some("UC0PlwwXUJihXdol4I9vuE0g"),
name: "PridePKJ",
),
],
artists_txt: Some("PridePKJ"),
album: None,
view_count: Some(701),
is_video: true,
@ -87,12 +84,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCzP_LIeF9W26F7o03k-Y9CQ",
ArtistId(
id: Some("UCzP_LIeF9W26F7o03k-Y9CQ"),
name: "Seayou Records",
),
],
artists_txt: Some("Seayou Records"),
album: None,
view_count: Some(80000),
is_video: true,
@ -110,12 +106,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCRpjHHu8ivVWs73uxHlWwFA",
ArtistId(
id: Some("UCRpjHHu8ivVWs73uxHlWwFA"),
name: "Eurovision Song Contest",
),
],
artists_txt: Some("Eurovision Song Contest"),
album: None,
view_count: Some(1100000),
is_video: true,
@ -133,12 +128,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCoRXPcv8XK5fAplLbk9PTww",
ArtistId(
id: Some("UCoRXPcv8XK5fAplLbk9PTww"),
name: "THE K-POP",
),
],
artists_txt: Some("THE K-POP"),
album: None,
view_count: Some(269000),
is_video: true,
@ -156,12 +150,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCsw9NVMkJfbxHTuMUMlk3mw",
ArtistId(
id: Some("UCsw9NVMkJfbxHTuMUMlk3mw"),
name: "Dj Kronos",
),
],
artists_txt: Some("Dj Kronos"),
album: None,
view_count: Some(32000),
is_video: true,
@ -179,12 +172,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCBju0pyQY7EWRvLqMkXcxBw",
ArtistId(
id: Some("UCBju0pyQY7EWRvLqMkXcxBw"),
name: "1O1% MUSIC",
),
],
artists_txt: Some("1O1% MUSIC"),
album: None,
view_count: Some(179000),
is_video: true,
@ -202,12 +194,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCawCt_6XWaFxZSW5ZKcIMew",
ArtistId(
id: Some("UCawCt_6XWaFxZSW5ZKcIMew"),
name: "MTV ASIA",
),
],
artists_txt: Some("MTV ASIA"),
album: None,
view_count: Some(69000),
is_video: true,
@ -225,12 +216,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UC_vrqgb3YLoe2MYSJm2aO-A",
ArtistId(
id: Some("UC_vrqgb3YLoe2MYSJm2aO-A"),
name: "K-Series : STORY & MUSIC",
),
],
artists_txt: Some("K-Series : STORY & MUSIC"),
album: None,
view_count: Some(28000),
is_video: true,
@ -248,12 +238,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UC5BMQOsAB8hKUyHu9KI6yig",
ArtistId(
id: Some("UC5BMQOsAB8hKUyHu9KI6yig"),
name: "KBS WORLD TV",
),
],
artists_txt: Some("KBS WORLD TV"),
album: None,
view_count: Some(1300000),
is_video: true,
@ -271,12 +260,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCoRXPcv8XK5fAplLbk9PTww",
ArtistId(
id: Some("UCoRXPcv8XK5fAplLbk9PTww"),
name: "THE K-POP",
),
],
artists_txt: Some("THE K-POP"),
album: None,
view_count: Some(3000000),
is_video: true,
@ -294,12 +282,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCaDT20-B3U8h-tPg_VMvntw",
ArtistId(
id: Some("UCaDT20-B3U8h-tPg_VMvntw"),
name: "The Black Mamba",
),
],
artists_txt: Some("The Black Mamba"),
album: None,
view_count: Some(49000),
is_video: true,
@ -317,12 +304,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCEAgugIw6pHGg7MRlkOU1Dw",
ArtistId(
id: Some("UCEAgugIw6pHGg7MRlkOU1Dw"),
name: "Studio Brussel",
),
],
artists_txt: Some("Studio Brussel"),
album: None,
view_count: Some(29000),
is_video: true,
@ -340,12 +326,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCAj9gLNfM0q3MFhovVmAtBw",
ArtistId(
id: Some("UCAj9gLNfM0q3MFhovVmAtBw"),
name: "Achim Müller",
),
],
artists_txt: Some("Achim Müller"),
album: None,
view_count: Some(823),
is_video: true,
@ -363,12 +348,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCRpjHHu8ivVWs73uxHlWwFA",
ArtistId(
id: Some("UCRpjHHu8ivVWs73uxHlWwFA"),
name: "Eurovision Song Contest",
),
],
artists_txt: Some("Eurovision Song Contest"),
album: None,
view_count: Some(1800000),
is_video: true,
@ -386,12 +370,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCeLPm9yH_a_QH8n6445G-Ow",
ArtistId(
id: Some("UCeLPm9yH_a_QH8n6445G-Ow"),
name: "KBS Kpop",
),
],
artists_txt: Some("KBS Kpop"),
album: None,
view_count: Some(4400000),
is_video: true,
@ -409,12 +392,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCaDT20-B3U8h-tPg_VMvntw",
ArtistId(
id: Some("UCaDT20-B3U8h-tPg_VMvntw"),
name: "The Black Mamba",
),
],
artists_txt: Some("The Black Mamba"),
album: None,
view_count: Some(1300),
is_video: true,
@ -432,12 +414,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCEdZAdnnKqbaHOlv8nM6OtA",
ArtistId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
name: "aespa",
),
],
artists_txt: Some("aespa"),
album: None,
view_count: Some(249000000),
is_video: true,
@ -455,12 +436,11 @@ MusicSearchFiltered(
),
],
artists: [
ChannelId(
id: "UCB-TbzcDawIZVkG229eqnKg",
ArtistId(
id: Some("UCB-TbzcDawIZVkG229eqnKg"),
name: "Sweet & Sour",
),
],
artists_txt: Some("Sweet & Sour"),
album: None,
view_count: Some(15000),
is_video: true,

View file

@ -21,12 +21,11 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCIh4j8fXWf2U0ro0qnGU8Mg",
ArtistId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"),
name: "Namika",
),
],
artists_txt: Some("Namika"),
album: Some(AlbumId(
id: "MPREb_RXHxrUFfrvQ",
name: "Lieblingsmensch",
@ -52,12 +51,11 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCCpID8TTjkkjLCwBybAfHSg",
ArtistId(
id: Some("UCCpID8TTjkkjLCwBybAfHSg"),
name: "Boris Brejcha",
),
],
artists_txt: Some("Boris Brejcha"),
album: Some(AlbumId(
id: "MPREb_VFqQlfPhsFW",
name: "Lieblingsmensch",
@ -83,12 +81,11 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCvfUKCnUBfsZAVHgF-pYmJg",
ArtistId(
id: Some("UCvfUKCnUBfsZAVHgF-pYmJg"),
name: "Voyce",
),
],
artists_txt: Some("Voyce"),
album: Some(AlbumId(
id: "MPREb_SpT32xAd4YR",
name: "Gegenstück EP",
@ -109,12 +106,11 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCIh4j8fXWf2U0ro0qnGU8Mg",
ArtistId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"),
name: "Namika",
),
],
artists_txt: Some("Namika"),
album: None,
view_count: Some(108000000),
is_video: true,
@ -132,12 +128,11 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCgoJMRKimbxB374QjHgE6kA",
ArtistId(
id: Some("UCgoJMRKimbxB374QjHgE6kA"),
name: "jessika adam",
),
],
artists_txt: Some("jessika adam"),
album: None,
view_count: Some(10000000),
is_video: true,
@ -155,12 +150,11 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCiQjRO2m3dBBlg7sqTaFA_A",
ArtistId(
id: Some("UCiQjRO2m3dBBlg7sqTaFA_A"),
name: "ZockerAlarm",
),
],
artists_txt: Some("ZockerAlarm"),
album: None,
view_count: Some(56000),
is_video: true,
@ -194,14 +188,14 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCIh4j8fXWf2U0ro0qnGU8Mg",
ArtistId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"),
name: "Namika",
),
],
artists_txt: "Namika",
album_type: Single,
year: Some(2015),
by_va: false,
),
AlbumItem(
id: "MPREb_V5f8YfHKp2j",
@ -229,14 +223,14 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCIh4j8fXWf2U0ro0qnGU8Mg",
ArtistId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"),
name: "Namika",
),
],
artists_txt: "Namika",
album_type: Ep,
year: Some(2015),
by_va: false,
),
AlbumItem(
id: "MPREb_AlIjxpnBKtn",
@ -264,14 +258,14 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCCpID8TTjkkjLCwBybAfHSg",
ArtistId(
id: Some("UCCpID8TTjkkjLCwBybAfHSg"),
name: "Boris Brejcha",
),
],
artists_txt: "Boris Brejcha",
album_type: Single,
year: Some(2019),
by_va: false,
),
AlbumItem(
id: "MPREb_VFqQlfPhsFW",
@ -299,14 +293,14 @@ MusicSearchResult(
),
],
artists: [
ChannelId(
id: "UCCpID8TTjkkjLCwBybAfHSg",
ArtistId(
id: Some("UCCpID8TTjkkjLCwBybAfHSg"),
name: "Boris Brejcha",
),
],
artists_txt: "Boris Brejcha",
album_type: Single,
year: Some(2019),
by_va: false,
),
],
artists: [

View file

@ -22,12 +22,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UCxoJ3pl32f39kmTvIR_NWOg",
ArtistId(
id: Some("UCxoJ3pl32f39kmTvIR_NWOg"),
name: "Akae Beka",
),
],
artists_txt: Some("Akae Beka"),
album: Some(AlbumId(
id: "MPREb_iuN0lQwEmRp",
name: "Kings Dub",
@ -53,12 +52,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UCz7CQ4Mn9VChcO5-8j0SZpQ",
ArtistId(
id: Some("UCz7CQ4Mn9VChcO5-8j0SZpQ"),
name: "Stylophonic",
),
],
artists_txt: Some("Stylophonic"),
album: Some(AlbumId(
id: "MPREb_HOsmtxbCHyg",
name: "Boom!",
@ -84,12 +82,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UCAlOD5s3Ro27M61-2Z_UB7w",
ArtistId(
id: Some("UCAlOD5s3Ro27M61-2Z_UB7w"),
name: "Tee See Connection",
),
],
artists_txt: Some("Tee See Connection"),
album: Some(AlbumId(
id: "MPREb_yrsxU7t0h6l",
name: "Black Mamba",
@ -115,12 +112,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UCJv4icVpfpTaKZcB_Bytxyw",
ArtistId(
id: Some("UCJv4icVpfpTaKZcB_Bytxyw"),
name: "Bravoo Hunnidz",
),
],
artists_txt: Some("Bravoo Hunnidz"),
album: Some(AlbumId(
id: "MPREb_7Bg4fukodPY",
name: "Ballin\' Like I\'m Kobe",
@ -146,12 +142,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UC7RJTtpE3qwbw6-Idq9PTIg",
ArtistId(
id: Some("UC7RJTtpE3qwbw6-Idq9PTIg"),
name: "Shockwave-Sound",
),
],
artists_txt: Some("Shockwave-Sound"),
album: Some(AlbumId(
id: "MPREb_Kg4Ff883GH0",
name: "Out on the Road",
@ -177,12 +172,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UCh4Y9bvt_6vDq1gQhhT8AdA",
ArtistId(
id: Some("UCh4Y9bvt_6vDq1gQhhT8AdA"),
name: "Solo Da Honcho",
),
],
artists_txt: Some("Solo Da Honcho"),
album: Some(AlbumId(
id: "MPREb_fmNpLFKg4BY",
name: "Black Mamba",
@ -208,12 +202,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UCRpi1gBlax4sK3dNNxIxxFg",
ArtistId(
id: Some("UCRpi1gBlax4sK3dNNxIxxFg"),
name: "Black Mamba Official",
),
],
artists_txt: Some("Black Mamba Official"),
album: Some(AlbumId(
id: "MPREb_zMwHYnQRmuP",
name: "Born To Fight",
@ -238,8 +231,12 @@ Paginator(
height: 120,
),
],
artists: [],
artists_txt: Some("Dollah"),
artists: [
ArtistId(
id: None,
name: "Dollah",
),
],
album: Some(AlbumId(
id: "MPREb_5mxIz2hChjd",
name: "Black Mamba",
@ -265,12 +262,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UCEdZAdnnKqbaHOlv8nM6OtA",
ArtistId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
name: "aespa",
),
],
artists_txt: Some("aespa"),
album: Some(AlbumId(
id: "MPREb_ThKZWN8DQwp",
name: "Savage - The 1st Mini Album",
@ -296,12 +292,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UCQSz-Rhz_ew4hUprXww4PAA",
ArtistId(
id: Some("UCQSz-Rhz_ew4hUprXww4PAA"),
name: "Crystal Ignite",
),
],
artists_txt: Some("Crystal Ignite"),
album: Some(AlbumId(
id: "MPREb_E29fqYqQp2V",
name: "Black Mamba",
@ -326,8 +321,12 @@ Paginator(
height: 120,
),
],
artists: [],
artists_txt: Some("Izhha, yasom, Samu, Ritmo, and Dcibel"),
artists: [
ArtistId(
id: None,
name: "Izhha, yasom, Samu, Ritmo, and Dcibel",
),
],
album: Some(AlbumId(
id: "MPREb_PokIWXXD0EX",
name: "Black Mamba",
@ -353,12 +352,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UCuDH6EntL5Qx9YrQCZSFiPg",
ArtistId(
id: Some("UCuDH6EntL5Qx9YrQCZSFiPg"),
name: "Jeroenski",
),
],
artists_txt: Some("Jeroenski"),
album: Some(AlbumId(
id: "MPREb_NjnY9xgK1OH",
name: "Urban Vibes (The Underground Sound of House Music, Vol. 9)",
@ -384,12 +382,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UCRpi1gBlax4sK3dNNxIxxFg",
ArtistId(
id: Some("UCRpi1gBlax4sK3dNNxIxxFg"),
name: "Black Mamba Official",
),
],
artists_txt: Some("Black Mamba Official"),
album: Some(AlbumId(
id: "MPREb_TyaTgucQuuW",
name: "Soul Surrender",
@ -415,12 +412,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UCdkNrc_l73BHYKRhDqxBo9w",
ArtistId(
id: Some("UCdkNrc_l73BHYKRhDqxBo9w"),
name: "Black Mamba Man",
),
],
artists_txt: Some("Black Mamba Man"),
album: Some(AlbumId(
id: "MPREb_VDjWCOUvD7s",
name: "Anti Venom",
@ -446,12 +442,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UCiS97__D2VSNbDMfajnkTkw",
ArtistId(
id: Some("UCiS97__D2VSNbDMfajnkTkw"),
name: "Liapin",
),
],
artists_txt: Some("Liapin"),
album: Some(AlbumId(
id: "MPREb_TQJZCrJZ9cZ",
name: "Basila",
@ -477,20 +472,19 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UC3z_UqNGLnKLHfBDONx82zQ",
ArtistId(
id: Some("UC3z_UqNGLnKLHfBDONx82zQ"),
name: "Romane, Stochelo Rosenberg",
),
ChannelId(
id: "UCPrlkPZfsIoN6QG-jDRYQkQ",
ArtistId(
id: Some("UCPrlkPZfsIoN6QG-jDRYQkQ"),
name: "Romane",
),
ChannelId(
id: "UCmsTxLepDwdzr07-ALKUEHw",
ArtistId(
id: Some("UCmsTxLepDwdzr07-ALKUEHw"),
name: "Stochelo Rosenberg",
),
],
artists_txt: Some("Romane, Stochelo Rosenberg, Romane & Stochelo Rosenberg"),
album: Some(AlbumId(
id: "MPREb_RFMbAhqPjqV",
name: "Double jeu (Intégrale Romane, vol. 9)",
@ -516,12 +510,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UC2wd_7GTMGiQjIb6wCwnLhQ",
ArtistId(
id: Some("UC2wd_7GTMGiQjIb6wCwnLhQ"),
name: "Hangmen",
),
],
artists_txt: Some("Hangmen"),
album: Some(AlbumId(
id: "MPREb_fEAazqatkfR",
name: "Singapore Slingers",
@ -547,12 +540,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UCXQvoNpH-EDGUnCe2ABldDg",
ArtistId(
id: Some("UCXQvoNpH-EDGUnCe2ABldDg"),
name: "Two Tone Club",
),
],
artists_txt: Some("Two Tone Club"),
album: Some(AlbumId(
id: "MPREb_ksEm4DleWYg",
name: "Don\'t Look Back",
@ -578,12 +570,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UCPjjr_AvPvEhZ5nnzEACI4w",
ArtistId(
id: Some("UCPjjr_AvPvEhZ5nnzEACI4w"),
name: "Adrian Raso",
),
],
artists_txt: Some("Adrian Raso"),
album: Some(AlbumId(
id: "MPREb_Ws191BQ8IqM",
name: "Black Mamba",
@ -609,12 +600,11 @@ Paginator(
),
],
artists: [
ChannelId(
id: "UC_GZYnrfgYfORwOb2MsuyIg",
ArtistId(
id: Some("UC_GZYnrfgYfORwOb2MsuyIg"),
name: "Tunde",
),
],
artists_txt: Some("Tunde"),
album: Some(AlbumId(
id: "MPREb_5VuPA4DLi53",
name: "Black Mamba Style",

View file

@ -875,15 +875,7 @@ pub struct TrackItem {
/// Album cover
pub cover: Vec<Thumbnail>,
/// Artists of the track
///
/// **Note:** this field only contains artists that have a link attached
/// to them. You may want to use `artists_txt` as a fallback.
pub artists: Vec<ChannelId>,
/// Full content of the artists column
///
/// Conjunction words/characters depend on language and fetched page.
/// Includes unlinked artists.
pub artists_txt: Option<String>,
pub artists: Vec<ArtistId>,
/// Album of the track
pub album: Option<AlbumId>,
/// View count
@ -914,6 +906,14 @@ pub struct ArtistItem {
pub subscriber_count: Option<u64>,
}
/// YouTube Music artist identifier
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[non_exhaustive]
pub struct ArtistId {
pub id: Option<String>,
pub name: String,
}
/// YouTube Music album list item
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[non_exhaustive]
@ -925,16 +925,13 @@ pub struct AlbumItem {
/// Album cover
pub cover: Vec<Thumbnail>,
/// Artists of the album
pub artists: Vec<ChannelId>,
/// Full content of the artists field
///
/// Conjunction words/characters depend on language and fetched page.
/// Includes unlinked artists.
pub artists_txt: String,
pub artists: Vec<ArtistId>,
/// Album type (Album/Single/EP)
pub album_type: AlbumType,
/// Release year of the album
pub year: Option<u16>,
/// Is the album by 'Various artists'?
pub by_va: bool,
}
/// YouTube Music playlist list item
@ -1019,12 +1016,7 @@ pub struct MusicAlbum {
/// Album cover
pub cover: Vec<Thumbnail>,
/// Artists of the album
pub artists: Vec<ChannelId>,
/// Full content of the artists field
///
/// Conjunction words/characters depend on language and fetched page.
/// Includes unlinked artists.
pub artists_txt: String,
pub artists: Vec<ArtistId>,
/// Album type (Album/Single/EP)
pub album_type: AlbumType,
/// Release year

View file

@ -325,6 +325,39 @@ impl TryFrom<TextComponent> for crate::model::AlbumId {
}
}
impl From<TextComponent> for crate::model::ArtistId {
fn from(component: TextComponent) -> Self {
match component {
TextComponent::Browse {
text,
page_type,
browse_id,
} => match page_type {
PageType::Channel | PageType::Artist => Self {
id: Some(browse_id),
name: text,
},
_ => Self {
id: None,
name: text,
},
},
TextComponent::Video { text, .. } => Self {
id: None,
name: text,
},
TextComponent::Web { text, .. } => Self {
id: None,
name: text,
},
TextComponent::Text { text } => Self {
id: None,
name: text,
},
}
}
}
impl From<TextComponent> for crate::model::richtext::TextComponent {
fn from(component: TextComponent) -> Self {
match component {
@ -374,16 +407,6 @@ impl TextComponent {
}
impl TextComponents {
/// Return the string representation of all text components
/// or [`None`] if there aren't any.
pub fn to_opt_string(&self) -> Option<String> {
if self.0.is_empty() {
None
} else {
Some(self.to_string())
}
}
/// Return the string representation of the first text component
pub fn first_str(&self) -> &str {
self.0.first().map(|t| t.as_str()).unwrap_or_default()

File diff suppressed because it is too large Load diff

View file

@ -8,12 +8,11 @@ MusicAlbum(
name: "Waldbrand",
cover: "[cover]",
artists: [
ChannelId(
id: "UCpJyCbFbdTrx0M90HCNBHFQ",
ArtistId(
id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"),
name: "Madeline Juno",
),
],
artists_txt: "Madeline Juno",
album_type: Ep,
year: Some(2016),
by_va: false,
@ -24,15 +23,17 @@ MusicAlbum(
duration: 221,
cover: [],
artists: [
ChannelId(
id: "UCpJyCbFbdTrx0M90HCNBHFQ",
ArtistId(
id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"),
name: "Madeline Juno",
),
],
artists_txt: Some("Madeline Juno"),
album: None,
album: Some(AlbumId(
id: "MPREb_u1I69lSAe5v",
name: "Waldbrand",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(1),
),
TrackItem(
@ -41,15 +42,17 @@ MusicAlbum(
duration: 208,
cover: [],
artists: [
ChannelId(
id: "UCpJyCbFbdTrx0M90HCNBHFQ",
ArtistId(
id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"),
name: "Madeline Juno",
),
],
artists_txt: Some("Madeline Juno"),
album: None,
album: Some(AlbumId(
id: "MPREb_u1I69lSAe5v",
name: "Waldbrand",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(2),
),
TrackItem(
@ -58,15 +61,17 @@ MusicAlbum(
duration: 223,
cover: [],
artists: [
ChannelId(
id: "UCpJyCbFbdTrx0M90HCNBHFQ",
ArtistId(
id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"),
name: "Madeline Juno",
),
],
artists_txt: Some("Madeline Juno"),
album: None,
album: Some(AlbumId(
id: "MPREb_u1I69lSAe5v",
name: "Waldbrand",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(3),
),
TrackItem(
@ -75,15 +80,17 @@ MusicAlbum(
duration: 221,
cover: [],
artists: [
ChannelId(
id: "UCpJyCbFbdTrx0M90HCNBHFQ",
ArtistId(
id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"),
name: "Madeline Juno",
),
],
artists_txt: Some("Madeline Juno"),
album: None,
album: Some(AlbumId(
id: "MPREb_u1I69lSAe5v",
name: "Waldbrand",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(4),
),
TrackItem(
@ -92,15 +99,17 @@ MusicAlbum(
duration: 197,
cover: [],
artists: [
ChannelId(
id: "UCpJyCbFbdTrx0M90HCNBHFQ",
ArtistId(
id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"),
name: "Madeline Juno",
),
],
artists_txt: Some("Madeline Juno"),
album: None,
album: Some(AlbumId(
id: "MPREb_u1I69lSAe5v",
name: "Waldbrand",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(5),
),
],

View file

@ -8,12 +8,11 @@ MusicAlbum(
name: "Märchen enden gut",
cover: "[cover]",
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: "Oonagh",
album_type: Album,
year: Some(2016),
by_va: false,
@ -24,15 +23,17 @@ MusicAlbum(
duration: 216,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(1),
),
TrackItem(
@ -41,15 +42,17 @@ MusicAlbum(
duration: 224,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(2),
),
TrackItem(
@ -58,15 +61,17 @@ MusicAlbum(
duration: 176,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(3),
),
TrackItem(
@ -75,15 +80,17 @@ MusicAlbum(
duration: 215,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(4),
),
TrackItem(
@ -92,15 +99,17 @@ MusicAlbum(
duration: 268,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(5),
),
TrackItem(
@ -109,15 +118,17 @@ MusicAlbum(
duration: 202,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(6),
),
TrackItem(
@ -126,15 +137,17 @@ MusicAlbum(
duration: 185,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(7),
),
TrackItem(
@ -143,15 +156,17 @@ MusicAlbum(
duration: 226,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(8),
),
TrackItem(
@ -160,15 +175,17 @@ MusicAlbum(
duration: 207,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(9),
),
TrackItem(
@ -177,15 +194,17 @@ MusicAlbum(
duration: 211,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(10),
),
TrackItem(
@ -194,15 +213,17 @@ MusicAlbum(
duration: 179,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(11),
),
TrackItem(
@ -211,15 +232,17 @@ MusicAlbum(
duration: 218,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(12),
),
TrackItem(
@ -228,15 +251,17 @@ MusicAlbum(
duration: 277,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(13),
),
TrackItem(
@ -245,15 +270,17 @@ MusicAlbum(
duration: 204,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(14),
),
TrackItem(
@ -262,15 +289,17 @@ MusicAlbum(
duration: 202,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(15),
),
TrackItem(
@ -279,15 +308,17 @@ MusicAlbum(
duration: 222,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(16),
),
TrackItem(
@ -296,15 +327,17 @@ MusicAlbum(
duration: 177,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(17),
),
TrackItem(
@ -313,15 +346,17 @@ MusicAlbum(
duration: 220,
cover: [],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: Some("Oonagh"),
album: None,
album: Some(AlbumId(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(18),
),
],
@ -342,14 +377,14 @@ MusicAlbum(
),
],
artists: [
ChannelId(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
artists_txt: "Oonagh",
album_type: Album,
year: None,
by_va: false,
),
],
)

View file

@ -8,12 +8,11 @@ MusicAlbum(
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
cover: "[cover]",
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: "Kingdom Force",
album_type: Show,
year: Some(2022),
by_va: false,
@ -24,15 +23,17 @@ MusicAlbum(
duration: 229,
cover: [],
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: Some("Kingdom Force"),
album: None,
album: Some(AlbumId(
id: "MPREb_cwzk8EUwypZ",
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(1),
),
TrackItem(
@ -41,15 +42,17 @@ MusicAlbum(
duration: 235,
cover: [],
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: Some("Kingdom Force"),
album: None,
album: Some(AlbumId(
id: "MPREb_cwzk8EUwypZ",
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(2),
),
TrackItem(
@ -58,15 +61,17 @@ MusicAlbum(
duration: 197,
cover: [],
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: Some("Kingdom Force"),
album: None,
album: Some(AlbumId(
id: "MPREb_cwzk8EUwypZ",
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(3),
),
TrackItem(
@ -75,15 +80,17 @@ MusicAlbum(
duration: 186,
cover: [],
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: Some("Kingdom Force"),
album: None,
album: Some(AlbumId(
id: "MPREb_cwzk8EUwypZ",
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(4),
),
TrackItem(
@ -92,15 +99,17 @@ MusicAlbum(
duration: 188,
cover: [],
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: Some("Kingdom Force"),
album: None,
album: Some(AlbumId(
id: "MPREb_cwzk8EUwypZ",
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(5),
),
TrackItem(
@ -109,15 +118,17 @@ MusicAlbum(
duration: 205,
cover: [],
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: Some("Kingdom Force"),
album: None,
album: Some(AlbumId(
id: "MPREb_cwzk8EUwypZ",
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(6),
),
TrackItem(
@ -126,15 +137,17 @@ MusicAlbum(
duration: 219,
cover: [],
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: Some("Kingdom Force"),
album: None,
album: Some(AlbumId(
id: "MPREb_cwzk8EUwypZ",
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(7),
),
TrackItem(
@ -143,15 +156,17 @@ MusicAlbum(
duration: 240,
cover: [],
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: Some("Kingdom Force"),
album: None,
album: Some(AlbumId(
id: "MPREb_cwzk8EUwypZ",
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(8),
),
TrackItem(
@ -160,15 +175,17 @@ MusicAlbum(
duration: 239,
cover: [],
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: Some("Kingdom Force"),
album: None,
album: Some(AlbumId(
id: "MPREb_cwzk8EUwypZ",
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(9),
),
TrackItem(
@ -177,15 +194,17 @@ MusicAlbum(
duration: 197,
cover: [],
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: Some("Kingdom Force"),
album: None,
album: Some(AlbumId(
id: "MPREb_cwzk8EUwypZ",
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(10),
),
TrackItem(
@ -194,15 +213,17 @@ MusicAlbum(
duration: 201,
cover: [],
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: Some("Kingdom Force"),
album: None,
album: Some(AlbumId(
id: "MPREb_cwzk8EUwypZ",
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(11),
),
TrackItem(
@ -211,15 +232,17 @@ MusicAlbum(
duration: 187,
cover: [],
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: Some("Kingdom Force"),
album: None,
album: Some(AlbumId(
id: "MPREb_cwzk8EUwypZ",
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(12),
),
TrackItem(
@ -228,15 +251,17 @@ MusicAlbum(
duration: 183,
cover: [],
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: Some("Kingdom Force"),
album: None,
album: Some(AlbumId(
id: "MPREb_cwzk8EUwypZ",
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(13),
),
TrackItem(
@ -245,15 +270,17 @@ MusicAlbum(
duration: 193,
cover: [],
artists: [
ChannelId(
id: "UCNoyEM0e2A7WlsBmP2w3avg",
ArtistId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"),
name: "Kingdom Force",
),
],
artists_txt: Some("Kingdom Force"),
album: None,
album: Some(AlbumId(
id: "MPREb_cwzk8EUwypZ",
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(14),
),
],

View file

@ -8,16 +8,15 @@ MusicAlbum(
name: "Der Himmel reißt auf",
cover: "[cover]",
artists: [
ChannelId(
id: "UCXGYZ-OhdOpPBamHX3K9YRg",
ArtistId(
id: Some("UCXGYZ-OhdOpPBamHX3K9YRg"),
name: "Joel Brandenstein",
),
ChannelId(
id: "UCFTcSVPYRWlDoHisR-ZKwgw",
ArtistId(
id: Some("UCFTcSVPYRWlDoHisR-ZKwgw"),
name: "Vanessa Mai",
),
],
artists_txt: "Joel Brandenstein & Vanessa Mai",
album_type: Single,
year: Some(2020),
by_va: false,
@ -28,19 +27,21 @@ MusicAlbum(
duration: 183,
cover: [],
artists: [
ChannelId(
id: "UCXGYZ-OhdOpPBamHX3K9YRg",
ArtistId(
id: Some("UCXGYZ-OhdOpPBamHX3K9YRg"),
name: "Joel Brandenstein",
),
ChannelId(
id: "UCFTcSVPYRWlDoHisR-ZKwgw",
ArtistId(
id: Some("UCFTcSVPYRWlDoHisR-ZKwgw"),
name: "Vanessa Mai",
),
],
artists_txt: Some("Joel Brandenstein & Vanessa Mai"),
album: None,
album: Some(AlbumId(
id: "MPREb_bHfHGoy7vuv",
name: "Der Himmel reißt auf",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(1),
),
],

View file

@ -8,7 +8,6 @@ MusicAlbum(
name: "Queendom2 FINAL",
cover: "[cover]",
artists: [],
artists_txt: "Various Artists",
album_type: Single,
year: Some(2022),
by_va: true,
@ -18,11 +17,18 @@ MusicAlbum(
title: "Waka Boom (My Way) (feat. Lee Young Ji)",
duration: 274,
cover: [],
artists: [],
artists_txt: Some("HYOLYN"),
album: None,
artists: [
ArtistId(
id: None,
name: "HYOLYN",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(1),
),
TrackItem(
@ -30,11 +36,18 @@ MusicAlbum(
title: "AURA",
duration: 216,
cover: [],
artists: [],
artists_txt: Some("WJSN"),
album: None,
artists: [
ArtistId(
id: None,
name: "WJSN",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(2),
),
TrackItem(
@ -43,15 +56,17 @@ MusicAlbum(
duration: 239,
cover: [],
artists: [
ChannelId(
id: "UCAKvDuIX3m1AUdPpDSqV_3w",
ArtistId(
id: Some("UCAKvDuIX3m1AUdPpDSqV_3w"),
name: "Kep1er",
),
],
artists_txt: Some("Kep1er"),
album: None,
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(3),
),
TrackItem(
@ -59,11 +74,18 @@ MusicAlbum(
title: "Red Sun!",
duration: 254,
cover: [],
artists: [],
artists_txt: Some("VIVIZ"),
album: None,
artists: [
ArtistId(
id: None,
name: "VIVIZ",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(4),
),
TrackItem(
@ -71,11 +93,18 @@ MusicAlbum(
title: "POSE",
duration: 187,
cover: [],
artists: [],
artists_txt: Some("LOONA"),
album: None,
artists: [
ArtistId(
id: None,
name: "LOONA",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(5),
),
TrackItem(
@ -83,11 +112,18 @@ MusicAlbum(
title: "Whistle",
duration: 224,
cover: [],
artists: [],
artists_txt: Some("Brave Girls"),
album: None,
artists: [
ArtistId(
id: None,
name: "Brave Girls",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None,
is_video: true,
is_video: false,
track_nr: Some(6),
),
],

View file

@ -1386,10 +1386,13 @@ async fn music_search(#[case] typo: bool) {
assert_eq!(track.duration, 230);
assert!(!track.cover.is_empty(), "got no cover");
assert_eq!(track.artists.len(), 1);
let track_artist = &track.artists[0];
assert_eq!(track_artist.id, "UCEdZAdnnKqbaHOlv8nM6OtA");
assert_eq!(
track_artist.id.as_ref().unwrap(),
"UCEdZAdnnKqbaHOlv8nM6OtA"
);
assert_eq!(track_artist.name, "aespa");
assert_eq!(track.artists_txt.as_ref().unwrap(), "aespa");
assert_eq!(track.album, None);
assert_gte(track.view_count.unwrap(), 230_000_000, "views");
assert!(track.is_video, "got no video");
@ -1414,10 +1417,13 @@ async fn music_search_tracks(#[case] videos: bool) {
assert_eq!(track.is_video, videos);
assert_eq!(track.track_nr, None);
assert_eq!(track.artists.len(), 1);
let track_artist = &track.artists[0];
assert_eq!(track_artist.id, "UCEdZAdnnKqbaHOlv8nM6OtA");
assert_eq!(
track_artist.id.as_ref().unwrap(),
"UCEdZAdnnKqbaHOlv8nM6OtA"
);
assert_eq!(track_artist.name, "aespa");
assert_eq!(track.artists_txt.as_ref().unwrap(), "aespa");
if videos {
assert_eq!(track.id, "ZeerrnuLi5E");
@ -1484,10 +1490,10 @@ async fn music_search_albums(
let album = &res.items.items[0];
assert_eq!(album.name, name);
assert_eq!(album.id, id);
assert_eq!(album.artists_txt, artist);
assert_eq!(album.artists.len(), 1);
let album_artist = &album.artists[0];
assert_eq!(album_artist.id, artist_id);
assert_eq!(album_artist.id.as_ref().unwrap(), artist_id);
assert_eq!(album_artist.name, artist);
assert!(!album.cover.is_empty(), "got no cover");