update
Some checks failed
Pipeline: Test, Lint, Build / Get version info (push) Has been cancelled
Pipeline: Test, Lint, Build / Lint Go code (push) Has been cancelled
Pipeline: Test, Lint, Build / Test Go code (push) Has been cancelled
Pipeline: Test, Lint, Build / Test JS code (push) Has been cancelled
Pipeline: Test, Lint, Build / Lint i18n files (push) Has been cancelled
Pipeline: Test, Lint, Build / Check Docker configuration (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (darwin/amd64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (darwin/arm64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/386) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/amd64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm/v5) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm/v6) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm/v7) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (windows/386) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (windows/amd64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Push to GHCR (push) Has been cancelled
Pipeline: Test, Lint, Build / Push to Docker Hub (push) Has been cancelled
Pipeline: Test, Lint, Build / Cleanup digest artifacts (push) Has been cancelled
Pipeline: Test, Lint, Build / Build Windows installers (push) Has been cancelled
Pipeline: Test, Lint, Build / Package/Release (push) Has been cancelled
Pipeline: Test, Lint, Build / Upload Linux PKG (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled
POEditor import / update-translations (push) Has been cancelled

This commit is contained in:
2025-12-08 16:16:23 +01:00
commit c251f174ed
1349 changed files with 194301 additions and 0 deletions

0
tests/fixtures/#snapshot/.gitkeep vendored Normal file
View File

0
tests/fixtures/$Recycle.Bin/.gitkeep vendored Normal file
View File

View File

0
tests/fixtures/._02 Invisible.mp3 vendored Normal file
View File

View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
tests/fixtures/artist/an-album/cover.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
tests/fixtures/artist/an-album/front.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
tests/fixtures/artist/an-album/test.mp3 vendored Normal file

Binary file not shown.

BIN
tests/fixtures/artist/artist.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

4
tests/fixtures/bom-test.lrc vendored Normal file
View File

@@ -0,0 +1,4 @@
[00:00.00] 作曲 : 柏大輔
NOTE: This file intentionally contains a UTF-8 BOM (Byte Order Mark) at byte 0.
This tests BOM handling in lyrics parsing (GitHub issue #4631).
The BOM bytes are: 0xEF 0xBB 0xBF

BIN
tests/fixtures/bom-utf16-test.lrc vendored Normal file

Binary file not shown.

9
tests/fixtures/deezer.artist.bio.json vendored Normal file
View File

@@ -0,0 +1,9 @@
{
"data": {
"artist": {
"bio": {
"full": "<p>Schoolmates Thomas and Guy-Manuel began their career in 1992 with the indie rock trio Darlin' (named after The Beach Boys song) but were scathingly dismissed by Melody Maker magazine as \"daft punk.\" Turning to house-inspired electronica, they used the put down as a name for their DJ-ing partnership and became a hugely successful and influential dance act.</p>"
}
}
}
}

File diff suppressed because one or more lines are too long

1
tests/fixtures/deezer.artist.top.json vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

0
tests/fixtures/empty.txt vendored Normal file
View File

View File

View File

15
tests/fixtures/index.html vendored Normal file
View File

@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta
name="description"
content="Navidrome Music Server - {{.Version}}"
/>
<title>Navidrome</title>
<!-- The line below has to match the exact format of the equivalent line in ui/build/index.html -->
<script>window.__APP_CONFIG__={{ .AppConfig }};</script>
</head>
<body>
</body>
</html>

Binary file not shown.

1909
tests/fixtures/itunes-library.xml vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
{"album":{"artist":"The Jesus and Mary Chain","listeners":"2","image":[{"size":"small","#text":""},{"size":"medium","#text":""},{"size":"large","#text":""},{"size":"extralarge","#text":""},{"size":"mega","#text":""},{"size":"","#text":""}],"mbid":"","tags":"","name":"The Definitive Less Damage And More Joy","playcount":"2","url":"https:\/\/www.last.fm\/music\/The+Jesus+and+Mary+Chain\/The+Definitive+Less+Damage+And+More+Joy"}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"artist":{"name":"[unknown]","mbid":"5dfdca28-9ddc-4853-933c-8bc97d87beec","url":"https://www.last.fm/music/%5Bunknown%5D","image":[{"#text":"https://lastfm.freetls.fastly.net/i/u/34s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"small"},{"#text":"https://lastfm.freetls.fastly.net/i/u/64s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"medium"},{"#text":"https://lastfm.freetls.fastly.net/i/u/174s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"large"},{"#text":"https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png","size":"extralarge"},{"#text":"https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png","size":"mega"},{"#text":"https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png","size":""}],"streamable":"0","ontour":"0","stats":{"listeners":"2774837","playcount":"137106224"},"similar":{"artist":[]},"tags":{"tag":[{"name":"mysterious","url":"https://www.last.fm/tag/mysterious"},{"name":"mistagged artist","url":"https://www.last.fm/tag/mistagged+artist"},{"name":"unknown","url":"https://www.last.fm/tag/unknown"},{"name":"rock","url":"https://www.last.fm/tag/rock"},{"name":"Soundtrack","url":"https://www.last.fm/tag/Soundtrack"}]},"bio":{"links":{"link":{"#text":"","rel":"original","href":"https://last.fm/music/%5Bunknown%5D/+wiki"}},"published":"10 Feb 2006, 20:25","summary":"[unknown] is a standard artist name used at MusicBrainz for indicating where an artist name is lacking or not provided.\n\n--\n\nFor the short-lived visual-kei band, see \n\n--\n\nThere are other artists with this or a similar spelling, usually their scrobbles will be filtered when submitted unless they are whitelisted. <a href=\"https://www.last.fm/music/%5Bunknown%5D\">Read more on Last.fm</a>","content":"[unknown] is a standard artist name used at MusicBrainz for indicating where an artist name is lacking or not provided.\n\n--\n\nFor the short-lived visual-kei band, see \n\n--\n\nThere are other artists with this or a similar spelling, usually their scrobbles will be filtered when submitted unless they are whitelisted. <a href=\"https://www.last.fm/music/%5Bunknown%5D\">Read more on Last.fm</a>. User-contributed text is available under the Creative Commons By-SA License; additional terms may apply."}}}

View File

@@ -0,0 +1 @@
{"similarartists":{"artist":[{"name":"Passengers","mbid":"e110c11f-1c94-4471-a350-c38f46b29389","match":"1","url":"https://www.last.fm/music/Passengers","image":[{"#text":"https://lastfm.freetls.fastly.net/i/u/34s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"small"},{"#text":"https://lastfm.freetls.fastly.net/i/u/64s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"medium"},{"#text":"https://lastfm.freetls.fastly.net/i/u/174s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"large"},{"#text":"https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png","size":"extralarge"},{"#text":"https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png","size":"mega"},{"#text":"https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png","size":""}],"streamable":"0"},{"name":"INXS","mbid":"481bf5f9-2e7c-4c44-b08a-05b32bc7c00d","match":"0.511468","url":"https://www.last.fm/music/INXS","image":[{"#text":"https://lastfm.freetls.fastly.net/i/u/34s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"small"},{"#text":"https://lastfm.freetls.fastly.net/i/u/64s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"medium"},{"#text":"https://lastfm.freetls.fastly.net/i/u/174s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"large"},{"#text":"https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png","size":"extralarge"},{"#text":"https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png","size":"mega"},{"#text":"https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png","size":""}],"streamable":"0"}],"@attr":{"artist":"U2"}}}

View File

@@ -0,0 +1 @@
{"similarartists":{"artist":[],"@attr":{"artist":"[unknown]"}}}

View File

@@ -0,0 +1 @@
{"toptracks":{"track":[{"name":"Beautiful Day","playcount":"6309776","listeners":"1037970","mbid":"f7f264d0-a89b-4682-9cd7-a4e7c37637af","url":"https://www.last.fm/music/U2/_/Beautiful+Day","streamable":"0","artist":{"name":"U2","mbid":"a3cb23fc-acd3-4ce0-8f36-1e5aa6a18432","url":"https://www.last.fm/music/U2"},"image":[{"#text":"https://lastfm.freetls.fastly.net/i/u/34s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"small"},{"#text":"https://lastfm.freetls.fastly.net/i/u/64s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"medium"},{"#text":"https://lastfm.freetls.fastly.net/i/u/174s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"large"},{"#text":"https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png","size":"extralarge"}],"@attr":{"rank":"1"}},{"name":"With or Without You","playcount":"6779665","listeners":"1022929","mbid":"6b9a509f-6907-4a6e-9345-2f12da09ba4b","url":"https://www.last.fm/music/U2/_/With+or+Without+You","streamable":"0","artist":{"name":"U2","mbid":"a3cb23fc-acd3-4ce0-8f36-1e5aa6a18432","url":"https://www.last.fm/music/U2"},"image":[{"#text":"https://lastfm.freetls.fastly.net/i/u/34s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"small"},{"#text":"https://lastfm.freetls.fastly.net/i/u/64s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"medium"},{"#text":"https://lastfm.freetls.fastly.net/i/u/174s/2a96cbd8b46e442fc41c2b86b821562f.png","size":"large"},{"#text":"https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png","size":"extralarge"}],"@attr":{"rank":"2"}}],"@attr":{"artist":"U2","page":"1","perPage":"2","totalPages":"166117","total":"332234"}}}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,7 @@
<html>
<head>
<meta property="og:image" content="https://lastfm.freetls.fastly.net/i/u/ar0/818148bf682d429dc21b59a73ef6f68e.png" />
</head>
<body>
</body>
</html>

View File

@@ -0,0 +1,7 @@
<html>
<head>
<meta property="og:image" content="https://lastfm.freetls.fastly.net/i/u/ar0/2a96cbd8b46e442fc41c2b86b821562f.png" />
</head>
<body>
</body>
</html>

View File

@@ -0,0 +1,6 @@
<html>
<head>
</head>
<body>
</body>
</html>

View File

@@ -0,0 +1,24 @@
{
"listen_type": "playing_now",
"payload": [
{
"track_metadata": {
"artist_name": "Track Artist",
"track_name": "Track Title",
"release_name": "Track Album",
"additional_info": {
"tracknumber": 1,
"recording_mbid": "mbz-123",
"artist_names": [
"Artist 1", "Artist 2"
],
"artist_mbids": [
"mbz-789", "mbz-012"
],
"release_mbid": "mbz-456",
"duration_ms": 142200
}
}
}
]
}

View File

@@ -0,0 +1,25 @@
{
"listen_type": "single",
"payload": [
{
"listened_at": 1635000000,
"track_metadata": {
"artist_name": "Track Artist",
"track_name": "Track Title",
"release_name": "Track Album",
"additional_info": {
"tracknumber": 1,
"recording_mbid": "mbz-123",
"artist_names": [
"Artist 1", "Artist 2"
],
"artist_mbids": [
"mbz-789", "mbz-012"
],
"release_mbid": "mbz-456",
"duration_ms": 142200
}
}
}
]
}

BIN
tests/fixtures/mixed-lyrics.flac vendored Normal file

Binary file not shown.

BIN
tests/fixtures/no_replaygain.mp3 vendored Normal file

Binary file not shown.

Binary file not shown.

6
tests/fixtures/playlists/bom-test.m3u vendored Normal file
View File

@@ -0,0 +1,6 @@
#EXTM3U
# NOTE: This file intentionally contains a UTF-8 BOM (Byte Order Mark) at the beginning
# (bytes 0xEF 0xBB 0xBF) to test BOM handling in playlist parsing.
#PLAYLIST:Test Playlist
#EXTINF:123,Test Artist - Test Song
test.mp3

1
tests/fixtures/playlists/cr-ended.m3u vendored Normal file
View File

@@ -0,0 +1 @@
# This is a comment

View File

@@ -0,0 +1,42 @@
{
"all": [
{"is": {"loved": true}},
{"isNot": {"genre": "Hip-Hop"}},
{"isNot": {"genre": "Hip Hop"}},
{"isNot": {"genre": "Rap"}},
{"isNot": {"genre": "Alternative Hip Hop"}},
{"isNot": {"genre": "Deutsch-Rap"}},
{"isNot": {"genre": "Deutsche Musik"}},
{"isNot": {"genre": "Uk Hip Hop"}},
{"isNot": {"genre": "UK Rap"}},
{"isNot": {"genre": "Boom Bap"}},
{"isNot": {"genre": "Lo-Fi Hip Hop"}},
{"isNot": {"genre": "Jazzy Hip-Hop"}},
{"isNot": {"genre": "Jazz Rap"}},
{"isNot": {"genre": "Jazz Rap"}},
{"isNot": {"genre": "Southern Hip Hop"}},
{"isNot": {"genre": "Alternative Hip Hop}},
{"isNot": {"genre": "Underground"}},
{"isNot": {"genre": "Trap"}},
{"isNot": {"genre": "Mixtape"}},
{"isNot": {"genre": "Boom-Bap"}},
{"isNot": {"genre": "Conscious"}},
{"isNot": {"genre": "Turntablism"}},
{"isNot": {"genre": "Pop Rap"}},
{"isNot": {"genre": "Aussie"}},
{"isNot": {"genre": "Horror-Core"}},
{"isNot": {"genre": "Pop Rap"}},
{"isNot": {"genre": "Female-Rap"}},
{"isNot": {"genre": "Female Rap"}},
{"isNot": {"genre": "East Coast"}},
{"isNot": {"genre": "East Coast Hip Hop"}},
{"isNot": {"genre": "West Coast"}},
{"isNot": {"genre": "Gangsta Rap"}},
{"isNot": {"genre": "Cloudrap"}},
{"isNot": {"genre": "Hardcore Hip Hop"}},
{"isNot": {"genre": "Mixtape"}},
{"isNot": {"genre": "Deutschrap"}}
],
"sort": "dateLoved",
"order": "desc"
}

3
tests/fixtures/playlists/lf-ended.m3u vendored Normal file
View File

@@ -0,0 +1,3 @@
# This is a comment
abc.mp3
def.mp3

View File

@@ -0,0 +1,4 @@
#PLAYLIST:playlist 1
tests/fixtures/test.mp3
tests/fixtures/test.ogg
file:///tests/fixtures/01%20Invisible%20(RED)%20Edit%20Version.mp3

View File

@@ -0,0 +1,3 @@
tests/fixtures/test.mp3
tests/fixtures/test.ogg
file:///tests/fixtures/01%20Invisible%20(RED)%20Edit%20Version.mp3

2
tests/fixtures/playlists/pls1.m3u vendored Normal file
View File

@@ -0,0 +1,2 @@
test.mp3
test.ogg

View File

@@ -0,0 +1,14 @@
/*
Top Level Comment
*/
{
"name": "Recently Played",
"comment": "Recently played tracks",
"all": [
// This is an inline comment
{"inTheLast": {"lastPlayed": 30}}
],
"sort": "lastPlayed",
"order": "desc",
"limit": 100
}

View File

@@ -0,0 +1,2 @@
test.mp3
test.ogg

View File

@@ -0,0 +1,2 @@
test.mp3
test.ogg

View File

@@ -0,0 +1,2 @@
test.mp3
test.ogg

View File

@@ -0,0 +1,4 @@
../test.mp3
../test.ogg
/tests/fixtures/01%20Invisible%20(RED)%20Edit%20Version.mp3
/invalid/path/xyz.mp3

4
tests/fixtures/robots.txt vendored Normal file
View File

@@ -0,0 +1,4 @@
User-agent: bingbot
Disallow: /manifest.webmanifest
User-agent: *

View File

@@ -0,0 +1,638 @@
{
"artists": {
"href": "https://api.spotify.com/v1/search?query=U2&type=artist&offset=0&limit=20",
"items": [
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/51Blml2LZPmy7TTiAg47vQ"
},
"followers": {
"href": null,
"total": 7369641
},
"genres": [
"irish rock",
"permanent wave",
"rock"
],
"href": "https://api.spotify.com/v1/artists/51Blml2LZPmy7TTiAg47vQ",
"id": "51Blml2LZPmy7TTiAg47vQ",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/e22d5c0c8139b8439440a69854ed66efae91112d",
"width": 640
},
{
"height": 320,
"url": "https://i.scdn.co/image/40d6c5c14355cfc127b70da221233315497ec91d",
"width": 320
},
{
"height": 160,
"url": "https://i.scdn.co/image/7293d6752ae8a64e34adee5086858e408185b534",
"width": 160
}
],
"name": "U2",
"popularity": 82,
"type": "artist",
"uri": "spotify:artist:51Blml2LZPmy7TTiAg47vQ"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/6Yi6ndhYVLUaYu7rEqUCPT"
},
"followers": {
"href": null,
"total": 1008
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/6Yi6ndhYVLUaYu7rEqUCPT",
"id": "6Yi6ndhYVLUaYu7rEqUCPT",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/ab67616d0000b2734dc59f13a52e236c404b8abf",
"width": 640
},
{
"height": 300,
"url": "https://i.scdn.co/image/ab67616d00001e024dc59f13a52e236c404b8abf",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab67616d000048514dc59f13a52e236c404b8abf",
"width": 64
}
],
"name": "U2R",
"popularity": 1,
"type": "artist",
"uri": "spotify:artist:6Yi6ndhYVLUaYu7rEqUCPT"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/5TucOfYYQ8HPdDdvsQZAZe"
},
"followers": {
"href": null,
"total": 658
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/5TucOfYYQ8HPdDdvsQZAZe",
"id": "5TucOfYYQ8HPdDdvsQZAZe",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/ab67616d0000b273931ae74e023fcb999dc423a5",
"width": 640
},
{
"height": 300,
"url": "https://i.scdn.co/image/ab67616d00001e02931ae74e023fcb999dc423a5",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab67616d00004851931ae74e023fcb999dc423a5",
"width": 64
}
],
"name": "U2KUSHI",
"popularity": 2,
"type": "artist",
"uri": "spotify:artist:5TucOfYYQ8HPdDdvsQZAZe"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/5s3rOzCczqCQrvueHRCZOx"
},
"followers": {
"href": null,
"total": 44
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/5s3rOzCczqCQrvueHRCZOx",
"id": "5s3rOzCczqCQrvueHRCZOx",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/c474959b393e2cf05bec6deb83643b65b12cf258",
"width": 640
},
{
"height": 320,
"url": "https://i.scdn.co/image/36ea6b9246b8dfe59288f826cfeaf9cf641e7316",
"width": 320
},
{
"height": 160,
"url": "https://i.scdn.co/image/709c8f24166781c1a0695046e757e1f4f6e1ac34",
"width": 160
}
],
"name": "U2funnyTJ",
"popularity": 6,
"type": "artist",
"uri": "spotify:artist:5s3rOzCczqCQrvueHRCZOx"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/4CWC85PCLJ0yzPeJYXnQOG"
},
"followers": {
"href": null,
"total": 908
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/4CWC85PCLJ0yzPeJYXnQOG",
"id": "4CWC85PCLJ0yzPeJYXnQOG",
"images": [],
"name": "U2 Rocks",
"popularity": 0,
"type": "artist",
"uri": "spotify:artist:4CWC85PCLJ0yzPeJYXnQOG"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/21114frei5NgrkMuLn6AOz"
},
"followers": {
"href": null,
"total": 0
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/21114frei5NgrkMuLn6AOz",
"id": "21114frei5NgrkMuLn6AOz",
"images": [],
"name": "U2A9F",
"popularity": 0,
"type": "artist",
"uri": "spotify:artist:21114frei5NgrkMuLn6AOz"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/3dhoDqkI6atVLE43nkx8VZ"
},
"followers": {
"href": null,
"total": 878
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/3dhoDqkI6atVLE43nkx8VZ",
"id": "3dhoDqkI6atVLE43nkx8VZ",
"images": [],
"name": "LMC vs U2",
"popularity": 14,
"type": "artist",
"uri": "spotify:artist:3dhoDqkI6atVLE43nkx8VZ"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/5bi7xpKp2mDDSnFfQkBEjR"
},
"followers": {
"href": null,
"total": 989
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/5bi7xpKp2mDDSnFfQkBEjR",
"id": "5bi7xpKp2mDDSnFfQkBEjR",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/ab67616d0000b2735931f4613d57703ef50ff0e4",
"width": 640
},
{
"height": 300,
"url": "https://i.scdn.co/image/ab67616d00001e025931f4613d57703ef50ff0e4",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab67616d000048515931f4613d57703ef50ff0e4",
"width": 64
}
],
"name": "U21",
"popularity": 0,
"type": "artist",
"uri": "spotify:artist:5bi7xpKp2mDDSnFfQkBEjR"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/3H7E05uiFuqgwBQrXFaQIm"
},
"followers": {
"href": null,
"total": 18
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/3H7E05uiFuqgwBQrXFaQIm",
"id": "3H7E05uiFuqgwBQrXFaQIm",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/ab67616d0000b27366ca114acb03e008d141f28b",
"width": 640
},
{
"height": 300,
"url": "https://i.scdn.co/image/ab67616d00001e0266ca114acb03e008d141f28b",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab67616d0000485166ca114acb03e008d141f28b",
"width": 64
}
],
"name": "U2M JR",
"popularity": 1,
"type": "artist",
"uri": "spotify:artist:3H7E05uiFuqgwBQrXFaQIm"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/6BMzJXRYmy28QVMZc09rGB"
},
"followers": {
"href": null,
"total": 13
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/6BMzJXRYmy28QVMZc09rGB",
"id": "6BMzJXRYmy28QVMZc09rGB",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/ab67616d0000b273bd26433a01cf571413cbb1ec",
"width": 640
},
{
"height": 300,
"url": "https://i.scdn.co/image/ab67616d00001e02bd26433a01cf571413cbb1ec",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab67616d00004851bd26433a01cf571413cbb1ec",
"width": 64
}
],
"name": "U2oh",
"popularity": 0,
"type": "artist",
"uri": "spotify:artist:6BMzJXRYmy28QVMZc09rGB"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/4MtRKC7apgAyAd5uUjN3L4"
},
"followers": {
"href": null,
"total": 64
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/4MtRKC7apgAyAd5uUjN3L4",
"id": "4MtRKC7apgAyAd5uUjN3L4",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/ab67616d0000b273b8ca9830e6849d80b41ef109",
"width": 640
},
{
"height": 300,
"url": "https://i.scdn.co/image/ab67616d00001e02b8ca9830e6849d80b41ef109",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab67616d00004851b8ca9830e6849d80b41ef109",
"width": 64
}
],
"name": "Zürcher Jugendblasorchester U25",
"popularity": 1,
"type": "artist",
"uri": "spotify:artist:4MtRKC7apgAyAd5uUjN3L4"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/18JD8DVlD1fakDAw7E9LFC"
},
"followers": {
"href": null,
"total": 137412
},
"genres": [
"bubblegum dance",
"eurodance",
"europop",
"hip house"
],
"href": "https://api.spotify.com/v1/artists/18JD8DVlD1fakDAw7E9LFC",
"id": "18JD8DVlD1fakDAw7E9LFC",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/c4fdb52d1be39038a8001116929044415fbd8962",
"width": 640
},
{
"height": 320,
"url": "https://i.scdn.co/image/54a2ea5b22f2966c5d30ba2aa5d5589adfe023ef",
"width": 320
},
{
"height": 160,
"url": "https://i.scdn.co/image/c11fdfd488dcf99e8b88975bba88205998ee7012",
"width": 160
}
],
"name": "2 Unlimited",
"popularity": 59,
"type": "artist",
"uri": "spotify:artist:18JD8DVlD1fakDAw7E9LFC"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/0goZ9x7MGZF5rlaJOFrj1F"
},
"followers": {
"href": null,
"total": 10
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/0goZ9x7MGZF5rlaJOFrj1F",
"id": "0goZ9x7MGZF5rlaJOFrj1F",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/195ebaebab44986c53d8423155299b47d16652db",
"width": 640
},
{
"height": 320,
"url": "https://i.scdn.co/image/00bc3410ab6f5065625f10d8a1c7a4c4f922e95e",
"width": 320
},
{
"height": 160,
"url": "https://i.scdn.co/image/c0c6bae7ea925c370fb91b2e27f4aa89182f8b3f",
"width": 160
}
],
"name": "24U",
"popularity": 42,
"type": "artist",
"uri": "spotify:artist:0goZ9x7MGZF5rlaJOFrj1F"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/76pyFXpXITp0aRz4j3SyGJ"
},
"followers": {
"href": null,
"total": 318
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/76pyFXpXITp0aRz4j3SyGJ",
"id": "76pyFXpXITp0aRz4j3SyGJ",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/9c72fe64128e7d01d8bae4275401e37a12562b43",
"width": 640
},
{
"height": 320,
"url": "https://i.scdn.co/image/d3a313ef8e07f8ae5bf4a1800690065a7d1001b8",
"width": 320
},
{
"height": 160,
"url": "https://i.scdn.co/image/3430c976f100fc5065b96fb588b3341d568c4f42",
"width": 160
}
],
"name": "L2U",
"popularity": 21,
"type": "artist",
"uri": "spotify:artist:76pyFXpXITp0aRz4j3SyGJ"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/0j5kVHxvTgUN4nBIPKCLRJ"
},
"followers": {
"href": null,
"total": 9504
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/0j5kVHxvTgUN4nBIPKCLRJ",
"id": "0j5kVHxvTgUN4nBIPKCLRJ",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/827f2b45917c1cc7bdc750a86b4f075c85fa615d",
"width": 640
},
{
"height": 320,
"url": "https://i.scdn.co/image/3a16f063bc027a66e29343156be2c206575c773b",
"width": 320
},
{
"height": 160,
"url": "https://i.scdn.co/image/f39027c69b58a49f13a07c778c215cdd592935b9",
"width": 160
}
],
"name": "Never Get Used To People",
"popularity": 46,
"type": "artist",
"uri": "spotify:artist:0j5kVHxvTgUN4nBIPKCLRJ"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/1TxfUEM21kYVWinDMOqWwb"
},
"followers": {
"href": null,
"total": 121
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/1TxfUEM21kYVWinDMOqWwb",
"id": "1TxfUEM21kYVWinDMOqWwb",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/ab67616d0000b27387b97641acd320159865afea",
"width": 640
},
{
"height": 300,
"url": "https://i.scdn.co/image/ab67616d00001e0287b97641acd320159865afea",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab67616d0000485187b97641acd320159865afea",
"width": 64
}
],
"name": "2f U-Flow",
"popularity": 29,
"type": "artist",
"uri": "spotify:artist:1TxfUEM21kYVWinDMOqWwb"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/0iwKcRbay1SnKY1IH8MNL8"
},
"followers": {
"href": null,
"total": 2
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/0iwKcRbay1SnKY1IH8MNL8",
"id": "0iwKcRbay1SnKY1IH8MNL8",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/ab67616d0000b2739664d2726b29a5e642003027",
"width": 640
},
{
"height": 300,
"url": "https://i.scdn.co/image/ab67616d00001e029664d2726b29a5e642003027",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab67616d000048519664d2726b29a5e642003027",
"width": 64
}
],
"name": "y27uri",
"popularity": 30,
"type": "artist",
"uri": "spotify:artist:0iwKcRbay1SnKY1IH8MNL8"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/2wTNs9AmIOv5Fjs66HK1tV"
},
"followers": {
"href": null,
"total": 15791
},
"genres": [
"rhythm game"
],
"href": "https://api.spotify.com/v1/artists/2wTNs9AmIOv5Fjs66HK1tV",
"id": "2wTNs9AmIOv5Fjs66HK1tV",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/d4d7e6f174ee5be4c1099ccbe61220fcae904953",
"width": 640
},
{
"height": 320,
"url": "https://i.scdn.co/image/57a8c4bf2c20aece32d765ce9fc69330dd3cd18f",
"width": 320
},
{
"height": 160,
"url": "https://i.scdn.co/image/1d9e1c6d0aa5f080dbca4fc7d2b5457b5d5d8011",
"width": 160
}
],
"name": "M2U",
"popularity": 41,
"type": "artist",
"uri": "spotify:artist:2wTNs9AmIOv5Fjs66HK1tV"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/1oUiDfTNWZCprR1GeRPs0i"
},
"followers": {
"href": null,
"total": 15485
},
"genres": [
"j-pixie",
"japanese math rock"
],
"href": "https://api.spotify.com/v1/artists/1oUiDfTNWZCprR1GeRPs0i",
"id": "1oUiDfTNWZCprR1GeRPs0i",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/5d40c50ce833008a578fa0c7d92fc65d0f222c54",
"width": 640
},
{
"height": 320,
"url": "https://i.scdn.co/image/0b346e14627b90cd25e9020443122bc32681baed",
"width": 320
},
{
"height": 160,
"url": "https://i.scdn.co/image/f80ef7a4ec092e5bf054bc245b014963561639e5",
"width": 160
}
],
"name": "Lie and a Chameleon",
"popularity": 41,
"type": "artist",
"uri": "spotify:artist:1oUiDfTNWZCprR1GeRPs0i"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/6diA719p2OaW6zQnXCbRO9"
},
"followers": {
"href": null,
"total": 236
},
"genres": [],
"href": "https://api.spotify.com/v1/artists/6diA719p2OaW6zQnXCbRO9",
"id": "6diA719p2OaW6zQnXCbRO9",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/ab67616d0000b2737934fbc7e0876496ee772792",
"width": 640
},
{
"height": 300,
"url": "https://i.scdn.co/image/ab67616d00001e027934fbc7e0876496ee772792",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab67616d000048517934fbc7e0876496ee772792",
"width": 64
}
],
"name": "US Two",
"popularity": 32,
"type": "artist",
"uri": "spotify:artist:6diA719p2OaW6zQnXCbRO9"
}
],
"limit": 20,
"next": "https://api.spotify.com/v1/search?query=U2&type=artist&offset=20&limit=20",
"offset": 0,
"previous": null,
"total": 922
}
}

1
tests/fixtures/symlink vendored Symbolic link
View File

@@ -0,0 +1 @@
index.html

1
tests/fixtures/symlink2dir vendored Symbolic link
View File

@@ -0,0 +1 @@
empty_folder

BIN
tests/fixtures/test.aiff vendored Normal file

Binary file not shown.

BIN
tests/fixtures/test.flac vendored Normal file

Binary file not shown.

6
tests/fixtures/test.lrc vendored Normal file
View File

@@ -0,0 +1,6 @@
[ar:Rick Astley]
[ti:That one song]
[offset:-100]
[lang:eng]
[00:18.80]We're no strangers to love
[00:22.801]You know the rules and so do I

BIN
tests/fixtures/test.m4a vendored Normal file

Binary file not shown.

BIN
tests/fixtures/test.mp3 vendored Normal file

Binary file not shown.

BIN
tests/fixtures/test.ogg vendored Normal file

Binary file not shown.

BIN
tests/fixtures/test.tak vendored Normal file

Binary file not shown.

2
tests/fixtures/test.txt vendored Normal file
View File

@@ -0,0 +1,2 @@
We're no strangers to love
You know the rules and so do I

BIN
tests/fixtures/test.wav vendored Normal file

Binary file not shown.

BIN
tests/fixtures/test.wma vendored Normal file

Binary file not shown.

BIN
tests/fixtures/test.wv vendored Normal file

Binary file not shown.

BIN
tests/fixtures/zero_replaygain.mp3 vendored Normal file

Binary file not shown.