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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -875,7 +875,15 @@ pub struct TrackItem {
/// Album cover
pub cover: Vec<Thumbnail>,
/// 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
pub album: Option<AlbumId>,
/// View count
@ -906,14 +914,6 @@ pub struct ArtistItem {
pub subscriber_count: Option<u64>,
}
/// YouTube Music artist identifier
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[non_exhaustive]
pub struct ArtistId {
pub id: Option<String>,
pub name: String,
}
/// YouTube Music album list item
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[non_exhaustive]
@ -925,13 +925,16 @@ pub struct AlbumItem {
/// Album cover
pub cover: Vec<Thumbnail>,
/// 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)
pub album_type: AlbumType,
/// Release year of the album
pub year: Option<u16>,
/// Is the album by 'Various artists'?
pub by_va: bool,
}
/// YouTube Music playlist list item
@ -1016,7 +1019,12 @@ pub struct MusicAlbum {
/// Album cover
pub cover: Vec<Thumbnail>,
/// 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)
pub album_type: AlbumType,
/// 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 {
fn from(component: TextComponent) -> Self {
match component {
@ -407,6 +374,16 @@ impl TextComponent {
}
impl TextComponents {
/// Return the string representation of all text components
/// or [`None`] if there aren't any.
pub fn to_opt_string(&self) -> Option<String> {
if self.0.is_empty() {
None
} else {
Some(self.to_string())
}
}
/// Return the string representation of the first text component
pub fn first_str(&self) -> &str {
self.0.first().map(|t| t.as_str()).unwrap_or_default()

File diff suppressed because it is too large Load diff

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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