Compare commits

..

No commits in common. "01a131ed6f9e8cfd29a23cbc66743d507417b535" and "45e2d3c7c729e67f204336d9fb1fe859130dd838" have entirely different histories.

25 changed files with 2680 additions and 5019 deletions

View file

@ -2,7 +2,7 @@ use std::borrow::Cow;
use crate::{ use crate::{
error::{Error, ExtractionError}, error::{Error, ExtractionError},
model::{AlbumId, ChannelId, MusicAlbum, MusicPlaylist, Paginator}, model::{ChannelId, MusicAlbum, MusicPlaylist, Paginator},
serializer::MapResult, serializer::MapResult,
util::{self, TryRemove}, util::{self, TryRemove},
}; };
@ -194,24 +194,22 @@ 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, by_va) = map_artists(artists_p); let (artists, artists_txt) = 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 = MusicListMapper::with_album( let mut mapper = match by_va {
lang, true => MusicListMapper::new(lang),
artists.clone(), false => {
by_va, MusicListMapper::with_artists(lang, artists.clone(), artists_txt.clone(), false)
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;
@ -230,6 +228,7 @@ 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, ArtistId, ArtistItem, ChannelId, FromYtItem, self, AlbumId, AlbumItem, AlbumType, ArtistItem, ChannelId, FromYtItem, MusicEntityType,
MusicEntityType, MusicItem, MusicPlaylistItem, TrackItem, MusicItem, MusicPlaylistItem, TrackItem,
}, },
param::Language, param::Language,
serializer::{ serializer::{
@ -194,9 +194,7 @@ pub(crate) struct ContinuationContents {
#[derive(Debug)] #[derive(Debug)]
pub(crate) struct MusicListMapper { pub(crate) struct MusicListMapper {
lang: Language, lang: Language,
/// Artists list + various artists flag o_artists: Option<(Vec<ChannelId>, String)>,
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>,
@ -214,40 +212,26 @@ impl MusicListMapper {
pub fn new(lang: Language) -> Self { pub fn new(lang: Language) -> Self {
Self { Self {
lang, lang,
artists: None, o_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<ArtistId>, artists: Vec<ChannelId>,
by_va: bool, artists_txt: String,
artist_page: bool, artist_page: bool,
) -> Self { ) -> Self {
Self { Self {
lang, lang,
artists: Some((artists, by_va)), o_artists: Some((artists, artists_txt)),
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> {
@ -297,7 +281,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, by_va) = map_artists(subtitle_p2); let (artists, artists_txt) = 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());
@ -307,9 +291,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)
} }
@ -365,10 +349,8 @@ 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))?;
// Videos have rectangular thumbnails, YTM tracks have square covers let is_video =
// Exception: there are no thumbnails on album items !first_tn.map(|tn| tn.height == tn.width).unwrap_or_default();
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
{ {
@ -403,8 +385,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| {
@ -412,23 +394,29 @@ impl MusicListMapper {
}), }),
), ),
(_, false) => ( (_, false) => (
album_p album_p.and_then(|p| {
.and_then(|p| { p.0.into_iter().find_map(|c| AlbumId::try_from(c).ok())
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, _) = map_artists(artists_p); let mut artists_txt =
artists_p.as_ref().and_then(TextComponents::to_opt_string);
let mut artists = artists_p
.map(|p| {
p.0.into_iter()
.filter_map(|c| ChannelId::try_from(c).ok())
.collect::<Vec<_>>()
})
.unwrap_or_default();
// Fall back to the artist given when constructing the mapper. if let Some(a) = &self.o_artists {
// This is used for extracting artist pages. if artists.is_empty() && artists_txt.is_none() {
if let Some(a) = &self.artists { let xa = a.clone();
if artists.is_empty() { artists = xa.0;
artists = a.0.clone(); artists_txt = Some(xa.1);
} }
} }
@ -440,6 +428,7 @@ 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,
@ -465,18 +454,23 @@ impl MusicListMapper {
let mut year = None; let mut year = None;
let mut album_type = AlbumType::Single; let mut album_type = AlbumType::Single;
let (artists, by_va) = let (artists, artists_txt) =
match (subtitle_p1, subtitle_p2, &self.artists, self.artist_page) { match (subtitle_p1, subtitle_p2, &self.o_artists, self.artist_page) {
// "2022" (Artist singles) // "2022" (Artist singles)
(Some(year_txt), None, Some(artists), true) => { (Some(year_txt), None, Some((artists, artists_txt)), true) => {
year = util::parse_numeric(year_txt.first_str()).ok(); year = util::parse_numeric(year_txt.first_str()).ok();
artists.clone() (artists.clone(), artists_txt.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.clone(), artists_txt.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) => {
@ -496,9 +490,9 @@ impl MusicListMapper {
name: item.title, name: item.title,
cover: item.thumbnail_renderer.into(), cover: item.thumbnail_renderer.into(),
artists, artists,
album_type, artists_txt,
year, year,
by_va, album_type,
})); }));
Ok(MusicEntityType::Album) Ok(MusicEntityType::Album)
} }
@ -601,30 +595,21 @@ impl MusicListMapper {
} }
} }
pub(crate) fn map_artists(artists_p: Option<TextComponents>) -> (Vec<ArtistId>, bool) { pub(crate) fn map_artists(artists_p: Option<TextComponents>) -> (Vec<ChannelId>, String) {
let mut by_va = false; let artists_txt = artists_p
.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()
.enumerate() .filter_map(|c| ChannelId::try_from(c).ok())
.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,11 +29,12 @@ MusicAlbum(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "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,
@ -44,17 +45,15 @@ MusicAlbum(
duration: 216, duration: 216,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(1), track_nr: Some(1),
), ),
TrackItem( TrackItem(
@ -63,17 +62,15 @@ MusicAlbum(
duration: 224, duration: 224,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(2), track_nr: Some(2),
), ),
TrackItem( TrackItem(
@ -82,17 +79,15 @@ MusicAlbum(
duration: 176, duration: 176,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(3), track_nr: Some(3),
), ),
TrackItem( TrackItem(
@ -101,17 +96,15 @@ MusicAlbum(
duration: 215, duration: 215,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(4), track_nr: Some(4),
), ),
TrackItem( TrackItem(
@ -120,17 +113,15 @@ MusicAlbum(
duration: 268, duration: 268,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(5), track_nr: Some(5),
), ),
TrackItem( TrackItem(
@ -139,17 +130,15 @@ MusicAlbum(
duration: 202, duration: 202,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(6), track_nr: Some(6),
), ),
TrackItem( TrackItem(
@ -158,17 +147,15 @@ MusicAlbum(
duration: 185, duration: 185,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(7), track_nr: Some(7),
), ),
TrackItem( TrackItem(
@ -177,17 +164,15 @@ MusicAlbum(
duration: 226, duration: 226,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(8), track_nr: Some(8),
), ),
TrackItem( TrackItem(
@ -196,17 +181,15 @@ MusicAlbum(
duration: 207, duration: 207,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(9), track_nr: Some(9),
), ),
TrackItem( TrackItem(
@ -215,17 +198,15 @@ MusicAlbum(
duration: 211, duration: 211,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(10), track_nr: Some(10),
), ),
TrackItem( TrackItem(
@ -234,17 +215,15 @@ MusicAlbum(
duration: 179, duration: 179,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(11), track_nr: Some(11),
), ),
TrackItem( TrackItem(
@ -253,17 +232,15 @@ MusicAlbum(
duration: 218, duration: 218,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(12), track_nr: Some(12),
), ),
TrackItem( TrackItem(
@ -272,17 +249,15 @@ MusicAlbum(
duration: 277, duration: 277,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(13), track_nr: Some(13),
), ),
TrackItem( TrackItem(
@ -291,17 +266,15 @@ MusicAlbum(
duration: 204, duration: 204,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(14), track_nr: Some(14),
), ),
TrackItem( TrackItem(
@ -310,17 +283,15 @@ MusicAlbum(
duration: 202, duration: 202,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(15), track_nr: Some(15),
), ),
TrackItem( TrackItem(
@ -329,17 +300,15 @@ MusicAlbum(
duration: 222, duration: 222,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(16), track_nr: Some(16),
), ),
TrackItem( TrackItem(
@ -348,17 +317,15 @@ MusicAlbum(
duration: 177, duration: 177,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(17), track_nr: Some(17),
), ),
TrackItem( TrackItem(
@ -367,17 +334,15 @@ MusicAlbum(
duration: 220, duration: 220,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(18), track_nr: Some(18),
), ),
], ],
@ -398,14 +363,14 @@ MusicAlbum(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "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,15 +29,16 @@ MusicAlbum(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCXGYZ-OhdOpPBamHX3K9YRg"), id: "UCXGYZ-OhdOpPBamHX3K9YRg",
name: "Joel Brandenstein", name: "Joel Brandenstein",
), ),
ArtistId( ChannelId(
id: Some("UCFTcSVPYRWlDoHisR-ZKwgw"), id: "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,
@ -48,21 +49,19 @@ MusicAlbum(
duration: 183, duration: 183,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCXGYZ-OhdOpPBamHX3K9YRg"), id: "UCXGYZ-OhdOpPBamHX3K9YRg",
name: "Joel Brandenstein", name: "Joel Brandenstein",
), ),
ArtistId( ChannelId(
id: Some("UCFTcSVPYRWlDoHisR-ZKwgw"), id: "UCFTcSVPYRWlDoHisR-ZKwgw",
name: "Vanessa Mai", name: "Vanessa Mai",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Joel Brandenstein & Vanessa Mai"),
id: "MPREb_bHfHGoy7vuv", album: None,
name: "Der Himmel reißt auf",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(1), track_nr: Some(1),
), ),
], ],

View file

@ -29,6 +29,7 @@ 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,
@ -38,18 +39,11 @@ 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: [],
ArtistId( artists_txt: Some("HYOLYN"),
id: None, album: None,
name: "HYOLYN",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(1), track_nr: Some(1),
), ),
TrackItem( TrackItem(
@ -57,18 +51,11 @@ MusicAlbum(
title: "AURA", title: "AURA",
duration: 216, duration: 216,
cover: [], cover: [],
artists: [ artists: [],
ArtistId( artists_txt: Some("WJSN"),
id: None, album: None,
name: "WJSN",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(2), track_nr: Some(2),
), ),
TrackItem( TrackItem(
@ -77,17 +64,15 @@ MusicAlbum(
duration: 239, duration: 239,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCAKvDuIX3m1AUdPpDSqV_3w"), id: "UCAKvDuIX3m1AUdPpDSqV_3w",
name: "Kep1er", name: "Kep1er",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kep1er"),
id: "MPREb_8QkDeEIawvX", album: None,
name: "Queendom2 FINAL",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(3), track_nr: Some(3),
), ),
TrackItem( TrackItem(
@ -95,18 +80,11 @@ MusicAlbum(
title: "Red Sun!", title: "Red Sun!",
duration: 254, duration: 254,
cover: [], cover: [],
artists: [ artists: [],
ArtistId( artists_txt: Some("VIVIZ"),
id: None, album: None,
name: "VIVIZ",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(4), track_nr: Some(4),
), ),
TrackItem( TrackItem(
@ -114,18 +92,11 @@ MusicAlbum(
title: "POSE", title: "POSE",
duration: 187, duration: 187,
cover: [], cover: [],
artists: [ artists: [],
ArtistId( artists_txt: Some("LOONA"),
id: None, album: None,
name: "LOONA",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(5), track_nr: Some(5),
), ),
TrackItem( TrackItem(
@ -133,18 +104,11 @@ MusicAlbum(
title: "Whistle", title: "Whistle",
duration: 224, duration: 224,
cover: [], cover: [],
artists: [ artists: [],
ArtistId( artists_txt: Some("Brave Girls"),
id: None, album: None,
name: "Brave Girls",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(6), track_nr: Some(6),
), ),
], ],

View file

@ -43,12 +43,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -65,12 +61,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -87,12 +79,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -109,12 +97,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -131,12 +115,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -153,12 +133,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -175,12 +151,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -197,12 +169,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -219,12 +187,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -241,12 +205,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -263,12 +223,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -285,12 +241,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -307,12 +259,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -329,12 +277,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -351,12 +295,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -373,12 +313,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -395,12 +331,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -417,12 +349,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -439,12 +367,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -461,12 +385,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -483,12 +403,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -505,12 +421,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -527,12 +439,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -549,12 +457,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -571,12 +475,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -593,12 +493,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -615,12 +511,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -637,12 +529,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -659,12 +547,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -681,12 +565,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -703,12 +583,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -725,12 +601,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -747,12 +619,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -769,12 +637,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -791,12 +655,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -813,12 +673,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -835,12 +691,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -857,12 +709,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -879,12 +727,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -901,12 +745,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -923,12 +763,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -945,12 +781,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -967,12 +799,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -989,12 +817,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1011,12 +835,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1033,12 +853,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1055,12 +871,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1077,12 +889,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1099,12 +907,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1121,12 +925,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1143,12 +943,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1165,12 +961,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1187,12 +979,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1209,12 +997,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1231,12 +1015,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1253,12 +1033,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1275,12 +1051,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1297,12 +1069,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1319,12 +1087,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1341,12 +1105,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1363,12 +1123,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1385,12 +1141,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1407,12 +1159,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1429,12 +1177,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1451,12 +1195,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
id: None,
name: "Chaosflo44",
),
],
album: None, album: None,
view_count: None, view_count: None,
is_video: true, is_video: true,
@ -1473,12 +1213,8 @@ MusicPlaylist(
height: 225, height: 225,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Chaosflo44"),
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: [
ArtistId( ChannelId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), id: "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: [
ArtistId( ChannelId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), id: "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: [
ArtistId( ChannelId(
id: Some("UCZK5n7V2-iPHfUXLV2tDvzw"), id: "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: [
ArtistId( ChannelId(
id: Some("UCudOYmRtW3uylYtqY1aAD0A"), id: "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: [
ArtistId( ChannelId(
id: Some("UC8whsREta_7Fu-EjRq2Ys-A"), id: "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: [
ArtistId( ChannelId(
id: Some("UCRy7ecValgvorRe_8dum9lA"), id: "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: [
ArtistId( ChannelId(
id: Some("UCdkNrc_l73BHYKRhDqxBo9w"), id: "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: [
ArtistId( ChannelId(
id: Some("UCn09cNujyKjEA1NxD5Aj_mQ"), id: "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: [
ArtistId( ChannelId(
id: Some("UCYAFIwL4uBWQHBrBiohx1vw"), id: "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: [
ArtistId( ChannelId(
id: Some("UCs04jfHH78YUziFA52P97LA"), id: "UCs04jfHH78YUziFA52P97LA",
name: "R. Black Mamba", name: "R. Black Mamba",
), ),
ArtistId( ChannelId(
id: Some("UCsOfYy8UlBPRYkC5lgRaatA"), id: "UCsOfYy8UlBPRYkC5lgRaatA",
name: "Lonzzo", name: "Lonzzo",
), ),
ArtistId( ChannelId(
id: Some("UCEwg585uC9nBoL8KA7ayjPA"), id: "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: [
ArtistId( ChannelId(
id: Some("UCZwE-b-kzA4pQaCQXwOQnlg"), id: "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: [
ArtistId( ChannelId(
id: Some("UC_SI7sOel-qMTvSe-lGHX8w"), id: "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: [
ArtistId( ChannelId(
id: Some("UCMZowOoC3u_ntr9o52ekeZw"), id: "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: [
ArtistId( ChannelId(
id: Some("UCX6v_euBwliDYV2NMTouuSA"), id: "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: [
ArtistId( ChannelId(
id: Some("UCAlOD5s3Ro27M61-2Z_UB7w"), id: "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: [
ArtistId( ChannelId(
id: Some("UC77rFNJxH8Y2VwSYp8ZTXHA"), id: "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: [
ArtistId( ChannelId(
id: Some("UCxX9tNcQgCBuU56ezupriqg"), id: "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: [
ArtistId( ChannelId(
id: Some("UC6Y8G45J9Uv2EsLLOatymOw"), id: "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: [
ArtistId( ChannelId(
id: Some("UCaDT20-B3U8h-tPg_VMvntw"), id: "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: [
ArtistId( ChannelId(
id: Some("UCJq1MEuNM0SidXn5pMqqHBA"), id: "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,11 +16,12 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), id: "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,
@ -43,11 +44,12 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), id: "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",
@ -73,15 +75,16 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCfCNL5oajlQBAlyjWv1ChVw"), id: "UCfCNL5oajlQBAlyjWv1ChVw",
name: "Hans Zimmer", name: "Hans Zimmer",
), ),
ArtistId( ChannelId(
id: Some("UCvTXGTZf9EvuCAwZOkoR2iQ"), id: "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)",
@ -107,11 +110,12 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCz6yr3CgFGrrrPDa2asbWMQ"), id: "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",
@ -132,11 +136,12 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCS_hnpJLQTvBkqALgapi_4g"), id: "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,
@ -154,11 +159,12 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), id: "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,
@ -176,11 +182,12 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC5BMQOsAB8hKUyHu9KI6yig"), id: "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,
@ -214,14 +221,14 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), id: "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",
@ -249,14 +256,14 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), id: "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",
@ -284,14 +291,14 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCZK5n7V2-iPHfUXLV2tDvzw"), id: "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,11 +23,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), id: "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",
@ -53,15 +54,16 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCfCNL5oajlQBAlyjWv1ChVw"), id: "UCfCNL5oajlQBAlyjWv1ChVw",
name: "Hans Zimmer", name: "Hans Zimmer",
), ),
ArtistId( ChannelId(
id: Some("UCvTXGTZf9EvuCAwZOkoR2iQ"), id: "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)",
@ -87,11 +89,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCZwE-b-kzA4pQaCQXwOQnlg"), id: "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)",
@ -117,11 +120,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC8whsREta_7Fu-EjRq2Ys-A"), id: "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",
@ -147,11 +151,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCz6yr3CgFGrrrPDa2asbWMQ"), id: "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",
@ -177,11 +182,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC7sFWdsZTzfR507dbonTlyQ"), id: "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",
@ -207,11 +213,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCzqRJ5qy_ekVd9jfaAlb7nA"), id: "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",
@ -237,11 +244,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCi8RICptUr15gPmPjEuIEDQ"), id: "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",
@ -267,11 +275,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCudOYmRtW3uylYtqY1aAD0A"), id: "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",
@ -297,11 +306,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCoNSQrGCiSZscyBwQTsMK2g"), id: "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",
@ -327,11 +337,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCkjmrFnxpkxI4cVVwhc_mMw"), id: "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",
@ -356,12 +367,8 @@ MusicSearchFiltered(
height: 120, height: 120,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("C.JERRY"),
id: None,
name: "C.JERRY",
),
],
album: Some(AlbumId( album: Some(AlbumId(
id: "MPREb_0lYy8bzdAWJ", id: "MPREb_0lYy8bzdAWJ",
name: "Bleem多维视角", name: "Bleem多维视角",
@ -387,15 +394,16 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_PI4ScqWXzHuYP2TNqw6vg"), id: "UC_PI4ScqWXzHuYP2TNqw6vg",
name: "Nerissima Serpe", name: "Nerissima Serpe",
), ),
ArtistId( ChannelId(
id: Some("UCugPYAOw4Ig_6043IZslywQ"), id: "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",
@ -421,11 +429,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCr8Gk2ECkAhRzNWCqKg62bA"), id: "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",
@ -451,11 +460,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC6LdZsjHDoy88JtQnEz4z4A"), id: "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",
@ -481,15 +491,16 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCX1lJbaUf3IEGhNi1_KCEZw"), id: "UCX1lJbaUf3IEGhNi1_KCEZw",
name: "Vagabond", name: "Vagabond",
), ),
ArtistId( ChannelId(
id: Some("UCt4qpUnoWz3aUM5DYDBod0A"), id: "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",
@ -515,11 +526,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCoJXsT1SzLsZZgg5P0yaVQw"), id: "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",
@ -545,11 +557,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCxoJ3pl32f39kmTvIR_NWOg"), id: "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",
@ -575,11 +588,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC7RJTtpE3qwbw6-Idq9PTIg"), id: "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",
@ -605,11 +619,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCfGf1P_mK274Rp3OKFTgbBQ"), id: "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,11 +23,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"), id: "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",
@ -53,11 +54,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCCpID8TTjkkjLCwBybAfHSg"), id: "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,11 +85,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCMLbHQGqUHeNAqjOL1qXZXg"), id: "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",
@ -113,11 +116,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCCpID8TTjkkjLCwBybAfHSg"), id: "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)",
@ -143,11 +147,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCTJBrv8T8AxavAynvB3_DSw"), id: "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",
@ -173,11 +178,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCtoec88rzlhABHeo_4d-H8g"), id: "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",
@ -203,11 +209,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UClOpZVfE5v-fFtM8vqFud-g"), id: "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",
@ -233,11 +240,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"), id: "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",
@ -263,11 +271,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCvfUKCnUBfsZAVHgF-pYmJg"), id: "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",
@ -293,11 +302,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCosvbvqFxbUniyDCUNXN5wA"), id: "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",
@ -323,11 +333,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"), id: "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",
@ -353,11 +364,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCk-g5nfpm8Q9gfy7DuU8PZA"), id: "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",
@ -383,11 +395,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"), id: "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",
@ -413,11 +426,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCDBvf2dl0XZQvIKPsrsDprg"), id: "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",
@ -443,11 +457,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC2_O7ywkwEh-crQedvyNOYg"), id: "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",
@ -472,12 +487,8 @@ MusicSearchFiltered(
height: 120, height: 120,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Jasmin Bick"),
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",
@ -503,11 +514,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCtsMcVBiK9QvtS2LH8Z6M5g"), id: "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)",
@ -533,11 +545,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC16V9XG1PfOD1E0m6G-s22A"), id: "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",
@ -562,12 +575,8 @@ MusicSearchFiltered(
height: 120, height: 120,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Eva Florist"),
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",
@ -593,11 +602,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"), id: "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,11 +18,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), id: "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,
@ -40,11 +41,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCyEMqKQPGdj8wKVKt2-agbQ"), id: "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,
@ -62,11 +64,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC0PlwwXUJihXdol4I9vuE0g"), id: "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,
@ -84,11 +87,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCzP_LIeF9W26F7o03k-Y9CQ"), id: "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,
@ -106,11 +110,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCRpjHHu8ivVWs73uxHlWwFA"), id: "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,
@ -128,11 +133,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCoRXPcv8XK5fAplLbk9PTww"), id: "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,
@ -150,11 +156,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCsw9NVMkJfbxHTuMUMlk3mw"), id: "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,
@ -172,11 +179,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCBju0pyQY7EWRvLqMkXcxBw"), id: "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,
@ -194,11 +202,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCawCt_6XWaFxZSW5ZKcIMew"), id: "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,
@ -216,11 +225,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vrqgb3YLoe2MYSJm2aO-A"), id: "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,
@ -238,11 +248,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC5BMQOsAB8hKUyHu9KI6yig"), id: "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,
@ -260,11 +271,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCoRXPcv8XK5fAplLbk9PTww"), id: "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,
@ -282,11 +294,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCaDT20-B3U8h-tPg_VMvntw"), id: "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,
@ -304,11 +317,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCEAgugIw6pHGg7MRlkOU1Dw"), id: "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,
@ -326,11 +340,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCAj9gLNfM0q3MFhovVmAtBw"), id: "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,
@ -348,11 +363,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCRpjHHu8ivVWs73uxHlWwFA"), id: "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,
@ -370,11 +386,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCeLPm9yH_a_QH8n6445G-Ow"), id: "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,
@ -392,11 +409,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCaDT20-B3U8h-tPg_VMvntw"), id: "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,
@ -414,11 +432,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), id: "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,
@ -436,11 +455,12 @@ MusicSearchFiltered(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCB-TbzcDawIZVkG229eqnKg"), id: "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,11 +21,12 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"), id: "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",
@ -51,11 +52,12 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCCpID8TTjkkjLCwBybAfHSg"), id: "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",
@ -81,11 +83,12 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCvfUKCnUBfsZAVHgF-pYmJg"), id: "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",
@ -106,11 +109,12 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"), id: "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,
@ -128,11 +132,12 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCgoJMRKimbxB374QjHgE6kA"), id: "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,
@ -150,11 +155,12 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCiQjRO2m3dBBlg7sqTaFA_A"), id: "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,
@ -188,14 +194,14 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"), id: "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",
@ -223,14 +229,14 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCIh4j8fXWf2U0ro0qnGU8Mg"), id: "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",
@ -258,14 +264,14 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCCpID8TTjkkjLCwBybAfHSg"), id: "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",
@ -293,14 +299,14 @@ MusicSearchResult(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCCpID8TTjkkjLCwBybAfHSg"), id: "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,11 +22,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCxoJ3pl32f39kmTvIR_NWOg"), id: "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",
@ -52,11 +53,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCz7CQ4Mn9VChcO5-8j0SZpQ"), id: "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!",
@ -82,11 +84,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCAlOD5s3Ro27M61-2Z_UB7w"), id: "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",
@ -112,11 +115,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCJv4icVpfpTaKZcB_Bytxyw"), id: "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",
@ -142,11 +146,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC7RJTtpE3qwbw6-Idq9PTIg"), id: "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",
@ -172,11 +177,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCh4Y9bvt_6vDq1gQhhT8AdA"), id: "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",
@ -202,11 +208,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCRpi1gBlax4sK3dNNxIxxFg"), id: "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",
@ -231,12 +238,8 @@ Paginator(
height: 120, height: 120,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Dollah"),
id: None,
name: "Dollah",
),
],
album: Some(AlbumId( album: Some(AlbumId(
id: "MPREb_5mxIz2hChjd", id: "MPREb_5mxIz2hChjd",
name: "Black Mamba", name: "Black Mamba",
@ -262,11 +265,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"), id: "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",
@ -292,11 +296,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCQSz-Rhz_ew4hUprXww4PAA"), id: "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",
@ -321,12 +326,8 @@ Paginator(
height: 120, height: 120,
), ),
], ],
artists: [ artists: [],
ArtistId( artists_txt: Some("Izhha, yasom, Samu, Ritmo, and Dcibel"),
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",
@ -352,11 +353,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCuDH6EntL5Qx9YrQCZSFiPg"), id: "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)",
@ -382,11 +384,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCRpi1gBlax4sK3dNNxIxxFg"), id: "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",
@ -412,11 +415,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCdkNrc_l73BHYKRhDqxBo9w"), id: "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",
@ -442,11 +446,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCiS97__D2VSNbDMfajnkTkw"), id: "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",
@ -472,19 +477,20 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC3z_UqNGLnKLHfBDONx82zQ"), id: "UC3z_UqNGLnKLHfBDONx82zQ",
name: "Romane, Stochelo Rosenberg", name: "Romane, Stochelo Rosenberg",
), ),
ArtistId( ChannelId(
id: Some("UCPrlkPZfsIoN6QG-jDRYQkQ"), id: "UCPrlkPZfsIoN6QG-jDRYQkQ",
name: "Romane", name: "Romane",
), ),
ArtistId( ChannelId(
id: Some("UCmsTxLepDwdzr07-ALKUEHw"), id: "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)",
@ -510,11 +516,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC2wd_7GTMGiQjIb6wCwnLhQ"), id: "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",
@ -540,11 +547,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCXQvoNpH-EDGUnCe2ABldDg"), id: "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",
@ -570,11 +578,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCPjjr_AvPvEhZ5nnzEACI4w"), id: "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",
@ -600,11 +609,12 @@ Paginator(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_GZYnrfgYfORwOb2MsuyIg"), id: "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,7 +875,15 @@ 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
@ -906,14 +914,6 @@ 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,13 +925,16 @@ 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<ArtistId>, pub artists: Vec<ChannelId>,
/// Full content of the artists field
///
/// Conjunction words/characters depend on language and fetched page.
/// Includes unlinked artists.
pub artists_txt: String,
/// 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
@ -1016,7 +1019,12 @@ 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<ArtistId>, pub artists: Vec<ChannelId>,
/// Full content of the artists field
///
/// Conjunction words/characters depend on language and fetched page.
/// Includes unlinked artists.
pub artists_txt: String,
/// 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,39 +325,6 @@ 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 {
@ -407,6 +374,16 @@ 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,11 +8,12 @@ MusicAlbum(
name: "Waldbrand", name: "Waldbrand",
cover: "[cover]", cover: "[cover]",
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"), id: "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,
@ -23,17 +24,15 @@ MusicAlbum(
duration: 221, duration: 221,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"), id: "UCpJyCbFbdTrx0M90HCNBHFQ",
name: "Madeline Juno", name: "Madeline Juno",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Madeline Juno"),
id: "MPREb_u1I69lSAe5v", album: None,
name: "Waldbrand",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(1), track_nr: Some(1),
), ),
TrackItem( TrackItem(
@ -42,17 +41,15 @@ MusicAlbum(
duration: 208, duration: 208,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"), id: "UCpJyCbFbdTrx0M90HCNBHFQ",
name: "Madeline Juno", name: "Madeline Juno",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Madeline Juno"),
id: "MPREb_u1I69lSAe5v", album: None,
name: "Waldbrand",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(2), track_nr: Some(2),
), ),
TrackItem( TrackItem(
@ -61,17 +58,15 @@ MusicAlbum(
duration: 223, duration: 223,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"), id: "UCpJyCbFbdTrx0M90HCNBHFQ",
name: "Madeline Juno", name: "Madeline Juno",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Madeline Juno"),
id: "MPREb_u1I69lSAe5v", album: None,
name: "Waldbrand",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(3), track_nr: Some(3),
), ),
TrackItem( TrackItem(
@ -80,17 +75,15 @@ MusicAlbum(
duration: 221, duration: 221,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"), id: "UCpJyCbFbdTrx0M90HCNBHFQ",
name: "Madeline Juno", name: "Madeline Juno",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Madeline Juno"),
id: "MPREb_u1I69lSAe5v", album: None,
name: "Waldbrand",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(4), track_nr: Some(4),
), ),
TrackItem( TrackItem(
@ -99,17 +92,15 @@ MusicAlbum(
duration: 197, duration: 197,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCpJyCbFbdTrx0M90HCNBHFQ"), id: "UCpJyCbFbdTrx0M90HCNBHFQ",
name: "Madeline Juno", name: "Madeline Juno",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Madeline Juno"),
id: "MPREb_u1I69lSAe5v", album: None,
name: "Waldbrand",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(5), track_nr: Some(5),
), ),
], ],

View file

@ -8,11 +8,12 @@ MusicAlbum(
name: "Märchen enden gut", name: "Märchen enden gut",
cover: "[cover]", cover: "[cover]",
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "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,
@ -23,17 +24,15 @@ MusicAlbum(
duration: 216, duration: 216,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(1), track_nr: Some(1),
), ),
TrackItem( TrackItem(
@ -42,17 +41,15 @@ MusicAlbum(
duration: 224, duration: 224,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(2), track_nr: Some(2),
), ),
TrackItem( TrackItem(
@ -61,17 +58,15 @@ MusicAlbum(
duration: 176, duration: 176,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(3), track_nr: Some(3),
), ),
TrackItem( TrackItem(
@ -80,17 +75,15 @@ MusicAlbum(
duration: 215, duration: 215,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(4), track_nr: Some(4),
), ),
TrackItem( TrackItem(
@ -99,17 +92,15 @@ MusicAlbum(
duration: 268, duration: 268,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(5), track_nr: Some(5),
), ),
TrackItem( TrackItem(
@ -118,17 +109,15 @@ MusicAlbum(
duration: 202, duration: 202,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(6), track_nr: Some(6),
), ),
TrackItem( TrackItem(
@ -137,17 +126,15 @@ MusicAlbum(
duration: 185, duration: 185,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(7), track_nr: Some(7),
), ),
TrackItem( TrackItem(
@ -156,17 +143,15 @@ MusicAlbum(
duration: 226, duration: 226,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(8), track_nr: Some(8),
), ),
TrackItem( TrackItem(
@ -175,17 +160,15 @@ MusicAlbum(
duration: 207, duration: 207,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(9), track_nr: Some(9),
), ),
TrackItem( TrackItem(
@ -194,17 +177,15 @@ MusicAlbum(
duration: 211, duration: 211,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(10), track_nr: Some(10),
), ),
TrackItem( TrackItem(
@ -213,17 +194,15 @@ MusicAlbum(
duration: 179, duration: 179,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(11), track_nr: Some(11),
), ),
TrackItem( TrackItem(
@ -232,17 +211,15 @@ MusicAlbum(
duration: 218, duration: 218,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(12), track_nr: Some(12),
), ),
TrackItem( TrackItem(
@ -251,17 +228,15 @@ MusicAlbum(
duration: 277, duration: 277,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(13), track_nr: Some(13),
), ),
TrackItem( TrackItem(
@ -270,17 +245,15 @@ MusicAlbum(
duration: 204, duration: 204,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(14), track_nr: Some(14),
), ),
TrackItem( TrackItem(
@ -289,17 +262,15 @@ MusicAlbum(
duration: 202, duration: 202,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(15), track_nr: Some(15),
), ),
TrackItem( TrackItem(
@ -308,17 +279,15 @@ MusicAlbum(
duration: 222, duration: 222,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(16), track_nr: Some(16),
), ),
TrackItem( TrackItem(
@ -327,17 +296,15 @@ MusicAlbum(
duration: 177, duration: 177,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(17), track_nr: Some(17),
), ),
TrackItem( TrackItem(
@ -346,17 +313,15 @@ MusicAlbum(
duration: 220, duration: 220,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh", name: "Oonagh",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Oonagh"),
id: "MPREb_nlBWQROfvjo", album: None,
name: "Märchen enden gut",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(18), track_nr: Some(18),
), ),
], ],
@ -377,14 +342,14 @@ MusicAlbum(
), ),
], ],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"), id: "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,11 +8,12 @@ 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: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "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,
@ -23,17 +24,15 @@ MusicAlbum(
duration: 229, duration: 229,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "UCNoyEM0e2A7WlsBmP2w3avg",
name: "Kingdom Force", name: "Kingdom Force",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kingdom Force"),
id: "MPREb_cwzk8EUwypZ", album: None,
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(1), track_nr: Some(1),
), ),
TrackItem( TrackItem(
@ -42,17 +41,15 @@ MusicAlbum(
duration: 235, duration: 235,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "UCNoyEM0e2A7WlsBmP2w3avg",
name: "Kingdom Force", name: "Kingdom Force",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kingdom Force"),
id: "MPREb_cwzk8EUwypZ", album: None,
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(2), track_nr: Some(2),
), ),
TrackItem( TrackItem(
@ -61,17 +58,15 @@ MusicAlbum(
duration: 197, duration: 197,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "UCNoyEM0e2A7WlsBmP2w3avg",
name: "Kingdom Force", name: "Kingdom Force",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kingdom Force"),
id: "MPREb_cwzk8EUwypZ", album: None,
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(3), track_nr: Some(3),
), ),
TrackItem( TrackItem(
@ -80,17 +75,15 @@ MusicAlbum(
duration: 186, duration: 186,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "UCNoyEM0e2A7WlsBmP2w3avg",
name: "Kingdom Force", name: "Kingdom Force",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kingdom Force"),
id: "MPREb_cwzk8EUwypZ", album: None,
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(4), track_nr: Some(4),
), ),
TrackItem( TrackItem(
@ -99,17 +92,15 @@ MusicAlbum(
duration: 188, duration: 188,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "UCNoyEM0e2A7WlsBmP2w3avg",
name: "Kingdom Force", name: "Kingdom Force",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kingdom Force"),
id: "MPREb_cwzk8EUwypZ", album: None,
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(5), track_nr: Some(5),
), ),
TrackItem( TrackItem(
@ -118,17 +109,15 @@ MusicAlbum(
duration: 205, duration: 205,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "UCNoyEM0e2A7WlsBmP2w3avg",
name: "Kingdom Force", name: "Kingdom Force",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kingdom Force"),
id: "MPREb_cwzk8EUwypZ", album: None,
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(6), track_nr: Some(6),
), ),
TrackItem( TrackItem(
@ -137,17 +126,15 @@ MusicAlbum(
duration: 219, duration: 219,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "UCNoyEM0e2A7WlsBmP2w3avg",
name: "Kingdom Force", name: "Kingdom Force",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kingdom Force"),
id: "MPREb_cwzk8EUwypZ", album: None,
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(7), track_nr: Some(7),
), ),
TrackItem( TrackItem(
@ -156,17 +143,15 @@ MusicAlbum(
duration: 240, duration: 240,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "UCNoyEM0e2A7WlsBmP2w3avg",
name: "Kingdom Force", name: "Kingdom Force",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kingdom Force"),
id: "MPREb_cwzk8EUwypZ", album: None,
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(8), track_nr: Some(8),
), ),
TrackItem( TrackItem(
@ -175,17 +160,15 @@ MusicAlbum(
duration: 239, duration: 239,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "UCNoyEM0e2A7WlsBmP2w3avg",
name: "Kingdom Force", name: "Kingdom Force",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kingdom Force"),
id: "MPREb_cwzk8EUwypZ", album: None,
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(9), track_nr: Some(9),
), ),
TrackItem( TrackItem(
@ -194,17 +177,15 @@ MusicAlbum(
duration: 197, duration: 197,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "UCNoyEM0e2A7WlsBmP2w3avg",
name: "Kingdom Force", name: "Kingdom Force",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kingdom Force"),
id: "MPREb_cwzk8EUwypZ", album: None,
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(10), track_nr: Some(10),
), ),
TrackItem( TrackItem(
@ -213,17 +194,15 @@ MusicAlbum(
duration: 201, duration: 201,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "UCNoyEM0e2A7WlsBmP2w3avg",
name: "Kingdom Force", name: "Kingdom Force",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kingdom Force"),
id: "MPREb_cwzk8EUwypZ", album: None,
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(11), track_nr: Some(11),
), ),
TrackItem( TrackItem(
@ -232,17 +211,15 @@ MusicAlbum(
duration: 187, duration: 187,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "UCNoyEM0e2A7WlsBmP2w3avg",
name: "Kingdom Force", name: "Kingdom Force",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kingdom Force"),
id: "MPREb_cwzk8EUwypZ", album: None,
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(12), track_nr: Some(12),
), ),
TrackItem( TrackItem(
@ -251,17 +228,15 @@ MusicAlbum(
duration: 183, duration: 183,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "UCNoyEM0e2A7WlsBmP2w3avg",
name: "Kingdom Force", name: "Kingdom Force",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kingdom Force"),
id: "MPREb_cwzk8EUwypZ", album: None,
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(13), track_nr: Some(13),
), ),
TrackItem( TrackItem(
@ -270,17 +245,15 @@ MusicAlbum(
duration: 193, duration: 193,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCNoyEM0e2A7WlsBmP2w3avg"), id: "UCNoyEM0e2A7WlsBmP2w3avg",
name: "Kingdom Force", name: "Kingdom Force",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kingdom Force"),
id: "MPREb_cwzk8EUwypZ", album: None,
name: "Folge 2: Eiszeit (Das Original-Hörspiel zur TV-Serie)",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(14), track_nr: Some(14),
), ),
], ],

View file

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

View file

@ -8,6 +8,7 @@ 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,
@ -17,18 +18,11 @@ 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: [],
ArtistId( artists_txt: Some("HYOLYN"),
id: None, album: None,
name: "HYOLYN",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(1), track_nr: Some(1),
), ),
TrackItem( TrackItem(
@ -36,18 +30,11 @@ MusicAlbum(
title: "AURA", title: "AURA",
duration: 216, duration: 216,
cover: [], cover: [],
artists: [ artists: [],
ArtistId( artists_txt: Some("WJSN"),
id: None, album: None,
name: "WJSN",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(2), track_nr: Some(2),
), ),
TrackItem( TrackItem(
@ -56,17 +43,15 @@ MusicAlbum(
duration: 239, duration: 239,
cover: [], cover: [],
artists: [ artists: [
ArtistId( ChannelId(
id: Some("UCAKvDuIX3m1AUdPpDSqV_3w"), id: "UCAKvDuIX3m1AUdPpDSqV_3w",
name: "Kep1er", name: "Kep1er",
), ),
], ],
album: Some(AlbumId( artists_txt: Some("Kep1er"),
id: "MPREb_8QkDeEIawvX", album: None,
name: "Queendom2 FINAL",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(3), track_nr: Some(3),
), ),
TrackItem( TrackItem(
@ -74,18 +59,11 @@ MusicAlbum(
title: "Red Sun!", title: "Red Sun!",
duration: 254, duration: 254,
cover: [], cover: [],
artists: [ artists: [],
ArtistId( artists_txt: Some("VIVIZ"),
id: None, album: None,
name: "VIVIZ",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(4), track_nr: Some(4),
), ),
TrackItem( TrackItem(
@ -93,18 +71,11 @@ MusicAlbum(
title: "POSE", title: "POSE",
duration: 187, duration: 187,
cover: [], cover: [],
artists: [ artists: [],
ArtistId( artists_txt: Some("LOONA"),
id: None, album: None,
name: "LOONA",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(5), track_nr: Some(5),
), ),
TrackItem( TrackItem(
@ -112,18 +83,11 @@ MusicAlbum(
title: "Whistle", title: "Whistle",
duration: 224, duration: 224,
cover: [], cover: [],
artists: [ artists: [],
ArtistId( artists_txt: Some("Brave Girls"),
id: None, album: None,
name: "Brave Girls",
),
],
album: Some(AlbumId(
id: "MPREb_8QkDeEIawvX",
name: "Queendom2 FINAL",
)),
view_count: None, view_count: None,
is_video: false, is_video: true,
track_nr: Some(6), track_nr: Some(6),
), ),
], ],

View file

@ -1386,13 +1386,10 @@ 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!( assert_eq!(track_artist.id, "UCEdZAdnnKqbaHOlv8nM6OtA");
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");
@ -1417,13 +1414,10 @@ 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!( assert_eq!(track_artist.id, "UCEdZAdnnKqbaHOlv8nM6OtA");
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");
@ -1490,10 +1484,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.as_ref().unwrap(), artist_id); assert_eq!(album_artist.id, 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");