refactor: update scanner, scanner tests, mockfs

closes #165
closes #163
This commit is contained in:
sentriz
2021-11-03 23:05:08 +00:00
parent b07b9a8be6
commit fa587fc7de
64 changed files with 3469 additions and 2373 deletions

View File

@@ -29,6 +29,7 @@ type Controller struct {
*ctrlbase.Controller
CachePath string
CoverCachePath string
PodcastsPath string
Jukebox *jukebox.Jukebox
Scrobblers []scrobble.Scrobbler
Podcasts *podcasts.Podcasts

View File

@@ -2,6 +2,7 @@ package ctrlsubsonic
import (
"context"
"io/ioutil"
"log"
"net/http"
"net/http/httptest"
@@ -16,14 +17,12 @@ import (
"go.senan.xyz/gonic/server/ctrlbase"
"go.senan.xyz/gonic/server/ctrlsubsonic/params"
"go.senan.xyz/gonic/server/db"
"go.senan.xyz/gonic/server/mockfs"
)
var (
testDataDir = "testdata"
testCamelExpr = regexp.MustCompile("([a-z0-9])([A-Z])")
testDBPath = path.Join(testDataDir, "db")
testController *Controller
testDataDir = "testdata"
testCamelExpr = regexp.MustCompile("([a-z0-9])([A-Z])")
)
type queryCase struct {
@@ -53,18 +52,26 @@ func makeHTTPMock(query url.Values) (*httptest.ResponseRecorder, *http.Request)
return rr, req
}
func runQueryCases(t *testing.T, h handlerSubsonic, cases []*queryCase) {
func runQueryCases(t *testing.T, contr *Controller, h handlerSubsonic, cases []*queryCase) {
t.Helper()
for _, qc := range cases {
qc := qc // pin
t.Run(qc.expectPath, func(t *testing.T) {
t.Parallel()
rr, req := makeHTTPMock(qc.params)
testController.H(h).ServeHTTP(rr, req)
contr.H(h).ServeHTTP(rr, req)
body := rr.Body.String()
if status := rr.Code; status != http.StatusOK {
t.Fatalf("didn't give a 200\n%s", body)
}
goldenPath := makeGoldenPath(t.Name())
goldenRegen := os.Getenv("GONIC_REGEN")
if goldenRegen == "*" || (goldenRegen != "" && strings.HasPrefix(t.Name(), goldenRegen)) {
_ = os.WriteFile(goldenPath, []byte(body), 0600)
t.Logf("golden file %q regenerated for %s", goldenPath, t.Name())
t.SkipNow()
}
// read case to differ with handler result
expected, err := jd.ReadJsonFile(goldenPath)
if err != nil {
@@ -88,13 +95,26 @@ func runQueryCases(t *testing.T, h handlerSubsonic, cases []*queryCase) {
}
}
func makeController(t *testing.T) (*Controller, *mockfs.MockFS) { return makec(t, []string{""}) }
func makeControllerRoots(t *testing.T, r []string) (*Controller, *mockfs.MockFS) { return makec(t, r) }
func makec(t *testing.T, roots []string) (*Controller, *mockfs.MockFS) {
t.Helper()
m := mockfs.NewWithDirs(t, roots)
for _, root := range roots {
m.AddItemsPrefixWithCovers(root)
}
m.ScanAndClean()
m.ResetDates()
m.LogAlbums()
base := &ctrlbase.Controller{DB: m.DB()}
return &Controller{Controller: base}, m
}
func TestMain(m *testing.M) {
db, err := db.New(testDBPath)
if err != nil {
log.Fatalf("error opening database: %v\n", err)
}
testController = &Controller{
Controller: &ctrlbase.Controller{DB: db},
}
log.SetOutput(ioutil.Discard)
os.Exit(m.Run())
}

View File

@@ -1,6 +1,7 @@
package ctrlsubsonic
import (
"errors"
"net/http"
"github.com/jinzhu/gorm"
@@ -18,7 +19,7 @@ func (c *Controller) ServeGetBookmarks(r *http.Request) *spec.Response {
Where("user_id=?", user.ID).
Find(&bookmarks).
Error
if gorm.IsRecordNotFoundError(err) {
if errors.Is(err, gorm.ErrRecordNotFound) {
return spec.NewResponse()
}
sub := spec.NewResponse()

View File

@@ -61,7 +61,7 @@ func (c *Controller) ServeGetMusicDirectory(r *http.Request) *spec.Response {
childrenObj := []*spec.TrackChild{}
folder := &db.Album{}
c.DB.First(folder, id.Value)
// ** begin start looking for child childFolders in the current dir
// start looking for child childFolders in the current dir
var childFolders []*db.Album
c.DB.
Where("parent_id=?", id.Value).
@@ -70,7 +70,7 @@ func (c *Controller) ServeGetMusicDirectory(r *http.Request) *spec.Response {
for _, c := range childFolders {
childrenObj = append(childrenObj, spec.NewTCAlbumByFolder(c))
}
// ** begin start looking for child childTracks in the current dir
// start looking for child childTracks in the current dir
var childTracks []*db.Track
c.DB.
Where("album_id=?", id.Value).
@@ -86,7 +86,7 @@ func (c *Controller) ServeGetMusicDirectory(r *http.Request) *spec.Response {
}
childrenObj = append(childrenObj, toAppend)
}
// ** begin respond section
// respond section
sub := spec.NewResponse()
sub.Directory = spec.NewDirectoryByFolder(folder, childrenObj)
return sub
@@ -167,7 +167,7 @@ func (c *Controller) ServeSearchTwo(r *http.Request) *spec.Response {
}
query = fmt.Sprintf("%%%s%%", strings.TrimSuffix(query, "*"))
results := &spec.SearchResultTwo{}
// ** begin search "artists"
// search "artists"
var artists []*db.Album
c.DB.
Where(`
@@ -182,7 +182,7 @@ func (c *Controller) ServeSearchTwo(r *http.Request) *spec.Response {
results.Artists = append(results.Artists,
spec.NewDirectoryByFolder(a, nil))
}
// ** begin search "albums"
// search "albums"
var albums []*db.Album
c.DB.
Where(`
@@ -196,7 +196,7 @@ func (c *Controller) ServeSearchTwo(r *http.Request) *spec.Response {
for _, a := range albums {
results.Albums = append(results.Albums, spec.NewTCAlbumByFolder(a))
}
// ** begin search tracks
// search tracks
var tracks []*db.Track
c.DB.
Preload("Album").

View File

@@ -8,20 +8,30 @@ import (
)
func TestGetIndexes(t *testing.T) {
runQueryCases(t, testController.ServeGetIndexes, []*queryCase{
contr, m := makeControllerRoots(t, []string{"m-0", "m-1"})
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeGetIndexes, []*queryCase{
{url.Values{}, "no_args", false},
})
}
func TestGetMusicDirectory(t *testing.T) {
runQueryCases(t, testController.ServeGetMusicDirectory, []*queryCase{
contr, m := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeGetMusicDirectory, []*queryCase{
{url.Values{"id": {"al-2"}}, "without_tracks", false},
{url.Values{"id": {"al-3"}}, "with_tracks", false},
})
}
func TestGetAlbumList(t *testing.T) {
runQueryCases(t, testController.ServeGetAlbumList, []*queryCase{
t.Parallel()
contr, m := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeGetAlbumList, []*queryCase{
{url.Values{"type": {"alphabeticalByArtist"}}, "alpha_artist", false},
{url.Values{"type": {"alphabeticalByName"}}, "alpha_name", false},
{url.Values{"type": {"newest"}}, "newest", false},
@@ -30,9 +40,13 @@ func TestGetAlbumList(t *testing.T) {
}
func TestSearchTwo(t *testing.T) {
runQueryCases(t, testController.ServeSearchTwo, []*queryCase{
{url.Values{"query": {"13"}}, "q_13", false},
{url.Values{"query": {"ani"}}, "q_ani", false},
{url.Values{"query": {"cert"}}, "q_cert", false},
t.Parallel()
contr, m := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeSearchTwo, []*queryCase{
{url.Values{"query": {"art"}}, "q_art", false},
{url.Values{"query": {"alb"}}, "q_alb", false},
{url.Values{"query": {"tra"}}, "q_tra", false},
})
}

View File

@@ -1,6 +1,7 @@
package ctrlsubsonic
import (
"errors"
"fmt"
"net/http"
"strings"
@@ -88,7 +89,7 @@ func (c *Controller) ServeGetAlbum(r *http.Request) *spec.Response {
}).
First(album, id.Value).
Error
if gorm.IsRecordNotFoundError(err) {
if errors.Is(err, gorm.ErrRecordNotFound) {
return spec.NewError(10, "couldn't find an album with that id")
}
sub := spec.NewResponse()
@@ -174,7 +175,7 @@ func (c *Controller) ServeSearchThree(r *http.Request) *spec.Response {
query = fmt.Sprintf("%%%s%%",
strings.TrimSuffix(query, "*"))
results := &spec.SearchResultThree{}
// ** begin search "artists"
// search "artists"
var artists []*db.Artist
c.DB.
Where("name LIKE ? OR name_u_dec LIKE ?",
@@ -186,7 +187,7 @@ func (c *Controller) ServeSearchThree(r *http.Request) *spec.Response {
results.Artists = append(results.Artists,
spec.NewArtistByTags(a))
}
// ** begin search "albums"
// search "albums"
var albums []*db.Album
c.DB.
Preload("TagArtist").
@@ -199,7 +200,7 @@ func (c *Controller) ServeSearchThree(r *http.Request) *spec.Response {
results.Albums = append(results.Albums,
spec.NewAlbumByTags(a, a.TagArtist))
}
// ** begin search tracks
// search tracks
var tracks []*db.Track
c.DB.
Preload("Album").
@@ -223,7 +224,7 @@ func (c *Controller) ServeGetArtistInfoTwo(r *http.Request) *spec.Response {
if err != nil {
return spec.NewError(10, "please provide an `id` parameter")
}
apiKey := c.DB.GetSetting("lastfm_api_key")
apiKey, _ := c.DB.GetSetting("lastfm_api_key")
if apiKey == "" {
sub := spec.NewResponse()
sub.ArtistInfoTwo = &spec.ArtistInfo{}
@@ -234,7 +235,7 @@ func (c *Controller) ServeGetArtistInfoTwo(r *http.Request) *spec.Response {
Where("id=?", id.Value).
Find(artist).
Error
if gorm.IsRecordNotFoundError(err) {
if errors.Is(err, gorm.ErrRecordNotFound) {
return spec.NewError(70, "artist with id `%s` not found", id)
}
info, err := lastfm.ArtistGetInfo(apiKey, artist)
@@ -271,7 +272,7 @@ func (c *Controller) ServeGetArtistInfoTwo(r *http.Request) *spec.Response {
Group("artists.id").
Find(artist).
Error
if gorm.IsRecordNotFoundError(err) && !inclNotPresent {
if errors.Is(err, gorm.ErrRecordNotFound) && !inclNotPresent {
continue
}
similar := &spec.SimilarArtist{

View File

@@ -6,13 +6,21 @@ import (
)
func TestGetArtists(t *testing.T) {
runQueryCases(t, testController.ServeGetArtists, []*queryCase{
t.Parallel()
contr, m := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeGetArtists, []*queryCase{
{url.Values{}, "no_args", false},
})
}
func TestGetArtist(t *testing.T) {
runQueryCases(t, testController.ServeGetArtist, []*queryCase{
t.Parallel()
contr, m := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeGetArtist, []*queryCase{
{url.Values{"id": {"ar-1"}}, "id_one", false},
{url.Values{"id": {"ar-2"}}, "id_two", false},
{url.Values{"id": {"ar-3"}}, "id_three", false},
@@ -20,14 +28,22 @@ func TestGetArtist(t *testing.T) {
}
func TestGetAlbum(t *testing.T) {
runQueryCases(t, testController.ServeGetAlbum, []*queryCase{
t.Parallel()
contr, m := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeGetAlbum, []*queryCase{
{url.Values{"id": {"al-2"}}, "without_cover", false},
{url.Values{"id": {"al-3"}}, "with_cover", false},
})
}
func TestGetAlbumListTwo(t *testing.T) {
runQueryCases(t, testController.ServeGetAlbumListTwo, []*queryCase{
t.Parallel()
contr, m := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeGetAlbumListTwo, []*queryCase{
{url.Values{"type": {"alphabeticalByArtist"}}, "alpha_artist", false},
{url.Values{"type": {"alphabeticalByName"}}, "alpha_name", false},
{url.Values{"type": {"newest"}}, "newest", false},
@@ -36,9 +52,13 @@ func TestGetAlbumListTwo(t *testing.T) {
}
func TestSearchThree(t *testing.T) {
runQueryCases(t, testController.ServeSearchThree, []*queryCase{
{url.Values{"query": {"13"}}, "q_13", false},
{url.Values{"query": {"ani"}}, "q_ani", false},
{url.Values{"query": {"cert"}}, "q_cert", false},
t.Parallel()
contr, m := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeSearchThree, []*queryCase{
{url.Values{"query": {"art"}}, "q_art", false},
{url.Values{"query": {"alb"}}, "q_alb", false},
{url.Values{"query": {"tit"}}, "q_tra", false},
})
}

View File

@@ -1,6 +1,7 @@
package ctrlsubsonic
import (
"errors"
"log"
"net/http"
"time"
@@ -80,7 +81,7 @@ func (c *Controller) ServeGetMusicFolders(r *http.Request) *spec.Response {
func (c *Controller) ServeStartScan(r *http.Request) *spec.Response {
go func() {
if err := c.Scanner.Start(scanner.ScanOptions{}); err != nil {
if err := c.Scanner.ScanAndClean(scanner.ScanOptions{}); err != nil {
log.Printf("error while scanning: %v\n", err)
}
}()
@@ -95,7 +96,7 @@ func (c *Controller) ServeGetScanStatus(r *http.Request) *spec.Response {
sub := spec.NewResponse()
sub.ScanStatus = &spec.ScanStatus{
Scanning: scanner.IsScanning(),
Scanning: c.Scanner.IsScanning(),
Count: trackCount,
}
return sub
@@ -129,7 +130,7 @@ func (c *Controller) ServeGetPlayQueue(r *http.Request) *spec.Response {
Where("user_id=?", user.ID).
Find(&queue).
Error
if gorm.IsRecordNotFoundError(err) {
if errors.Is(err, gorm.ErrRecordNotFound) {
return spec.NewResponse()
}
sub := spec.NewResponse()
@@ -188,7 +189,7 @@ func (c *Controller) ServeGetSong(r *http.Request) *spec.Response {
Preload("Album").
First(track).
Error
if gorm.IsRecordNotFoundError(err) {
if errors.Is(err, gorm.ErrRecordNotFound) {
return spec.NewError(10, "couldn't find a track with that id")
}
sub := spec.NewResponse()

View File

@@ -1,6 +1,7 @@
package ctrlsubsonic
import (
"errors"
"log"
"net/http"
"sort"
@@ -33,7 +34,7 @@ func playlistRender(c *Controller, playlist *db.Playlist) *spec.Playlist {
Preload("Album").
Find(&track).
Error
if gorm.IsRecordNotFoundError(err) {
if errors.Is(err, gorm.ErrRecordNotFound) {
log.Printf("wasn't able to find track with id %d", id)
continue
}
@@ -68,7 +69,7 @@ func (c *Controller) ServeGetPlaylist(r *http.Request) *spec.Response {
Where("id=?", playlistID).
Find(&playlist).
Error
if gorm.IsRecordNotFoundError(err) {
if errors.Is(err, gorm.ErrRecordNotFound) {
return spec.NewError(70, "playlist with id `%d` not found", playlistID)
}
sub := spec.NewResponse()

View File

@@ -173,7 +173,7 @@ func (c *Controller) ServeGetCoverArt(w http.ResponseWriter, r *http.Request) *s
_, err = os.Stat(cachePath)
switch {
case os.IsNotExist(err):
coverPath, err := coverGetPath(c.DB, c.MusicPath, c.Podcasts.PodcastBasePath, id)
coverPath, err := coverGetPath(c.DB, c.PodcastsPath, id)
if err != nil {
return spec.NewError(10, "couldn't find cover `%s`: %v", id, err)
}
@@ -208,7 +208,7 @@ func (c *Controller) ServeStream(w http.ResponseWriter, r *http.Request) *spec.R
case specid.PodcastEpisode:
podcast, err := streamGetPodcast(c.DB, id.Value)
audioFile = podcast
audioPath = path.Join(c.Podcasts.PodcastBasePath, podcast.Path)
audioPath = path.Join(c.PodcastsPath, podcast.Path)
if err != nil {
return spec.NewError(70, "podcast with id `%s` was not found", id)
}
@@ -285,7 +285,7 @@ func (c *Controller) ServeDownload(w http.ResponseWriter, r *http.Request) *spec
case specid.PodcastEpisode:
podcast, err := streamGetPodcast(c.DB, id.Value)
audioFile = podcast
filePath = path.Join(c.Podcasts.PodcastBasePath, podcast.Path)
filePath = path.Join(c.PodcastsPath, podcast.Path)
if err != nil {
return spec.NewError(70, "podcast with id `%s` was not found", id)
}

Binary file not shown.

View File

@@ -6,133 +6,121 @@
"albumList": {
"album": [
{
"id": "al-8",
"coverArt": "al-8",
"artist": "13th Floor Lowervators",
"title": "(1967) Easter Nowhere",
"id": "al-2",
"coverArt": "al-2",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "album-0",
"album": "",
"parent": "al-7",
"parent": "al-1",
"isDir": true,
"name": "",
"songCount": 10,
"duration": 2609,
"created": "2019-06-13T12:57:28.850090338+01:00"
},
{
"id": "al-9",
"coverArt": "al-9",
"artist": "13th Floor Lowervators",
"title": "(1966) The Psychedelic Sounds of the 13th Floor Elevators",
"album": "",
"parent": "al-7",
"isDir": true,
"name": "",
"songCount": 21,
"duration": 4222,
"created": "2019-06-13T12:57:24.306717554+01:00"
},
{
"id": "al-5",
"coverArt": "al-5",
"artist": "A Certain Ratio",
"title": "(1994) The Graveyard and the Ballroom",
"album": "",
"parent": "al-4",
"isDir": true,
"name": "",
"songCount": 14,
"duration": 2738,
"created": "2019-06-05T17:46:37.675917974+01:00"
},
{
"id": "al-6",
"artist": "A Certain Ratio",
"title": "(1981) To EachOTHER.",
"album": "",
"parent": "al-4",
"isDir": true,
"name": "",
"songCount": 9,
"duration": 2801,
"created": "2019-05-23T15:12:02.921473302+01:00"
},
{
"id": "al-21",
"coverArt": "al-21",
"artist": "Captain Beefheart",
"title": "(1970) Lick My Decals Off, Bitch",
"album": "",
"parent": "al-20",
"isDir": true,
"name": "",
"songCount": 15,
"duration": 2324,
"created": "2019-06-10T19:26:30.944742894+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-3",
"coverArt": "al-3",
"artist": "Jah Wobble, The Edge, Holger Czukay",
"title": "(1983) Snake Charmer",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "album-1",
"album": "",
"parent": "al-2",
"parent": "al-1",
"isDir": true,
"name": "",
"songCount": 5,
"duration": 1871,
"created": "2019-05-16T22:10:52+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-16",
"coverArt": "al-16",
"artist": "Swell Maps",
"title": "(1980) Jane From Occupied Europe",
"id": "al-4",
"coverArt": "al-4",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"album": "",
"parent": "al-15",
"parent": "al-1",
"isDir": true,
"name": "",
"songCount": 16,
"duration": 3040,
"created": "2019-04-30T16:48:48+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-17",
"coverArt": "al-17",
"artist": "Swell Maps",
"title": "(1979) A Trip to Marineville",
"id": "al-7",
"coverArt": "al-7",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "album-0",
"album": "",
"parent": "al-15",
"parent": "al-6",
"isDir": true,
"name": "",
"songCount": 18,
"duration": 3266,
"created": "2019-04-30T16:48:48+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-19",
"coverArt": "al-19",
"artist": "Ten Years After",
"title": "(1967) Ten Years After",
"id": "al-8",
"coverArt": "al-8",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "album-1",
"album": "",
"parent": "al-18",
"parent": "al-6",
"isDir": true,
"name": "",
"songCount": 15,
"duration": 3812,
"created": "2019-04-30T16:48:30+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-9",
"coverArt": "al-9",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"album": "",
"parent": "al-6",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
},
{
"id": "al-11",
"coverArt": "al-11",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "album-0",
"album": "",
"parent": "al-10",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
},
{
"id": "al-12",
"coverArt": "al-12",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "album-1",
"album": "",
"parent": "al-10",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
},
{
"id": "al-13",
"coverArt": "al-13",
"artist": "There",
"title": "(2010) Anika",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"album": "",
"parent": "al-12",
"parent": "al-10",
"isDir": true,
"name": "",
"songCount": 9,
"duration": 2169,
"created": "2019-05-23T15:12:02.921473302+01:00"
"songCount": 3,
"duration": 300
}
]
}

View File

@@ -6,133 +6,121 @@
"albumList": {
"album": [
{
"id": "al-9",
"coverArt": "al-9",
"artist": "13th Floor Lowervators",
"title": "(1966) The Psychedelic Sounds of the 13th Floor Elevators",
"id": "al-2",
"coverArt": "al-2",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "album-0",
"album": "",
"parent": "al-7",
"parent": "al-1",
"isDir": true,
"name": "",
"songCount": 21,
"duration": 4222,
"created": "2019-06-13T12:57:24.306717554+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-8",
"coverArt": "al-8",
"artist": "13th Floor Lowervators",
"title": "(1967) Easter Nowhere",
"id": "al-7",
"coverArt": "al-7",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "album-0",
"album": "",
"parent": "al-7",
"parent": "al-6",
"isDir": true,
"name": "",
"songCount": 10,
"duration": 2609,
"created": "2019-06-13T12:57:28.850090338+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-19",
"coverArt": "al-19",
"artist": "Ten Years After",
"title": "(1967) Ten Years After",
"id": "al-11",
"coverArt": "al-11",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "album-0",
"album": "",
"parent": "al-18",
"parent": "al-10",
"isDir": true,
"name": "",
"songCount": 15,
"duration": 3812,
"created": "2019-04-30T16:48:30+01:00"
},
{
"id": "al-21",
"coverArt": "al-21",
"artist": "Captain Beefheart",
"title": "(1970) Lick My Decals Off, Bitch",
"album": "",
"parent": "al-20",
"isDir": true,
"name": "",
"songCount": 15,
"duration": 2324,
"created": "2019-06-10T19:26:30.944742894+01:00"
},
{
"id": "al-17",
"coverArt": "al-17",
"artist": "Swell Maps",
"title": "(1979) A Trip to Marineville",
"album": "",
"parent": "al-15",
"isDir": true,
"name": "",
"songCount": 18,
"duration": 3266,
"created": "2019-04-30T16:48:48+01:00"
},
{
"id": "al-16",
"coverArt": "al-16",
"artist": "Swell Maps",
"title": "(1980) Jane From Occupied Europe",
"album": "",
"parent": "al-15",
"isDir": true,
"name": "",
"songCount": 16,
"duration": 3040,
"created": "2019-04-30T16:48:48+01:00"
},
{
"id": "al-6",
"artist": "A Certain Ratio",
"title": "(1981) To EachOTHER.",
"album": "",
"parent": "al-4",
"isDir": true,
"name": "",
"songCount": 9,
"duration": 2801,
"created": "2019-05-23T15:12:02.921473302+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-3",
"coverArt": "al-3",
"artist": "Jah Wobble, The Edge, Holger Czukay",
"title": "(1983) Snake Charmer",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "album-1",
"album": "",
"parent": "al-2",
"parent": "al-1",
"isDir": true,
"name": "",
"songCount": 5,
"duration": 1871,
"created": "2019-05-16T22:10:52+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-5",
"coverArt": "al-5",
"artist": "A Certain Ratio",
"title": "(1994) The Graveyard and the Ballroom",
"id": "al-8",
"coverArt": "al-8",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "album-1",
"album": "",
"parent": "al-4",
"parent": "al-6",
"isDir": true,
"name": "",
"songCount": 14,
"duration": 2738,
"created": "2019-06-05T17:46:37.675917974+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-12",
"coverArt": "al-12",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "album-1",
"album": "",
"parent": "al-10",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
},
{
"id": "al-4",
"coverArt": "al-4",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"album": "",
"parent": "al-1",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
},
{
"id": "al-9",
"coverArt": "al-9",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"album": "",
"parent": "al-6",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
},
{
"id": "al-13",
"coverArt": "al-13",
"artist": "There",
"title": "(2010) Anika",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"album": "",
"parent": "al-12",
"parent": "al-10",
"isDir": true,
"name": "",
"songCount": 9,
"duration": 2169,
"created": "2019-05-23T15:12:02.921473302+01:00"
"songCount": 3,
"duration": 300
}
]
}

View File

@@ -6,133 +6,121 @@
"albumList": {
"album": [
{
"id": "al-8",
"coverArt": "al-8",
"artist": "13th Floor Lowervators",
"title": "(1967) Easter Nowhere",
"id": "al-2",
"coverArt": "al-2",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "album-0",
"album": "",
"parent": "al-7",
"parent": "al-1",
"isDir": true,
"name": "",
"songCount": 10,
"duration": 2609,
"created": "2019-06-13T12:57:28.850090338+01:00"
},
{
"id": "al-9",
"coverArt": "al-9",
"artist": "13th Floor Lowervators",
"title": "(1966) The Psychedelic Sounds of the 13th Floor Elevators",
"album": "",
"parent": "al-7",
"isDir": true,
"name": "",
"songCount": 21,
"duration": 4222,
"created": "2019-06-13T12:57:24.306717554+01:00"
},
{
"id": "al-21",
"coverArt": "al-21",
"artist": "Captain Beefheart",
"title": "(1970) Lick My Decals Off, Bitch",
"album": "",
"parent": "al-20",
"isDir": true,
"name": "",
"songCount": 15,
"duration": 2324,
"created": "2019-06-10T19:26:30.944742894+01:00"
},
{
"id": "al-5",
"coverArt": "al-5",
"artist": "A Certain Ratio",
"title": "(1994) The Graveyard and the Ballroom",
"album": "",
"parent": "al-4",
"isDir": true,
"name": "",
"songCount": 14,
"duration": 2738,
"created": "2019-06-05T17:46:37.675917974+01:00"
},
{
"id": "al-6",
"artist": "A Certain Ratio",
"title": "(1981) To EachOTHER.",
"album": "",
"parent": "al-4",
"isDir": true,
"name": "",
"songCount": 9,
"duration": 2801,
"created": "2019-05-23T15:12:02.921473302+01:00"
},
{
"id": "al-13",
"coverArt": "al-13",
"artist": "There",
"title": "(2010) Anika",
"album": "",
"parent": "al-12",
"isDir": true,
"name": "",
"songCount": 9,
"duration": 2169,
"created": "2019-05-23T15:12:02.921473302+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-3",
"coverArt": "al-3",
"artist": "Jah Wobble, The Edge, Holger Czukay",
"title": "(1983) Snake Charmer",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "album-1",
"album": "",
"parent": "al-2",
"parent": "al-1",
"isDir": true,
"name": "",
"songCount": 5,
"duration": 1871,
"created": "2019-05-16T22:10:52+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-16",
"coverArt": "al-16",
"artist": "Swell Maps",
"title": "(1980) Jane From Occupied Europe",
"id": "al-4",
"coverArt": "al-4",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"album": "",
"parent": "al-15",
"parent": "al-1",
"isDir": true,
"name": "",
"songCount": 16,
"duration": 3040,
"created": "2019-04-30T16:48:48+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-17",
"coverArt": "al-17",
"artist": "Swell Maps",
"title": "(1979) A Trip to Marineville",
"id": "al-7",
"coverArt": "al-7",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "album-0",
"album": "",
"parent": "al-15",
"parent": "al-6",
"isDir": true,
"name": "",
"songCount": 18,
"duration": 3266,
"created": "2019-04-30T16:48:48+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-19",
"coverArt": "al-19",
"artist": "Ten Years After",
"title": "(1967) Ten Years After",
"id": "al-8",
"coverArt": "al-8",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "album-1",
"album": "",
"parent": "al-18",
"parent": "al-6",
"isDir": true,
"name": "",
"songCount": 15,
"duration": 3812,
"created": "2019-04-30T16:48:30+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-9",
"coverArt": "al-9",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"album": "",
"parent": "al-6",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
},
{
"id": "al-11",
"coverArt": "al-11",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "album-0",
"album": "",
"parent": "al-10",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
},
{
"id": "al-12",
"coverArt": "al-12",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "album-1",
"album": "",
"parent": "al-10",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
},
{
"id": "al-13",
"coverArt": "al-13",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"album": "",
"parent": "al-10",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
}
]
}

View File

@@ -6,133 +6,121 @@
"albumList": {
"album": [
{
"id": "al-19",
"coverArt": "al-19",
"artist": "Ten Years After",
"title": "(1967) Ten Years After",
"id": "al-2",
"coverArt": "al-2",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "album-0",
"album": "",
"parent": "al-18",
"parent": "al-1",
"isDir": true,
"name": "",
"songCount": 15,
"duration": 3812,
"created": "2019-04-30T16:48:30+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-21",
"coverArt": "al-21",
"artist": "Captain Beefheart",
"title": "(1970) Lick My Decals Off, Bitch",
"id": "al-7",
"coverArt": "al-7",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "album-0",
"album": "",
"parent": "al-20",
"parent": "al-6",
"isDir": true,
"name": "",
"songCount": 15,
"duration": 2324,
"created": "2019-06-10T19:26:30.944742894+01:00"
},
{
"id": "al-17",
"coverArt": "al-17",
"artist": "Swell Maps",
"title": "(1979) A Trip to Marineville",
"album": "",
"parent": "al-15",
"isDir": true,
"name": "",
"songCount": 18,
"duration": 3266,
"created": "2019-04-30T16:48:48+01:00"
},
{
"id": "al-6",
"artist": "A Certain Ratio",
"title": "(1981) To EachOTHER.",
"album": "",
"parent": "al-4",
"isDir": true,
"name": "",
"songCount": 9,
"duration": 2801,
"created": "2019-05-23T15:12:02.921473302+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-13",
"coverArt": "al-13",
"artist": "There",
"title": "(2010) Anika",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"album": "",
"parent": "al-12",
"parent": "al-10",
"isDir": true,
"name": "",
"songCount": 9,
"duration": 2169,
"created": "2019-05-23T15:12:02.921473302+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-8",
"coverArt": "al-8",
"artist": "13th Floor Lowervators",
"title": "(1967) Easter Nowhere",
"id": "al-11",
"coverArt": "al-11",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "album-0",
"album": "",
"parent": "al-7",
"parent": "al-10",
"isDir": true,
"name": "",
"songCount": 10,
"duration": 2609,
"created": "2019-06-13T12:57:28.850090338+01:00"
},
{
"id": "al-9",
"coverArt": "al-9",
"artist": "13th Floor Lowervators",
"title": "(1966) The Psychedelic Sounds of the 13th Floor Elevators",
"album": "",
"parent": "al-7",
"isDir": true,
"name": "",
"songCount": 21,
"duration": 4222,
"created": "2019-06-13T12:57:24.306717554+01:00"
},
{
"id": "al-5",
"coverArt": "al-5",
"artist": "A Certain Ratio",
"title": "(1994) The Graveyard and the Ballroom",
"album": "",
"parent": "al-4",
"isDir": true,
"name": "",
"songCount": 14,
"duration": 2738,
"created": "2019-06-05T17:46:37.675917974+01:00"
},
{
"id": "al-16",
"coverArt": "al-16",
"artist": "Swell Maps",
"title": "(1980) Jane From Occupied Europe",
"album": "",
"parent": "al-15",
"isDir": true,
"name": "",
"songCount": 16,
"duration": 3040,
"created": "2019-04-30T16:48:48+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-3",
"coverArt": "al-3",
"artist": "Jah Wobble, The Edge, Holger Czukay",
"title": "(1983) Snake Charmer",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "album-1",
"album": "",
"parent": "al-2",
"parent": "al-1",
"isDir": true,
"name": "",
"songCount": 5,
"duration": 1871,
"created": "2019-05-16T22:10:52+01:00"
"songCount": 3,
"duration": 300
},
{
"id": "al-12",
"coverArt": "al-12",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "album-1",
"album": "",
"parent": "al-10",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
},
{
"id": "al-8",
"coverArt": "al-8",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "album-1",
"album": "",
"parent": "al-6",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
},
{
"id": "al-4",
"coverArt": "al-4",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"album": "",
"parent": "al-1",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
},
{
"id": "al-9",
"coverArt": "al-9",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"album": "",
"parent": "al-6",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
}
]
}

View File

@@ -6,133 +6,121 @@
"albumList2": {
"album": [
{
"id": "al-8",
"coverArt": "al-8",
"artistId": "ar-3",
"artist": "13th Floor Elevators",
"id": "al-2",
"coverArt": "al-2",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Easter Everywhere",
"songCount": 10,
"duration": 2609,
"created": "2019-06-13T12:57:28.850090338+01:00",
"year": 1967
},
{
"id": "al-9",
"coverArt": "al-9",
"artistId": "ar-3",
"artist": "13th Floor Elevators",
"title": "",
"album": "",
"name": "The Psychedelic Sounds of the 13th Floor Elevators",
"songCount": 21,
"duration": 4222,
"created": "2019-06-13T12:57:24.306717554+01:00",
"year": 1966
},
{
"id": "al-5",
"coverArt": "al-5",
"artistId": "ar-2",
"artist": "A Certain Ratio",
"title": "",
"album": "",
"name": "The Graveyard and the Ballroom",
"songCount": 14,
"duration": 2738,
"created": "2019-06-05T17:46:37.675917974+01:00",
"year": 1994
},
{
"id": "al-6",
"artistId": "ar-2",
"artist": "A Certain Ratio",
"title": "",
"album": "",
"name": "To Each...",
"songCount": 9,
"duration": 2801,
"created": "2019-05-23T15:12:02.921473302+01:00",
"year": 1981
},
{
"id": "al-13",
"coverArt": "al-13",
"artistId": "ar-4",
"artist": "Anikas",
"title": "",
"album": "",
"name": "Anika",
"songCount": 9,
"duration": 2169,
"created": "2019-05-23T15:12:02.921473302+01:00",
"year": 2010
},
{
"id": "al-21",
"coverArt": "al-21",
"artistId": "ar-7",
"artist": "Captain Beefheart & His Magic Band",
"title": "",
"album": "",
"name": "Lick My Decals Off, Baby",
"songCount": 15,
"duration": 2324,
"created": "2019-06-10T19:26:30.944742894+01:00",
"year": 1970
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-3",
"coverArt": "al-3",
"artistId": "ar-1",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Snake Charmer",
"songCount": 5,
"duration": 1871,
"created": "2019-05-16T22:10:52+01:00",
"year": 1983
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-16",
"coverArt": "al-16",
"artistId": "ar-5",
"artist": "Swell Maps",
"id": "al-4",
"coverArt": "al-4",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Jane From Occupied Europe",
"songCount": 16,
"duration": 3040,
"created": "2019-04-30T16:48:48+01:00",
"year": 1980
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-17",
"coverArt": "al-17",
"artistId": "ar-5",
"artist": "Swell Maps",
"id": "al-7",
"coverArt": "al-7",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "A Trip to Marineville",
"songCount": 18,
"duration": 3266,
"created": "2019-04-30T16:48:48+01:00",
"year": 1979
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-19",
"coverArt": "al-19",
"artistId": "ar-6",
"artist": "Ten Years After",
"id": "al-8",
"coverArt": "al-8",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Ten Years After",
"songCount": 15,
"duration": 3812,
"created": "2019-04-30T16:48:30+01:00",
"year": 1967
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-9",
"coverArt": "al-9",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-11",
"coverArt": "al-11",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-12",
"coverArt": "al-12",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-13",
"coverArt": "al-13",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
}
]
}

View File

@@ -6,133 +6,121 @@
"albumList2": {
"album": [
{
"id": "al-17",
"coverArt": "al-17",
"artistId": "ar-5",
"artist": "Swell Maps",
"id": "al-2",
"coverArt": "al-2",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "A Trip to Marineville",
"songCount": 18,
"duration": 3266,
"created": "2019-04-30T16:48:48+01:00",
"year": 1979
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-13",
"coverArt": "al-13",
"artistId": "ar-4",
"artist": "Anikas",
"id": "al-7",
"coverArt": "al-7",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Anika",
"songCount": 9,
"duration": 2169,
"created": "2019-05-23T15:12:02.921473302+01:00",
"year": 2010
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-8",
"coverArt": "al-8",
"id": "al-11",
"coverArt": "al-11",
"artistId": "ar-3",
"artist": "13th Floor Elevators",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Easter Everywhere",
"songCount": 10,
"duration": 2609,
"created": "2019-06-13T12:57:28.850090338+01:00",
"year": 1967
},
{
"id": "al-16",
"coverArt": "al-16",
"artistId": "ar-5",
"artist": "Swell Maps",
"title": "",
"album": "",
"name": "Jane From Occupied Europe",
"songCount": 16,
"duration": 3040,
"created": "2019-04-30T16:48:48+01:00",
"year": 1980
},
{
"id": "al-21",
"coverArt": "al-21",
"artistId": "ar-7",
"artist": "Captain Beefheart & His Magic Band",
"title": "",
"album": "",
"name": "Lick My Decals Off, Baby",
"songCount": 15,
"duration": 2324,
"created": "2019-06-10T19:26:30.944742894+01:00",
"year": 1970
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-3",
"coverArt": "al-3",
"artistId": "ar-1",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Snake Charmer",
"songCount": 5,
"duration": 1871,
"created": "2019-05-16T22:10:52+01:00",
"year": 1983
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-19",
"coverArt": "al-19",
"artistId": "ar-6",
"artist": "Ten Years After",
"title": "",
"album": "",
"name": "Ten Years After",
"songCount": 15,
"duration": 3812,
"created": "2019-04-30T16:48:30+01:00",
"year": 1967
},
{
"id": "al-5",
"coverArt": "al-5",
"id": "al-8",
"coverArt": "al-8",
"artistId": "ar-2",
"artist": "A Certain Ratio",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "The Graveyard and the Ballroom",
"songCount": 14,
"duration": 2738,
"created": "2019-06-05T17:46:37.675917974+01:00",
"year": 1994
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-12",
"coverArt": "al-12",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-4",
"coverArt": "al-4",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-9",
"coverArt": "al-9",
"artistId": "ar-3",
"artist": "13th Floor Elevators",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "The Psychedelic Sounds of the 13th Floor Elevators",
"songCount": 21,
"duration": 4222,
"created": "2019-06-13T12:57:24.306717554+01:00",
"year": 1966
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-6",
"artistId": "ar-2",
"artist": "A Certain Ratio",
"id": "al-13",
"coverArt": "al-13",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "To Each...",
"songCount": 9,
"duration": 2801,
"created": "2019-05-23T15:12:02.921473302+01:00",
"year": 1981
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
}
]
}

View File

@@ -6,133 +6,121 @@
"albumList2": {
"album": [
{
"id": "al-8",
"coverArt": "al-8",
"artistId": "ar-3",
"artist": "13th Floor Elevators",
"id": "al-2",
"coverArt": "al-2",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Easter Everywhere",
"songCount": 10,
"duration": 2609,
"created": "2019-06-13T12:57:28.850090338+01:00",
"year": 1967
},
{
"id": "al-9",
"coverArt": "al-9",
"artistId": "ar-3",
"artist": "13th Floor Elevators",
"title": "",
"album": "",
"name": "The Psychedelic Sounds of the 13th Floor Elevators",
"songCount": 21,
"duration": 4222,
"created": "2019-06-13T12:57:24.306717554+01:00",
"year": 1966
},
{
"id": "al-21",
"coverArt": "al-21",
"artistId": "ar-7",
"artist": "Captain Beefheart & His Magic Band",
"title": "",
"album": "",
"name": "Lick My Decals Off, Baby",
"songCount": 15,
"duration": 2324,
"created": "2019-06-10T19:26:30.944742894+01:00",
"year": 1970
},
{
"id": "al-5",
"coverArt": "al-5",
"artistId": "ar-2",
"artist": "A Certain Ratio",
"title": "",
"album": "",
"name": "The Graveyard and the Ballroom",
"songCount": 14,
"duration": 2738,
"created": "2019-06-05T17:46:37.675917974+01:00",
"year": 1994
},
{
"id": "al-6",
"artistId": "ar-2",
"artist": "A Certain Ratio",
"title": "",
"album": "",
"name": "To Each...",
"songCount": 9,
"duration": 2801,
"created": "2019-05-23T15:12:02.921473302+01:00",
"year": 1981
},
{
"id": "al-13",
"coverArt": "al-13",
"artistId": "ar-4",
"artist": "Anikas",
"title": "",
"album": "",
"name": "Anika",
"songCount": 9,
"duration": 2169,
"created": "2019-05-23T15:12:02.921473302+01:00",
"year": 2010
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-3",
"coverArt": "al-3",
"artistId": "ar-1",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Snake Charmer",
"songCount": 5,
"duration": 1871,
"created": "2019-05-16T22:10:52+01:00",
"year": 1983
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-16",
"coverArt": "al-16",
"artistId": "ar-5",
"artist": "Swell Maps",
"id": "al-4",
"coverArt": "al-4",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Jane From Occupied Europe",
"songCount": 16,
"duration": 3040,
"created": "2019-04-30T16:48:48+01:00",
"year": 1980
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-17",
"coverArt": "al-17",
"artistId": "ar-5",
"artist": "Swell Maps",
"id": "al-7",
"coverArt": "al-7",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "A Trip to Marineville",
"songCount": 18,
"duration": 3266,
"created": "2019-04-30T16:48:48+01:00",
"year": 1979
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-19",
"coverArt": "al-19",
"artistId": "ar-6",
"artist": "Ten Years After",
"id": "al-8",
"coverArt": "al-8",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Ten Years After",
"songCount": 15,
"duration": 3812,
"created": "2019-04-30T16:48:30+01:00",
"year": 1967
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-9",
"coverArt": "al-9",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-11",
"coverArt": "al-11",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-12",
"coverArt": "al-12",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-13",
"coverArt": "al-13",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
}
]
}

View File

@@ -6,133 +6,121 @@
"albumList2": {
"album": [
{
"id": "al-17",
"coverArt": "al-17",
"artistId": "ar-5",
"artist": "Swell Maps",
"id": "al-3",
"coverArt": "al-3",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "A Trip to Marineville",
"songCount": 18,
"duration": 3266,
"created": "2019-04-30T16:48:48+01:00",
"year": 1979
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-11",
"coverArt": "al-11",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-4",
"coverArt": "al-4",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-9",
"coverArt": "al-9",
"artistId": "ar-3",
"artist": "13th Floor Elevators",
"title": "",
"album": "",
"name": "The Psychedelic Sounds of the 13th Floor Elevators",
"songCount": 21,
"duration": 4222,
"created": "2019-06-13T12:57:24.306717554+01:00",
"year": 1966
},
{
"id": "al-16",
"coverArt": "al-16",
"artistId": "ar-5",
"artist": "Swell Maps",
"title": "",
"album": "",
"name": "Jane From Occupied Europe",
"songCount": 16,
"duration": 3040,
"created": "2019-04-30T16:48:48+01:00",
"year": 1980
},
{
"id": "al-19",
"coverArt": "al-19",
"artistId": "ar-6",
"artist": "Ten Years After",
"title": "",
"album": "",
"name": "Ten Years After",
"songCount": 15,
"duration": 3812,
"created": "2019-04-30T16:48:30+01:00",
"year": 1967
},
{
"id": "al-6",
"artistId": "ar-2",
"artist": "A Certain Ratio",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "To Each...",
"songCount": 9,
"duration": 2801,
"created": "2019-05-23T15:12:02.921473302+01:00",
"year": 1981
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-8",
"coverArt": "al-8",
"artistId": "ar-3",
"artist": "13th Floor Elevators",
"title": "",
"album": "",
"name": "Easter Everywhere",
"songCount": 10,
"duration": 2609,
"created": "2019-06-13T12:57:28.850090338+01:00",
"year": 1967
},
{
"id": "al-21",
"coverArt": "al-21",
"artistId": "ar-7",
"artist": "Captain Beefheart & His Magic Band",
"title": "",
"album": "",
"name": "Lick My Decals Off, Baby",
"songCount": 15,
"duration": 2324,
"created": "2019-06-10T19:26:30.944742894+01:00",
"year": 1970
},
{
"id": "al-5",
"coverArt": "al-5",
"artistId": "ar-2",
"artist": "A Certain Ratio",
"title": "",
"album": "",
"name": "The Graveyard and the Ballroom",
"songCount": 14,
"duration": 2738,
"created": "2019-06-05T17:46:37.675917974+01:00",
"year": 1994
},
{
"id": "al-3",
"coverArt": "al-3",
"id": "al-2",
"coverArt": "al-2",
"artistId": "ar-1",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Snake Charmer",
"songCount": 5,
"duration": 1871,
"created": "2019-05-16T22:10:52+01:00",
"year": 1983
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-13",
"coverArt": "al-13",
"artistId": "ar-4",
"artist": "Anikas",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Anika",
"songCount": 9,
"duration": 2169,
"created": "2019-05-23T15:12:02.921473302+01:00",
"year": 2010
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-8",
"coverArt": "al-8",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-7",
"coverArt": "al-7",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-12",
"coverArt": "al-12",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
}
]
}

View File

@@ -7,129 +7,80 @@
"id": "al-3",
"coverArt": "al-3",
"artistId": "ar-1",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Snake Charmer",
"songCount": 5,
"duration": 1871,
"created": "2019-05-16T22:10:52+01:00",
"year": 1983,
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021,
"song": [
{
"id": "tr-1",
"album": "Snake Charmer",
"id": "tr-4",
"album": "album-1",
"albumId": "al-3",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"artist": "artist-0",
"artistId": "ar-1",
"bitRate": 882,
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-07-08T21:49:40.978045401+01:00",
"duration": 372,
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/01.05 Snake Charmer.flac",
"size": 41274185,
"path": "artist-0/album-1/track-0.flac",
"suffix": "flac",
"title": "Snake Charmer",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 1983
},
{
"id": "tr-3",
"album": "Snake Charmer",
"albumId": "al-3",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"artistId": "ar-1",
"bitRate": 814,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-07-08T21:49:40.981605306+01:00",
"duration": 523,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/02.05 Hold On to Your Dreams.flac",
"size": 53447545,
"suffix": "flac",
"title": "Hold On to Your Dreams",
"track": 2,
"discNumber": 1,
"type": "music",
"year": 1983
},
{
"id": "tr-2",
"album": "Snake Charmer",
"albumId": "al-3",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"artistId": "ar-1",
"bitRate": 745,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-07-08T21:49:40.979981084+01:00",
"duration": 331,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/03.05 It Was a Camel.flac",
"size": 31080508,
"suffix": "flac",
"title": "It Was a Camel",
"track": 3,
"discNumber": 1,
"type": "music",
"year": 1983
"year": 2021
},
{
"id": "tr-5",
"album": "Snake Charmer",
"album": "album-1",
"albumId": "al-3",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"artist": "artist-0",
"artistId": "ar-1",
"bitRate": 976,
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-07-08T21:49:40.984853203+01:00",
"duration": 227,
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/04.05 Sleazy.flac",
"size": 27938750,
"path": "artist-0/album-1/track-1.flac",
"suffix": "flac",
"title": "Sleazy",
"track": 4,
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 1983
"year": 2021
},
{
"id": "tr-4",
"album": "Snake Charmer",
"id": "tr-6",
"album": "album-1",
"albumId": "al-3",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"artist": "artist-0",
"artistId": "ar-1",
"bitRate": 884,
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-07-08T21:49:40.983301328+01:00",
"duration": 418,
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/05.05 Snake Charmer (reprise).flac",
"size": 46427922,
"path": "artist-0/album-1/track-2.flac",
"suffix": "flac",
"title": "Snake Charmer (reprise)",
"track": 5,
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 1983
"year": 2021
}
]
}

View File

@@ -5,12 +5,84 @@
"type": "gonic",
"album": {
"id": "al-2",
"coverArt": "al-2",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "",
"songCount": 0,
"duration": 0,
"created": "2019-05-16T22:10:21+01:00"
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021,
"song": [
{
"id": "tr-1",
"album": "album-0",
"albumId": "al-2",
"artist": "artist-0",
"artistId": "ar-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-2",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-2",
"path": "artist-0/album-0/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-2",
"album": "album-0",
"albumId": "al-2",
"artist": "artist-0",
"artistId": "ar-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-2",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-2",
"path": "artist-0/album-0/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-3",
"album": "album-0",
"albumId": "al-2",
"artist": "artist-0",
"artistId": "ar-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-2",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-2",
"path": "artist-0/album-0/track-2.flac",
"suffix": "flac",
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
}
]
}
}
}

View File

@@ -5,21 +5,47 @@
"type": "gonic",
"artist": {
"id": "ar-1",
"name": "Jah Wobble, The Edge & Holger Czukay",
"albumCount": 1,
"name": "artist-0",
"albumCount": 3,
"album": [
{
"id": "al-2",
"coverArt": "al-2",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-3",
"coverArt": "al-3",
"artistId": "ar-1",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Snake Charmer",
"songCount": 5,
"duration": 1871,
"created": "2019-05-16T22:10:52+01:00",
"year": 1983
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-4",
"coverArt": "al-4",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
}
]
}

View File

@@ -5,34 +5,47 @@
"type": "gonic",
"artist": {
"id": "ar-3",
"name": "13th Floor Elevators",
"albumCount": 2,
"name": "artist-2",
"albumCount": 3,
"album": [
{
"id": "al-8",
"coverArt": "al-8",
"id": "al-11",
"coverArt": "al-11",
"artistId": "ar-3",
"artist": "13th Floor Elevators",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "Easter Everywhere",
"songCount": 10,
"duration": 2609,
"created": "2019-06-13T12:57:28.850090338+01:00",
"year": 1967
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-9",
"coverArt": "al-9",
"id": "al-12",
"coverArt": "al-12",
"artistId": "ar-3",
"artist": "13th Floor Elevators",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "The Psychedelic Sounds of the 13th Floor Elevators",
"songCount": 21,
"duration": 4222,
"created": "2019-06-13T12:57:24.306717554+01:00",
"year": 1966
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-13",
"coverArt": "al-13",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
}
]
}

View File

@@ -5,33 +5,47 @@
"type": "gonic",
"artist": {
"id": "ar-2",
"name": "A Certain Ratio",
"albumCount": 2,
"name": "artist-1",
"albumCount": 3,
"album": [
{
"id": "al-5",
"coverArt": "al-5",
"id": "al-7",
"coverArt": "al-7",
"artistId": "ar-2",
"artist": "A Certain Ratio",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "The Graveyard and the Ballroom",
"songCount": 14,
"duration": 2738,
"created": "2019-06-05T17:46:37.675917974+01:00",
"year": 1994
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-6",
"id": "al-8",
"coverArt": "al-8",
"artistId": "ar-2",
"artist": "A Certain Ratio",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "To Each...",
"songCount": 9,
"duration": 2801,
"created": "2019-05-23T15:12:02.921473302+01:00",
"year": 1981
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-9",
"coverArt": "al-9",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
}
]
}

View File

@@ -6,69 +6,12 @@
"artists": {
"ignoredArticles": "",
"index": [
{
"name": "#",
"artist": [
{
"id": "ar-3",
"name": "13th Floor Elevators",
"albumCount": 2
}
]
},
{
"name": "a",
"artist": [
{
"id": "ar-2",
"name": "A Certain Ratio",
"albumCount": 2
},
{
"id": "ar-4",
"name": "Anikas",
"albumCount": 1
}
]
},
{
"name": "c",
"artist": [
{
"id": "ar-7",
"name": "Captain Beefheart & His Magic Band",
"albumCount": 1
}
]
},
{
"name": "j",
"artist": [
{
"id": "ar-1",
"name": "Jah Wobble, The Edge & Holger Czukay",
"albumCount": 1
}
]
},
{
"name": "s",
"artist": [
{
"id": "ar-5",
"name": "Swell Maps",
"albumCount": 2
}
]
},
{
"name": "t",
"artist": [
{
"id": "ar-6",
"name": "Ten Years After",
"albumCount": 1
}
{ "id": "ar-1", "name": "artist-0", "albumCount": 3 },
{ "id": "ar-2", "name": "artist-1", "albumCount": 3 },
{ "id": "ar-3", "name": "artist-2", "albumCount": 3 }
]
}
]

View File

@@ -7,69 +7,12 @@
"lastModified": 0,
"ignoredArticles": "",
"index": [
{
"name": "#",
"artist": [
{
"id": "al-7",
"name": "13th Floor Lowervators",
"albumCount": 2
},
{
"id": "al-10",
"name": "___Anika",
"albumCount": 2
}
]
},
{
"name": "a",
"artist": [
{
"id": "al-4",
"name": "A Certain Ratio",
"albumCount": 2
}
]
},
{
"name": "c",
"artist": [
{
"id": "al-20",
"name": "Captain Beefheart",
"albumCount": 1
}
]
},
{
"name": "j",
"artist": [
{
"id": "al-2",
"name": "Jah Wobble, The Edge, Holger Czukay",
"albumCount": 1
}
]
},
{
"name": "s",
"artist": [
{
"id": "al-15",
"name": "Swell Maps",
"albumCount": 2
}
]
},
{
"name": "t",
"artist": [
{
"id": "al-18",
"name": "Ten Years After",
"albumCount": 1
}
{ "id": "al-2", "name": "album-0", "albumCount": 0 },
{ "id": "al-3", "name": "album-1", "albumCount": 0 },
{ "id": "al-4", "name": "album-2", "albumCount": 0 }
]
}
]

View File

@@ -5,106 +5,62 @@
"type": "gonic",
"directory": {
"id": "al-3",
"parent": "al-2",
"name": "(1983) Snake Charmer",
"name": "album-1",
"child": [
{
"id": "tr-1",
"album": "(1983) Snake Charmer",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"bitRate": 882,
"id": "tr-4",
"album": "album-1",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-07-08T21:49:40.978045401+01:00",
"duration": 372,
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/01.05 Snake Charmer.flac",
"size": 41274185,
"path": "artist-0/album-1/track-0.flac",
"suffix": "flac",
"title": "Snake Charmer",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-3",
"album": "(1983) Snake Charmer",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"bitRate": 814,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-07-08T21:49:40.981605306+01:00",
"duration": 523,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/02.05 Hold On to Your Dreams.flac",
"size": 53447545,
"suffix": "flac",
"title": "Hold On to Your Dreams",
"track": 2,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-2",
"album": "(1983) Snake Charmer",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"bitRate": 745,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-07-08T21:49:40.979981084+01:00",
"duration": 331,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/03.05 It Was a Camel.flac",
"size": 31080508,
"suffix": "flac",
"title": "It Was a Camel",
"track": 3,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-5",
"album": "(1983) Snake Charmer",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"bitRate": 976,
"album": "album-1",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-07-08T21:49:40.984853203+01:00",
"duration": 227,
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/04.05 Sleazy.flac",
"size": 27938750,
"path": "artist-0/album-1/track-1.flac",
"suffix": "flac",
"title": "Sleazy",
"track": 4,
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-4",
"album": "(1983) Snake Charmer",
"artist": "Jah Wobble, The Edge & Holger Czukay",
"bitRate": 884,
"id": "tr-6",
"album": "album-1",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-07-08T21:49:40.983301328+01:00",
"duration": 418,
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/05.05 Snake Charmer (reprise).flac",
"size": 46427922,
"path": "artist-0/album-1/track-2.flac",
"suffix": "flac",
"title": "Snake Charmer (reprise)",
"track": 5,
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music"
}

View File

@@ -5,16 +5,64 @@
"type": "gonic",
"directory": {
"id": "al-2",
"name": "Jah Wobble, The Edge, Holger Czukay",
"name": "album-0",
"child": [
{
"id": "al-3",
"coverArt": "al-3",
"created": "2019-05-16T22:10:52+01:00",
"isDir": true,
"id": "tr-1",
"album": "album-0",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-2",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-2",
"title": "(1983) Snake Charmer"
"path": "artist-0/album-0/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-2",
"album": "album-0",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-2",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-2",
"path": "artist-0/album-0/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-3",
"album": "album-0",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-2",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-2",
"path": "artist-0/album-0/track-2.flac",
"suffix": "flac",
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music"
}
]
}

View File

@@ -1,31 +0,0 @@
{
"subsonic-response": {
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"searchResult3": {
"artist": [
{
"id": "ar-3",
"name": "13th Floor Elevators",
"albumCount": 0
}
],
"album": [
{
"id": "al-9",
"coverArt": "al-9",
"artistId": "ar-3",
"artist": "13th Floor Elevators",
"title": "",
"album": "",
"name": "The Psychedelic Sounds of the 13th Floor Elevators",
"songCount": 0,
"duration": 0,
"created": "2019-06-13T12:57:24.306717554+01:00",
"year": 1966
}
]
}
}
}

View File

@@ -0,0 +1,128 @@
{
"subsonic-response": {
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"searchResult3": {
"album": [
{
"id": "al-2",
"coverArt": "al-2",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-0",
"songCount": 0,
"duration": 0,
"year": 2021
},
{
"id": "al-3",
"coverArt": "al-3",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-1",
"songCount": 0,
"duration": 0,
"year": 2021
},
{
"id": "al-4",
"coverArt": "al-4",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 0,
"duration": 0,
"year": 2021
},
{
"id": "al-7",
"coverArt": "al-7",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-0",
"songCount": 0,
"duration": 0,
"year": 2021
},
{
"id": "al-8",
"coverArt": "al-8",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-1",
"songCount": 0,
"duration": 0,
"year": 2021
},
{
"id": "al-9",
"coverArt": "al-9",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 0,
"duration": 0,
"year": 2021
},
{
"id": "al-11",
"coverArt": "al-11",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-0",
"songCount": 0,
"duration": 0,
"year": 2021
},
{
"id": "al-12",
"coverArt": "al-12",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-1",
"songCount": 0,
"duration": 0,
"year": 2021
},
{
"id": "al-13",
"coverArt": "al-13",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 0,
"duration": 0,
"year": 2021
}
]
}
}
}

View File

@@ -1,31 +0,0 @@
{
"subsonic-response": {
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"searchResult3": {
"artist": [
{
"id": "ar-4",
"name": "Anikas",
"albumCount": 0
}
],
"album": [
{
"id": "al-13",
"coverArt": "al-13",
"artistId": "ar-4",
"artist": "Anikas",
"title": "",
"album": "",
"name": "Anika",
"songCount": 0,
"duration": 0,
"created": "2019-05-23T15:12:02.921473302+01:00",
"year": 2010
}
]
}
}
}

View File

@@ -0,0 +1,14 @@
{
"subsonic-response": {
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"searchResult3": {
"artist": [
{ "id": "ar-1", "name": "artist-0", "albumCount": 0 },
{ "id": "ar-2", "name": "artist-1", "albumCount": 0 },
{ "id": "ar-3", "name": "artist-2", "albumCount": 0 }
]
}
}
}

View File

@@ -1,16 +0,0 @@
{
"subsonic-response": {
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"searchResult3": {
"artist": [
{
"id": "ar-2",
"name": "A Certain Ratio",
"albumCount": 0
}
]
}
}
}

View File

@@ -0,0 +1,431 @@
{
"subsonic-response": {
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"searchResult3": {
"song": [
{
"id": "tr-1",
"album": "album-0",
"albumId": "al-2",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-2",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-2",
"path": "artist-0/album-0/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-2",
"album": "album-0",
"albumId": "al-2",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-2",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-2",
"path": "artist-0/album-0/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-3",
"album": "album-0",
"albumId": "al-2",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-2",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-2",
"path": "artist-0/album-0/track-2.flac",
"suffix": "flac",
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-4",
"album": "album-1",
"albumId": "al-3",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "artist-0/album-1/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-5",
"album": "album-1",
"albumId": "al-3",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "artist-0/album-1/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-6",
"album": "album-1",
"albumId": "al-3",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "artist-0/album-1/track-2.flac",
"suffix": "flac",
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-7",
"album": "album-2",
"albumId": "al-4",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-4",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-4",
"path": "artist-0/album-2/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-8",
"album": "album-2",
"albumId": "al-4",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-4",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-4",
"path": "artist-0/album-2/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-9",
"album": "album-2",
"albumId": "al-4",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-4",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-4",
"path": "artist-0/album-2/track-2.flac",
"suffix": "flac",
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-10",
"album": "album-0",
"albumId": "al-7",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-7",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-7",
"path": "artist-1/album-0/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-11",
"album": "album-0",
"albumId": "al-7",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-7",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-7",
"path": "artist-1/album-0/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-12",
"album": "album-0",
"albumId": "al-7",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-7",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-7",
"path": "artist-1/album-0/track-2.flac",
"suffix": "flac",
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-13",
"album": "album-1",
"albumId": "al-8",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-8",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-8",
"path": "artist-1/album-1/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-14",
"album": "album-1",
"albumId": "al-8",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-8",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-8",
"path": "artist-1/album-1/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-15",
"album": "album-1",
"albumId": "al-8",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-8",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-8",
"path": "artist-1/album-1/track-2.flac",
"suffix": "flac",
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-16",
"album": "album-2",
"albumId": "al-9",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-9",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-9",
"path": "artist-1/album-2/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-17",
"album": "album-2",
"albumId": "al-9",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-9",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-9",
"path": "artist-1/album-2/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-18",
"album": "album-2",
"albumId": "al-9",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-9",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-9",
"path": "artist-1/album-2/track-2.flac",
"suffix": "flac",
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-19",
"album": "album-0",
"albumId": "al-11",
"artist": "artist-2",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-11",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-11",
"path": "artist-2/album-0/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
},
{
"id": "tr-20",
"album": "album-0",
"albumId": "al-11",
"artist": "artist-2",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-11",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-11",
"path": "artist-2/album-0/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music",
"year": 2021
}
]
}
}
}

View File

@@ -1,148 +0,0 @@
{
"subsonic-response": {
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"searchResult2": {
"artist": [
{
"id": "al-7",
"name": "13th Floor Lowervators"
}
],
"album": [
{
"id": "al-9",
"coverArt": "al-9",
"created": "2019-06-13T12:57:24.306717554+01:00",
"isDir": true,
"isVideo": false,
"parent": "al-7",
"title": "(1966) The Psychedelic Sounds of the 13th Floor Elevators"
}
],
"song": [
{
"id": "tr-6",
"album": "(1994) The Graveyard and the Ballroom",
"artist": "A Certain Ratio",
"bitRate": 894,
"contentType": "audio/x-flac",
"coverArt": "al-5",
"created": "2019-07-08T21:49:41.037683099+01:00",
"duration": 332,
"isDir": false,
"isVideo": false,
"parent": "al-5",
"path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/13.14 Flight.flac",
"size": 37302417,
"suffix": "flac",
"title": "Flight",
"track": 13,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-40",
"album": "(1966) The Psychedelic Sounds of the 13th Floor Elevators",
"artist": "13th Floor Elevators",
"bitRate": 244,
"contentType": "audio/mpeg",
"coverArt": "al-9",
"created": "2019-07-08T21:49:41.209108272+01:00",
"duration": 154,
"isDir": false,
"isVideo": false,
"parent": "al-9",
"path": "13th Floor Lowervators/(1966) The Psychedelic Sounds of the 13th Floor Elevators/13.21 Before You Accuse Me.mp3",
"size": 4722688,
"suffix": "mp3",
"title": "Before You Accuse Me",
"track": 13,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-76",
"album": "(1980) Jane From Occupied Europe",
"artist": "Swell Maps",
"bitRate": 1204,
"contentType": "audio/x-flac",
"coverArt": "al-16",
"created": "2019-07-08T21:49:41.43457798+01:00",
"duration": 220,
"isDir": false,
"isVideo": false,
"parent": "al-16",
"path": "Swell Maps/(1980) Jane From Occupied Europe/13.16 Blenheim Shots.flac",
"size": 33140852,
"suffix": "flac",
"title": "Blenheim Shots",
"track": 13,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-93",
"album": "(1979) A Trip to Marineville",
"artist": "Swell Maps",
"bitRate": 295,
"contentType": "audio/mpeg",
"coverArt": "al-17",
"created": "2019-07-08T21:49:41.493347193+01:00",
"duration": 463,
"isDir": false,
"isVideo": false,
"parent": "al-17",
"path": "Swell Maps/(1979) A Trip to Marineville/d01 13.14 Adventuring Into Basketry.mp3",
"size": 17119309,
"suffix": "mp3",
"title": "Adventuring Into Basketry",
"track": 13,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-107",
"album": "(1967) Ten Years After",
"artist": "Ten Years After",
"bitRate": 192,
"contentType": "audio/ogg",
"coverArt": "al-19",
"created": "2019-07-08T21:49:41.573811068+01:00",
"duration": 433,
"isDir": false,
"isVideo": false,
"parent": "al-19",
"path": "Ten Years After/(1967) Ten Years After/13.15 Spider in My Web.ogg",
"size": 10400948,
"suffix": "ogg",
"title": "Spider in My Web",
"track": 13,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-129",
"album": "(1970) Lick My Decals Off, Bitch",
"artist": "Captain Beefheart & His Magic Band",
"bitRate": 160,
"contentType": "audio/mpeg",
"coverArt": "al-21",
"created": "2019-07-08T21:49:41.687805489+01:00",
"duration": 152,
"isDir": false,
"isVideo": false,
"parent": "al-21",
"path": "Captain Beefheart/(1970) Lick My Decals Off, Bitch/13.15 Space-Age Couple.mp3",
"size": 3054515,
"suffix": "mp3",
"title": "Space-Age Couple",
"track": 13,
"discNumber": 1,
"type": "music"
}
]
}
}
}

View File

@@ -0,0 +1,97 @@
{
"subsonic-response": {
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"searchResult2": {
"artist": [
{ "id": "al-2", "name": "album-0" },
{ "id": "al-3", "name": "album-1" },
{ "id": "al-4", "name": "album-2" }
],
"album": [
{
"id": "al-2",
"coverArt": "al-2",
"created": "2019-11-30T00:00:00Z",
"isDir": true,
"isVideo": false,
"parent": "al-1",
"title": "album-0"
},
{
"id": "al-3",
"coverArt": "al-3",
"created": "2019-11-30T00:00:00Z",
"isDir": true,
"isVideo": false,
"parent": "al-1",
"title": "album-1"
},
{
"id": "al-4",
"coverArt": "al-4",
"created": "2019-11-30T00:00:00Z",
"isDir": true,
"isVideo": false,
"parent": "al-1",
"title": "album-2"
},
{
"id": "al-7",
"coverArt": "al-7",
"created": "2019-11-30T00:00:00Z",
"isDir": true,
"isVideo": false,
"parent": "al-6",
"title": "album-0"
},
{
"id": "al-8",
"coverArt": "al-8",
"created": "2019-11-30T00:00:00Z",
"isDir": true,
"isVideo": false,
"parent": "al-6",
"title": "album-1"
},
{
"id": "al-9",
"coverArt": "al-9",
"created": "2019-11-30T00:00:00Z",
"isDir": true,
"isVideo": false,
"parent": "al-6",
"title": "album-2"
},
{
"id": "al-11",
"coverArt": "al-11",
"created": "2019-11-30T00:00:00Z",
"isDir": true,
"isVideo": false,
"parent": "al-10",
"title": "album-0"
},
{
"id": "al-12",
"coverArt": "al-12",
"created": "2019-11-30T00:00:00Z",
"isDir": true,
"isVideo": false,
"parent": "al-10",
"title": "album-1"
},
{
"id": "al-13",
"coverArt": "al-13",
"created": "2019-11-30T00:00:00Z",
"isDir": true,
"isVideo": false,
"parent": "al-10",
"title": "album-2"
}
]
}
}
}

View File

@@ -1,26 +0,0 @@
{
"subsonic-response": {
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"searchResult2": {
"artist": [
{
"id": "al-10",
"name": "___Anika"
}
],
"album": [
{
"id": "al-13",
"coverArt": "al-13",
"created": "2019-05-23T15:12:02.921473302+01:00",
"isDir": true,
"isVideo": false,
"parent": "al-12",
"title": "(2010) Anika"
}
]
}
}
}

View File

@@ -0,0 +1,8 @@
{
"subsonic-response": {
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"searchResult2": {}
}
}

View File

@@ -1,15 +0,0 @@
{
"subsonic-response": {
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"searchResult2": {
"artist": [
{
"id": "al-4",
"name": "A Certain Ratio"
}
]
}
}
}

View File

@@ -0,0 +1,391 @@
{
"subsonic-response": {
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"searchResult2": {
"song": [
{
"id": "tr-1",
"album": "album-0",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-2",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-2",
"path": "artist-0/album-0/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-2",
"album": "album-0",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-2",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-2",
"path": "artist-0/album-0/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-3",
"album": "album-0",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-2",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-2",
"path": "artist-0/album-0/track-2.flac",
"suffix": "flac",
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-4",
"album": "album-1",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "artist-0/album-1/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-5",
"album": "album-1",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "artist-0/album-1/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-6",
"album": "album-1",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-3",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-3",
"path": "artist-0/album-1/track-2.flac",
"suffix": "flac",
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-7",
"album": "album-2",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-4",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-4",
"path": "artist-0/album-2/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-8",
"album": "album-2",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-4",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-4",
"path": "artist-0/album-2/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-9",
"album": "album-2",
"artist": "artist-0",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-4",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-4",
"path": "artist-0/album-2/track-2.flac",
"suffix": "flac",
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-10",
"album": "album-0",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-7",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-7",
"path": "artist-1/album-0/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-11",
"album": "album-0",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-7",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-7",
"path": "artist-1/album-0/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-12",
"album": "album-0",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-7",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-7",
"path": "artist-1/album-0/track-2.flac",
"suffix": "flac",
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-13",
"album": "album-1",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-8",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-8",
"path": "artist-1/album-1/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-14",
"album": "album-1",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-8",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-8",
"path": "artist-1/album-1/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-15",
"album": "album-1",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-8",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-8",
"path": "artist-1/album-1/track-2.flac",
"suffix": "flac",
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-16",
"album": "album-2",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-9",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-9",
"path": "artist-1/album-2/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-17",
"album": "album-2",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-9",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-9",
"path": "artist-1/album-2/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-18",
"album": "album-2",
"artist": "artist-1",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-9",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-9",
"path": "artist-1/album-2/track-2.flac",
"suffix": "flac",
"title": "title-2",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-19",
"album": "album-0",
"artist": "artist-2",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-11",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-11",
"path": "artist-2/album-0/track-0.flac",
"suffix": "flac",
"title": "title-0",
"track": 1,
"discNumber": 1,
"type": "music"
},
{
"id": "tr-20",
"album": "album-0",
"artist": "artist-2",
"bitRate": 100,
"contentType": "audio/x-flac",
"coverArt": "al-11",
"created": "2019-11-30T00:00:00Z",
"duration": 100,
"isDir": false,
"isVideo": false,
"parent": "al-11",
"path": "artist-2/album-0/track-1.flac",
"suffix": "flac",
"title": "title-1",
"track": 1,
"discNumber": 1,
"type": "music"
}
]
}
}
}