feat: add music artists

This commit is contained in:
ThetaDev 2022-11-06 18:30:06 +01:00
parent d3aacc77aa
commit 6f07095757
49 changed files with 139065 additions and 821 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,299 @@
---
source: tests/youtube.rs
expression: artist
---
MusicArtist(
id: "UC7cl4MmM6ZZ2TcFyMk_b4pg",
name: "Unheilig",
header_image: "[header_image]",
description: "Unheilig was a German band that featured a variety of influences, including various pop and electronic styles as well as harder, nihilistic hard rock. The band was founded in 1999 and principally consisted of singer Bernd Heinrich \"Der Graf\" along with various musical partners. He was accompanied for live shows with musicians Christoph \"Licky\" Termühlen, Henning Verlage, and Martin \"Potti\" Potthoff. The group\'s debut, Phosphor, came out in 2000.\n\nFrom Wikipedia (https://en.wikipedia.org/wiki/Unheilig) under Creative Commons Attribution CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode)",
wikipedia_url: Some("https://en.wikipedia.org/wiki/Unheilig"),
subscriber_count: "[subscriber_count]",
tracks: "[tracks]",
albums: [
AlbumItem(
id: "MPREb_43NWLzXChnh",
name: "Grosse Freiheit (Digital Version)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2010),
by_va: false,
),
AlbumItem(
id: "MPREb_585fV7eqUP8",
name: "Gipfelstürmer",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2014),
by_va: false,
),
AlbumItem(
id: "MPREb_6PEkIQE7sWY",
name: "An deiner Seite (Online Version)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Ep,
year: Some(2008),
by_va: false,
),
AlbumItem(
id: "MPREb_88p7e6nBtgz",
name: "Lichter der Stadt",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2012),
by_va: false,
),
AlbumItem(
id: "MPREb_Md2aZrjaqHX",
name: "Stille Winternacht",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2021),
by_va: false,
),
AlbumItem(
id: "MPREb_OW1GOBZ64ap",
name: "Hallo Leben",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2018),
by_va: false,
),
AlbumItem(
id: "MPREb_QyGCcLWExXj",
name: "Als wär\'s das erste Mal (Exklusive Piano Version)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2014),
by_va: false,
),
AlbumItem(
id: "MPREb_R3p5kDRIGKL",
name: "Astronaut",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2006),
by_va: false,
),
AlbumItem(
id: "MPREb_TiIBQqCFttT",
name: "Von Mensch zu Mensch",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2016),
by_va: false,
),
AlbumItem(
id: "MPREb_U9HLD8nF7H5",
name: "Der Himmel über mir",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2017),
by_va: false,
),
AlbumItem(
id: "MPREb_V0FEmw2pj2u",
name: "Sonnentag",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2017),
by_va: false,
),
AlbumItem(
id: "MPREb_WYx2c0e95TA",
name: "Spiegelbild",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2008),
by_va: false,
),
AlbumItem(
id: "MPREb_Yj49s4xy7fM",
name: "Lichtermeer",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2021),
by_va: false,
),
AlbumItem(
id: "MPREb_f4MhYbccbPi",
name: "Moderne Zeiten",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2006),
by_va: false,
),
AlbumItem(
id: "MPREb_kW2NAMSZElX",
name: "Glück auf das Leben",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2015),
by_va: false,
),
AlbumItem(
id: "MPREb_n1H3JiFyGkv",
name: "Mein Berg (EP)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Ep,
year: Some(2015),
by_va: false,
),
AlbumItem(
id: "MPREb_pWpeXxATZYb",
name: "Wir sind alle wie eins",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2014),
by_va: false,
),
AlbumItem(
id: "MPREb_rHhaDLqalbT",
name: "Winter (EP)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Ep,
year: Some(2010),
by_va: false,
),
AlbumItem(
id: "MPREb_saXgTKNPaSu",
name: "Zeit zu gehen",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2014),
by_va: false,
),
AlbumItem(
id: "MPREb_wmSecJVDwPB",
name: "Puppenspiel",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2008),
by_va: false,
),
],
playlists: "[playlists]",
similar_artists: "[artists]",
tracks_playlist_id: Some("OLAK5uy_n6aX-F_lCQxgyTIv4FJhp78bXV93b9NUM"),
videos_playlist_id: Some("OLAK5uy_nrePwvOEzmO7SydszEFfCDu8gAJxKfFtw"),
)

View file

@ -0,0 +1,621 @@
---
source: tests/youtube.rs
expression: artist
---
MusicArtist(
id: "UC7cl4MmM6ZZ2TcFyMk_b4pg",
name: "Unheilig",
header_image: "[header_image]",
description: "Unheilig was a German band that featured a variety of influences, including various pop and electronic styles as well as harder, nihilistic hard rock. The band was founded in 1999 and principally consisted of singer Bernd Heinrich \"Der Graf\" along with various musical partners. He was accompanied for live shows with musicians Christoph \"Licky\" Termühlen, Henning Verlage, and Martin \"Potti\" Potthoff. The group\'s debut, Phosphor, came out in 2000.\n\nFrom Wikipedia (https://en.wikipedia.org/wiki/Unheilig) under Creative Commons Attribution CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode)",
wikipedia_url: Some("https://en.wikipedia.org/wiki/Unheilig"),
subscriber_count: "[subscriber_count]",
tracks: "[tracks]",
albums: [
AlbumItem(
id: "MPREb_43NWLzXChnh",
name: "Grosse Freiheit (Digital Version)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2010),
by_va: false,
),
AlbumItem(
id: "MPREb_585fV7eqUP8",
name: "Gipfelstürmer",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2014),
by_va: false,
),
AlbumItem(
id: "MPREb_6PEkIQE7sWY",
name: "An deiner Seite (Online Version)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Ep,
year: Some(2008),
by_va: false,
),
AlbumItem(
id: "MPREb_7nIPO6oeETY",
name: "Lichter der Stadt - Live",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2012),
by_va: false,
),
AlbumItem(
id: "MPREb_88p7e6nBtgz",
name: "Lichter der Stadt",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2012),
by_va: false,
),
AlbumItem(
id: "MPREb_8rukEzdytkN",
name: "Gipfelstürmer (Live in Österreich)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2015),
by_va: false,
),
AlbumItem(
id: "MPREb_BJKvCuKo7nJ",
name: "MTV Unplugged \"Unter Dampf Ohne Strom\" (Deluxe Version)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2015),
by_va: false,
),
AlbumItem(
id: "MPREb_EAiIEvINDHB",
name: "Stark",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2012),
by_va: false,
),
AlbumItem(
id: "MPREb_HrCgErOdgCv",
name: "Freiheit",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2004),
by_va: false,
),
AlbumItem(
id: "MPREb_Md2aZrjaqHX",
name: "Stille Winternacht",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2021),
by_va: false,
),
AlbumItem(
id: "MPREb_OW1GOBZ64ap",
name: "Hallo Leben",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2018),
by_va: false,
),
AlbumItem(
id: "MPREb_Oq0WKqNwSVY",
name: "Das 2. Gebot",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2003),
by_va: false,
),
AlbumItem(
id: "MPREb_QEClJsuO9xM",
name: "So wie Du warst",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2012),
by_va: false,
),
AlbumItem(
id: "MPREb_QyGCcLWExXj",
name: "Als wär\'s das erste Mal (Exklusive Piano Version)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2014),
by_va: false,
),
AlbumItem(
id: "MPREb_R3p5kDRIGKL",
name: "Astronaut",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2006),
by_va: false,
),
AlbumItem(
id: "MPREb_T4fJMmrfxXk",
name: "Phosphor",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2000),
by_va: false,
),
AlbumItem(
id: "MPREb_TiIBQqCFttT",
name: "Von Mensch zu Mensch",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2016),
by_va: false,
),
AlbumItem(
id: "MPREb_U9HLD8nF7H5",
name: "Der Himmel über mir",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2017),
by_va: false,
),
AlbumItem(
id: "MPREb_U9dMPQUeR9q",
name: "Wie wir waren (feat. Andreas Bourani)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2012),
by_va: false,
),
AlbumItem(
id: "MPREb_V0FEmw2pj2u",
name: "Sonnentag",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2017),
by_va: false,
),
AlbumItem(
id: "MPREb_WYx2c0e95TA",
name: "Spiegelbild",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2008),
by_va: false,
),
AlbumItem(
id: "MPREb_Wc8Ehka0R0T",
name: "Lichterland - Best Of (Deluxe)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2021),
by_va: false,
),
AlbumItem(
id: "MPREb_Yj49s4xy7fM",
name: "Lichtermeer",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2021),
by_va: false,
),
AlbumItem(
id: "MPREb_baIxpKBcYbF",
name: "Schutzengel",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Ep,
year: Some(2003),
by_va: false,
),
AlbumItem(
id: "MPREb_eiYjUXT1Mn3",
name: "Geboren um zu leben",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2010),
by_va: false,
),
AlbumItem(
id: "MPREb_f4MhYbccbPi",
name: "Moderne Zeiten",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2006),
by_va: false,
),
AlbumItem(
id: "MPREb_gHlGAdNjEZI",
name: "Für immer",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2010),
by_va: false,
),
AlbumItem(
id: "MPREb_kW2NAMSZElX",
name: "Glück auf das Leben",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2015),
by_va: false,
),
AlbumItem(
id: "MPREb_m5U1xZasDSy",
name: "Frohes Fest",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2002),
by_va: false,
),
AlbumItem(
id: "MPREb_n1H3JiFyGkv",
name: "Mein Berg (EP)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Ep,
year: Some(2015),
by_va: false,
),
AlbumItem(
id: "MPREb_ohcGTZrqKPZ",
name: "Zelluloid",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2004),
by_va: false,
),
AlbumItem(
id: "MPREb_pWpeXxATZYb",
name: "Wir sind alle wie eins",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2014),
by_va: false,
),
AlbumItem(
id: "MPREb_ptO8gh250LP",
name: "Maschine",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Ep,
year: Some(2003),
by_va: false,
),
AlbumItem(
id: "MPREb_qbJv3f0ijrk",
name: "Alles hat seine Zeit (Best Of Unheilig 1999 - 2014)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2007),
by_va: false,
),
AlbumItem(
id: "MPREb_rHhaDLqalbT",
name: "Winter (EP)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Ep,
year: Some(2010),
by_va: false,
),
AlbumItem(
id: "MPREb_rdrfznTDhSX",
name: "Lichter der Stadt",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2012),
by_va: false,
),
AlbumItem(
id: "MPREb_saXgTKNPaSu",
name: "Zeit zu gehen",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2014),
by_va: false,
),
AlbumItem(
id: "MPREb_t6zStv8YrVG",
name: "Unter deiner Flagge",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2010),
by_va: false,
),
AlbumItem(
id: "MPREb_vM0cMpn8pHh",
name: "Puppenspiel Live - Vorhang auf!",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2008),
by_va: false,
),
AlbumItem(
id: "MPREb_wgm3k1qxpbF",
name: "Grosse Freiheit Live",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2010),
by_va: false,
),
AlbumItem(
id: "MPREb_wmSecJVDwPB",
name: "Puppenspiel",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2008),
by_va: false,
),
AlbumItem(
id: "MPREb_xCehp2mGhCk",
name: "Winter",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Single,
year: Some(2010),
by_va: false,
),
AlbumItem(
id: "MPREb_y5fUQ2toJwT",
name: "Best Of Vol. 2 - Rares Gold (Deluxe Version)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"),
name: "Unheilig",
),
],
album_type: Album,
year: Some(2017),
by_va: false,
),
],
playlists: "[playlists]",
similar_artists: "[artists]",
tracks_playlist_id: Some("OLAK5uy_n6aX-F_lCQxgyTIv4FJhp78bXV93b9NUM"),
videos_playlist_id: Some("OLAK5uy_nrePwvOEzmO7SydszEFfCDu8gAJxKfFtw"),
)

View file

@ -20,7 +20,7 @@ MusicAlbum(
TrackItem(
id: "aGd3VKSOTxY",
title: "Ich wache auf",
duration: 221,
duration: Some(221),
cover: [],
artists: [
ArtistId(
@ -39,7 +39,7 @@ MusicAlbum(
TrackItem(
id: "lhPOMUjV4rE",
title: "Waldbrand",
duration: 208,
duration: Some(208),
cover: [],
artists: [
ArtistId(
@ -58,7 +58,7 @@ MusicAlbum(
TrackItem(
id: "Bu26uFtpt58",
title: "Verlernt",
duration: 223,
duration: Some(223),
cover: [],
artists: [
ArtistId(
@ -77,7 +77,7 @@ MusicAlbum(
TrackItem(
id: "RgwNqqiVqdY",
title: "In Farbe",
duration: 221,
duration: Some(221),
cover: [],
artists: [
ArtistId(
@ -96,7 +96,7 @@ MusicAlbum(
TrackItem(
id: "2TuOh30XbCI",
title: "Stadt im Hinterland",
duration: 197,
duration: Some(197),
cover: [],
artists: [
ArtistId(

View file

@ -0,0 +1,18 @@
---
source: tests/youtube.rs
expression: artist
---
MusicArtist(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
header_image: "[header_image]",
description: "",
wikipedia_url: None,
subscriber_count: "[subscriber_count]",
tracks: "[tracks]",
albums: [],
playlists: "[playlists]",
similar_artists: "[artists]",
tracks_playlist_id: None,
videos_playlist_id: None,
)

View file

@ -0,0 +1,229 @@
---
source: tests/youtube.rs
expression: artist
---
MusicArtist(
id: "UC_vmjW5e1xEHhYjY2a0kK1A",
name: "Oonagh",
header_image: "[header_image]",
description: "Senta-Sofia Delliponti is a German singer, songwriter and actress. Since January 2014, she used the stage name Oonagh, until she changed it to Senta in 2022. Her signature musical style is inspired by the mystical lore of J. R. R. Tolkien\'s universe and by ethnic sounds throughout the world.\n\nFrom Wikipedia (https://en.wikipedia.org/wiki/Oonagh_(singer)) under Creative Commons Attribution CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode)",
wikipedia_url: Some("https://en.wikipedia.org/wiki/Oonagh_"),
subscriber_count: "[subscriber_count]",
tracks: "[tracks]",
albums: [
AlbumItem(
id: "MPREb_2vYEpZteTjN",
name: "Willst du noch träumen (feat. Elbkinder (Rolf Zuckowski))",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Single,
year: Some(2016),
by_va: false,
),
AlbumItem(
id: "MPREb_76jQdnW2e6m",
name: "Gäa (Akustik Version)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Single,
year: Some(2014),
by_va: false,
),
AlbumItem(
id: "MPREb_8weOuwHWdSU",
name: "Oonagh",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Album,
year: Some(2014),
by_va: false,
),
AlbumItem(
id: "MPREb_Gnj2M6UQmfX",
name: "Ich sehe was, was Du nicht siehst (Online Version)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Single,
year: Some(2007),
by_va: false,
),
AlbumItem(
id: "MPREb_GyH43gCvdM5",
name: "Best Of",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Album,
year: Some(2020),
by_va: false,
),
AlbumItem(
id: "MPREb_S6P0cjIdHIF",
name: "Zauberwald",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Single,
year: Some(2017),
by_va: false,
),
AlbumItem(
id: "MPREb_WAzaITm6K4l",
name: "Zeit der Sommernächte (Single Mix)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Single,
year: Some(2017),
by_va: false,
),
AlbumItem(
id: "MPREb_WfEYxWGLcMx",
name: "Du bist genug (Single Mix)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Single,
year: Some(2020),
by_va: false,
),
AlbumItem(
id: "MPREb_eNje8weTxgK",
name: "Aulë und Yavanna (Jungle-Mix)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Single,
year: Some(2016),
by_va: false,
),
AlbumItem(
id: "MPREb_imDwIcPAjFy",
name: "Aeria (Sartoranta - Fan Edition)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Album,
year: Some(2015),
by_va: false,
),
AlbumItem(
id: "MPREb_jovYz4SubiU",
name: "Eine neue Zeit",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Album,
year: Some(2019),
by_va: false,
),
AlbumItem(
id: "MPREb_kWjFiCq7EdM",
name: "Scheissegal (Digital Version)",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Single,
year: Some(2006),
by_va: false,
),
AlbumItem(
id: "MPREb_nlBWQROfvjo",
name: "Märchen enden gut",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Album,
year: Some(2016),
by_va: false,
),
AlbumItem(
id: "MPREb_oWACs9fccqd",
name: "Kuliko Jana - Eine neue Zeit",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Single,
year: Some(2019),
by_va: false,
),
AlbumItem(
id: "MPREb_vuyS6nIsNeg",
name: "Gäa",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UC_vmjW5e1xEHhYjY2a0kK1A"),
name: "Oonagh",
),
],
album_type: Single,
year: Some(2014),
by_va: false,
),
],
playlists: "[playlists]",
similar_artists: "[artists]",
tracks_playlist_id: Some("OLAK5uy_m6843aeUO05cz_t1seql2dQ9eUgwyuOXI"),
videos_playlist_id: None,
)

View file

@ -20,7 +20,7 @@ MusicAlbum(
TrackItem(
id: "g0iRiJ_ck48",
title: "Aulë und Yavanna",
duration: 216,
duration: Some(216),
cover: [],
artists: [
ArtistId(
@ -39,7 +39,7 @@ MusicAlbum(
TrackItem(
id: "rREEBXp0y9s",
title: "Numenor",
duration: 224,
duration: Some(224),
cover: [],
artists: [
ArtistId(
@ -58,7 +58,7 @@ MusicAlbum(
TrackItem(
id: "zvU5Y8Q19hU",
title: "Das Mädchen und die Liebe (feat. Santiano)",
duration: 176,
duration: Some(176),
cover: [],
artists: [
ArtistId(
@ -77,7 +77,7 @@ MusicAlbum(
TrackItem(
id: "ARKLrzzTQA0",
title: "Niënna",
duration: 215,
duration: Some(215),
cover: [],
artists: [
ArtistId(
@ -96,7 +96,7 @@ MusicAlbum(
TrackItem(
id: "tstLgN8A_Ng",
title: "Der fahle Mond",
duration: 268,
duration: Some(268),
cover: [],
artists: [
ArtistId(
@ -115,7 +115,7 @@ MusicAlbum(
TrackItem(
id: "k2DjgQOY3Ts",
title: "Weise den Weg",
duration: 202,
duration: Some(202),
cover: [],
artists: [
ArtistId(
@ -134,7 +134,7 @@ MusicAlbum(
TrackItem(
id: "azHwhecxEsI",
title: "Zeit der Sommernächte",
duration: 185,
duration: Some(185),
cover: [],
artists: [
ArtistId(
@ -153,7 +153,7 @@ MusicAlbum(
TrackItem(
id: "_FcsdYIQ2co",
title: "Märchen enden gut",
duration: 226,
duration: Some(226),
cover: [],
artists: [
ArtistId(
@ -172,7 +172,7 @@ MusicAlbum(
TrackItem(
id: "27bOWEbshyE",
title: "Das Mädchen und der Tod",
duration: 207,
duration: Some(207),
cover: [],
artists: [
ArtistId(
@ -191,7 +191,7 @@ MusicAlbum(
TrackItem(
id: "riD_3oZwt8w",
title: "Wir sehn uns wieder",
duration: 211,
duration: Some(211),
cover: [],
artists: [
ArtistId(
@ -210,7 +210,7 @@ MusicAlbum(
TrackItem(
id: "8GNvjF3no9s",
title: "Tanz mit mir",
duration: 179,
duration: Some(179),
cover: [],
artists: [
ArtistId(
@ -229,7 +229,7 @@ MusicAlbum(
TrackItem(
id: "YHMFzf1uN2U",
title: "Nachtigall",
duration: 218,
duration: Some(218),
cover: [],
artists: [
ArtistId(
@ -248,7 +248,7 @@ MusicAlbum(
TrackItem(
id: "jvV-z5F3oAo",
title: "Gayatri Mantra",
duration: 277,
duration: Some(277),
cover: [],
artists: [
ArtistId(
@ -267,7 +267,7 @@ MusicAlbum(
TrackItem(
id: "u8_9cxlrh8k",
title: "Sing mir deine Lieder",
duration: 204,
duration: Some(204),
cover: [],
artists: [
ArtistId(
@ -286,7 +286,7 @@ MusicAlbum(
TrackItem(
id: "gSvKcvM1Wk0",
title: "Laurië lantar",
duration: 202,
duration: Some(202),
cover: [],
artists: [
ArtistId(
@ -305,7 +305,7 @@ MusicAlbum(
TrackItem(
id: "wQHgKRJ0pDQ",
title: "Wächter vor dem Tor",
duration: 222,
duration: Some(222),
cover: [],
artists: [
ArtistId(
@ -324,7 +324,7 @@ MusicAlbum(
TrackItem(
id: "Ckz5i6-hzf0",
title: "Stroh zu Gold",
duration: 177,
duration: Some(177),
cover: [],
artists: [
ArtistId(
@ -343,7 +343,7 @@ MusicAlbum(
TrackItem(
id: "y5zuUgyFqrc",
title: "Sonnenwendnacht",
duration: 220,
duration: Some(220),
cover: [],
artists: [
ArtistId(

View file

@ -0,0 +1,33 @@
---
source: tests/youtube.rs
expression: artist
---
MusicArtist(
id: "UCfwCE5VhPMGxNPFxtVv7lRw",
name: "Sulli",
header_image: "[header_image]",
description: "Choi Jin-ri, better known by her stage name Sulli, was a South Korean actress and singer. She first made her debut as a child actress, appearing as a supporting cast member on the SBS historical drama Ballad of Seodong. Following this, she earned a number of guest roles, appearing in the television series Love Needs a Miracle and Drama City, and the film Vacation. She then subsequently appeared in the independent films Punch Lady and BA:BO, the former being her first time cast in a substantial dramatic role.\nAfter signing a record deal with SM Entertainment, Sulli rose to prominence as a member of the girl group f(x) formed in 2009. The group achieved both critical and commercial success, with four Korean number-one singles and international recognition after becoming the first K-pop act to perform at SXSW. Concurrently with her music career, Sulli returned to acting by starring in the SBS romantic comedy series, To the Beautiful You, a Korean adaptation of the shōjo manga Hana-Kimi where her performance was positively received and earned her two SBS Drama Awards and a nomination at the 49th Paeksang Arts Awards.\n\nFrom Wikipedia (https://en.wikipedia.org/wiki/Sulli) under Creative Commons Attribution CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode)",
wikipedia_url: Some("https://en.wikipedia.org/wiki/Sulli"),
subscriber_count: "[subscriber_count]",
tracks: "[tracks]",
albums: [
AlbumItem(
id: "MPREb_vq8dZfFBEdx",
name: "고블린 Goblin",
cover: "[cover]",
artists: [
ArtistId(
id: Some("UCfwCE5VhPMGxNPFxtVv7lRw"),
name: "Sulli",
),
],
album_type: Single,
year: Some(2019),
by_va: false,
),
],
playlists: "[playlists]",
similar_artists: "[artists]",
tracks_playlist_id: None,
videos_playlist_id: Some("OLAK5uy_lmH3iVq6lqjsnLkBWzpvRTh0DidLzbU-I"),
)

View file

@ -20,7 +20,7 @@ MusicAlbum(
TrackItem(
id: "lSbKz5LWvKE",
title: "Achtung, Waldbrand - Teil 1",
duration: 229,
duration: Some(229),
cover: [],
artists: [
ArtistId(
@ -39,7 +39,7 @@ MusicAlbum(
TrackItem(
id: "fdO6gu4qjRw",
title: "Achtung, Waldbrand - Teil 2",
duration: 235,
duration: Some(235),
cover: [],
artists: [
ArtistId(
@ -58,7 +58,7 @@ MusicAlbum(
TrackItem(
id: "muCxstXirvY",
title: "Achtung, Waldbrand - Teil 3",
duration: 197,
duration: Some(197),
cover: [],
artists: [
ArtistId(
@ -77,7 +77,7 @@ MusicAlbum(
TrackItem(
id: "aG1N0vo__Ng",
title: "Eiszeit - Teil 1",
duration: 186,
duration: Some(186),
cover: [],
artists: [
ArtistId(
@ -96,7 +96,7 @@ MusicAlbum(
TrackItem(
id: "roHhLNYS9yo",
title: "Eiszeit - Teil 2",
duration: 188,
duration: Some(188),
cover: [],
artists: [
ArtistId(
@ -115,7 +115,7 @@ MusicAlbum(
TrackItem(
id: "nJ49NuLvcAw",
title: "Eiszeit - Teil 3",
duration: 205,
duration: Some(205),
cover: [],
artists: [
ArtistId(
@ -134,7 +134,7 @@ MusicAlbum(
TrackItem(
id: "Me119D570h0",
title: "Eiszeit - Teil 4",
duration: 219,
duration: Some(219),
cover: [],
artists: [
ArtistId(
@ -153,7 +153,7 @@ MusicAlbum(
TrackItem(
id: "YXnRLK-qKG8",
title: "Im Sinkloch - Teil 1",
duration: 240,
duration: Some(240),
cover: [],
artists: [
ArtistId(
@ -172,7 +172,7 @@ MusicAlbum(
TrackItem(
id: "A61wz1jz9X0",
title: "Im Sinkloch - Teil 2",
duration: 239,
duration: Some(239),
cover: [],
artists: [
ArtistId(
@ -191,7 +191,7 @@ MusicAlbum(
TrackItem(
id: "u_S08EJOTUg",
title: "Im Sinkloch - Teil 3",
duration: 197,
duration: Some(197),
cover: [],
artists: [
ArtistId(
@ -210,7 +210,7 @@ MusicAlbum(
TrackItem(
id: "0qwYJihV1EU",
title: "Vorsicht, heiß - Teil 1",
duration: 201,
duration: Some(201),
cover: [],
artists: [
ArtistId(
@ -229,7 +229,7 @@ MusicAlbum(
TrackItem(
id: "zjhoyTnEzuQ",
title: "Vorsicht, heiß - Teil 2",
duration: 187,
duration: Some(187),
cover: [],
artists: [
ArtistId(
@ -248,7 +248,7 @@ MusicAlbum(
TrackItem(
id: "oDjDd0UBzAY",
title: "Vorsicht, heiß - Teil 3",
duration: 183,
duration: Some(183),
cover: [],
artists: [
ArtistId(
@ -267,7 +267,7 @@ MusicAlbum(
TrackItem(
id: "_3-WVmqgi-Q",
title: "Vorsicht, heiß - Teil 4",
duration: 193,
duration: Some(193),
cover: [],
artists: [
ArtistId(

View file

@ -24,7 +24,7 @@ MusicAlbum(
TrackItem(
id: "XX0epju-YvY",
title: "Der Himmel reißt auf",
duration: 183,
duration: Some(183),
cover: [],
artists: [
ArtistId(

View file

@ -15,7 +15,7 @@ MusicAlbum(
TrackItem(
id: "8IqLxg0GqXc",
title: "Waka Boom (My Way) (feat. Lee Young Ji)",
duration: 274,
duration: Some(274),
cover: [],
artists: [
ArtistId(
@ -34,7 +34,7 @@ MusicAlbum(
TrackItem(
id: "9WYpLYAEub0",
title: "AURA",
duration: 216,
duration: Some(216),
cover: [],
artists: [
ArtistId(
@ -53,7 +53,7 @@ MusicAlbum(
TrackItem(
id: "R48tE237bW4",
title: "THE GIRLS (Cant turn me down)",
duration: 239,
duration: Some(239),
cover: [],
artists: [
ArtistId(
@ -72,7 +72,7 @@ MusicAlbum(
TrackItem(
id: "-UzsoR6z-vg",
title: "Red Sun!",
duration: 254,
duration: Some(254),
cover: [],
artists: [
ArtistId(
@ -91,7 +91,7 @@ MusicAlbum(
TrackItem(
id: "kbNVyn8Ex28",
title: "POSE",
duration: 187,
duration: Some(187),
cover: [],
artists: [
ArtistId(
@ -110,7 +110,7 @@ MusicAlbum(
TrackItem(
id: "NJrQZUzWP5Y",
title: "Whistle",
duration: 224,
duration: Some(224),
cover: [],
artists: [
ArtistId(

View file

@ -1353,6 +1353,84 @@ async fn music_album_not_found() {
);
}
#[rstest]
#[case::basic_all("basic_all", "UC7cl4MmM6ZZ2TcFyMk_b4pg", true, 15, 2)]
#[case::basic("basic", "UC7cl4MmM6ZZ2TcFyMk_b4pg", false, 15, 2)]
#[case::no_more_albums("no_more_albums", "UC_vmjW5e1xEHhYjY2a0kK1A", true, 12, 0)]
#[case::only_singles("only_singles", "UCfwCE5VhPMGxNPFxtVv7lRw", false, 13, 0)]
#[case::no_artist("no_artist", "UCh8gHdtzO2tXd593_bjErWg", false, 0, 2)]
#[tokio::test]
async fn music_artist(
#[case] name: &str,
#[case] id: &str,
#[case] all_albums: bool,
#[case] min_tracks: usize,
#[case] min_playlists: usize,
) {
let rp = RustyPipe::builder().strict().build();
let mut artist = rp.query().music_artist(id, all_albums).await.unwrap();
assert_gte(artist.tracks.len(), min_tracks, "tracks");
assert_gte(artist.playlists.len(), min_playlists, "playlists");
if name == "no_artist" {
assert!(artist.similar_artists.is_empty());
assert!(artist.subscriber_count.is_none());
} else {
assert_gte(artist.subscriber_count.unwrap(), 30000, "subscribers");
}
// Check images
assert!(!artist.header_image.is_empty(), "got no header image");
artist
.tracks
.iter()
.for_each(|t| assert!(!t.cover.is_empty()));
artist
.albums
.iter()
.for_each(|t| assert!(!t.cover.is_empty()));
artist
.playlists
.iter()
.for_each(|t| assert!(!t.thumbnail.is_empty()));
artist
.similar_artists
.iter()
.for_each(|t| assert!(!t.avatar.is_empty()));
// Sort albums to ensure consistent order
artist.albums.sort_by_key(|a| a.id.to_owned());
insta::assert_ron_snapshot!(format!("music_album_{}", name), artist, {
".header_image" => "[header_image]",
".subscriber_count" => "[subscriber_count]",
".albums[].cover" => "[cover]",
".tracks" => "[tracks]",
".playlists" => "[playlists]",
".similar_artists" => "[artists]",
});
}
#[tokio::test]
async fn music_artist_not_found() {
let rp = RustyPipe::builder().strict().build();
let err = rp
.query()
.music_artist("UC7cl4MmM6ZZ2TcFyMk_b4pq", false)
.await
.unwrap_err();
assert!(
matches!(
err,
Error::Extraction(ExtractionError::ContentUnavailable(_))
),
"got: {}",
err
);
}
#[rstest]
#[case::default(false)]
#[case::typo(true)]
@ -1384,7 +1462,7 @@ async fn music_search(#[case] typo: bool) {
dbg!(&track);
assert_eq!(track.id, "ZeerrnuLi5E");
assert_eq!(track.title, "Black Mamba");
assert_eq!(track.duration, 230);
assert_eq!(track.duration.unwrap(), 230);
assert!(!track.cover.is_empty(), "got no cover");
assert_eq!(track.artists.len(), 1);
@ -1428,12 +1506,12 @@ async fn music_search_tracks(#[case] videos: bool) {
if videos {
assert_eq!(track.id, "ZeerrnuLi5E");
assert_eq!(track.duration, 230);
assert_eq!(track.duration.unwrap(), 230);
assert_eq!(track.album, None);
assert_gte(track.view_count.unwrap(), 230_000_000, "views");
} else {
assert_eq!(track.id, "BL-aIpCLWnU");
assert_eq!(track.duration, 175);
assert_eq!(track.duration.unwrap(), 175);
let album = track.album.as_ref().unwrap();
assert_eq!(album.id, "MPREb_OpHWHwyNOuY");