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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -875,15 +875,7 @@ pub struct TrackItem {
/// Album cover /// Album cover
pub cover: Vec<Thumbnail>, pub cover: Vec<Thumbnail>,
/// Artists of the track /// Artists of the track
/// pub artists: Vec<ArtistId>,
/// **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>,
/// Album of the track /// Album of the track
pub album: Option<AlbumId>, pub album: Option<AlbumId>,
/// View count /// View count
@ -914,6 +906,14 @@ pub struct ArtistItem {
pub subscriber_count: Option<u64>, 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 /// YouTube Music album list item
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[non_exhaustive] #[non_exhaustive]
@ -925,16 +925,13 @@ pub struct AlbumItem {
/// Album cover /// Album cover
pub cover: Vec<Thumbnail>, pub cover: Vec<Thumbnail>,
/// Artists of the album /// Artists of the album
pub artists: Vec<ChannelId>, pub artists: Vec<ArtistId>,
/// Full content of the artists field
///
/// Conjunction words/characters depend on language and fetched page.
/// Includes unlinked artists.
pub artists_txt: String,
/// Album type (Album/Single/EP) /// Album type (Album/Single/EP)
pub album_type: AlbumType, pub album_type: AlbumType,
/// Release year of the album /// Release year of the album
pub year: Option<u16>, pub year: Option<u16>,
/// Is the album by 'Various artists'?
pub by_va: bool,
} }
/// YouTube Music playlist list item /// YouTube Music playlist list item
@ -1019,12 +1016,7 @@ pub struct MusicAlbum {
/// Album cover /// Album cover
pub cover: Vec<Thumbnail>, pub cover: Vec<Thumbnail>,
/// Artists of the album /// Artists of the album
pub artists: Vec<ChannelId>, pub artists: Vec<ArtistId>,
/// Full content of the artists field
///
/// Conjunction words/characters depend on language and fetched page.
/// Includes unlinked artists.
pub artists_txt: String,
/// Album type (Album/Single/EP) /// Album type (Album/Single/EP)
pub album_type: AlbumType, pub album_type: AlbumType,
/// Release year /// 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 { impl From<TextComponent> for crate::model::richtext::TextComponent {
fn from(component: TextComponent) -> Self { fn from(component: TextComponent) -> Self {
match component { match component {
@ -374,16 +407,6 @@ impl TextComponent {
} }
impl TextComponents { 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 /// Return the string representation of the first text component
pub fn first_str(&self) -> &str { pub fn first_str(&self) -> &str {
self.0.first().map(|t| t.as_str()).unwrap_or_default() 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", name: "Waldbrand",
cover: "[cover]", cover: "[cover]",
artists: [ artists: [
ChannelId( ArtistId(
id: "UCpJyCbFbdTrx0M90HCNBHFQ", id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"),
name: "Madeline Juno", name: "Madeline Juno",
), ),
], ],
artists_txt: "Madeline Juno",
album_type: Ep, album_type: Ep,
year: Some(2016), year: Some(2016),
by_va: false, by_va: false,
@ -24,15 +23,17 @@ MusicAlbum(
duration: 221, duration: 221,
cover: [], cover: [],
artists: [ artists: [
ChannelId( ArtistId(
id: "UCpJyCbFbdTrx0M90HCNBHFQ", id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"),
name: "Madeline Juno", name: "Madeline Juno",
), ),
], ],
artists_txt: Some("Madeline Juno"), album: Some(AlbumId(
album: None, id: "MPREb_u1I69lSAe5v",
name: "Waldbrand",
)),
view_count: None, view_count: None,
is_video: true, is_video: false,
track_nr: Some(1), track_nr: Some(1),
), ),
TrackItem( TrackItem(
@ -41,15 +42,17 @@ MusicAlbum(
duration: 208, duration: 208,
cover: [], cover: [],
artists: [ artists: [
ChannelId( ArtistId(
id: "UCpJyCbFbdTrx0M90HCNBHFQ", id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"),
name: "Madeline Juno", name: "Madeline Juno",
), ),
], ],
artists_txt: Some("Madeline Juno"), album: Some(AlbumId(
album: None, id: "MPREb_u1I69lSAe5v",
name: "Waldbrand",
)),
view_count: None, view_count: None,
is_video: true, is_video: false,
track_nr: Some(2), track_nr: Some(2),
), ),
TrackItem( TrackItem(
@ -58,15 +61,17 @@ MusicAlbum(
duration: 223, duration: 223,
cover: [], cover: [],
artists: [ artists: [
ChannelId( ArtistId(
id: "UCpJyCbFbdTrx0M90HCNBHFQ", id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"),
name: "Madeline Juno", name: "Madeline Juno",
), ),
], ],
artists_txt: Some("Madeline Juno"), album: Some(AlbumId(
album: None, id: "MPREb_u1I69lSAe5v",
name: "Waldbrand",
)),
view_count: None, view_count: None,
is_video: true, is_video: false,
track_nr: Some(3), track_nr: Some(3),
), ),
TrackItem( TrackItem(
@ -75,15 +80,17 @@ MusicAlbum(
duration: 221, duration: 221,
cover: [], cover: [],
artists: [ artists: [
ChannelId( ArtistId(
id: "UCpJyCbFbdTrx0M90HCNBHFQ", id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"),
name: "Madeline Juno", name: "Madeline Juno",
), ),
], ],
artists_txt: Some("Madeline Juno"), album: Some(AlbumId(
album: None, id: "MPREb_u1I69lSAe5v",
name: "Waldbrand",
)),
view_count: None, view_count: None,
is_video: true, is_video: false,
track_nr: Some(4), track_nr: Some(4),
), ),
TrackItem( TrackItem(
@ -92,15 +99,17 @@ MusicAlbum(
duration: 197, duration: 197,
cover: [], cover: [],
artists: [ artists: [
ChannelId( ArtistId(
id: "UCpJyCbFbdTrx0M90HCNBHFQ", id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"),
name: "Madeline Juno", name: "Madeline Juno",
), ),
], ],
artists_txt: Some("Madeline Juno"), album: Some(AlbumId(
album: None, id: "MPREb_u1I69lSAe5v",
name: "Waldbrand",
)),
view_count: None, view_count: None,
is_video: true, is_video: false,
track_nr: Some(5), track_nr: Some(5),
), ),
], ],

View file

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

View file

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

View file

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

View file

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

View file

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