mirror of
https://github.com/gabehf/Koito.git
synced 2026-03-07 21:48:18 -08:00
fix: reset mbid for artists when native importing
This commit is contained in:
parent
b32c5d3735
commit
5537b6fb89
4 changed files with 793 additions and 1 deletions
|
|
@ -13,6 +13,7 @@ import (
|
|||
"github.com/gabehf/koito/internal/db"
|
||||
"github.com/gabehf/koito/internal/logger"
|
||||
"github.com/gabehf/koito/internal/mbz"
|
||||
"github.com/gabehf/koito/internal/utils"
|
||||
"github.com/google/uuid"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
|
@ -260,3 +261,80 @@ func TestImportListenBrainz_MbzDisabled(t *testing.T) {
|
|||
|
||||
truncateTestData(t)
|
||||
}
|
||||
|
||||
func TestImportKoito(t *testing.T) {
|
||||
|
||||
src := path.Join("..", "test_assets", "koito_export_test.json")
|
||||
destDir := filepath.Join(cfg.ConfigDir(), "import")
|
||||
dest := filepath.Join(destDir, "koito_export_test.json")
|
||||
|
||||
ctx := context.Background()
|
||||
|
||||
// 4 every wave to ever rise, 3 i can't feel you, 5 giri giri, 1 nijinoiroyo
|
||||
giriReleaseMBID := uuid.MustParse("ac1f8da0-21d7-426e-83b0-befff06f0871")
|
||||
suzukiMBID := uuid.MustParse("30f851bb-dba3-4e9b-811c-5f27f595c86a")
|
||||
nijinoTrackMBID := uuid.MustParse("a4f26836-3894-46c1-acac-227808308687")
|
||||
|
||||
input, err := os.ReadFile(src)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.NoError(t, os.WriteFile(dest, input, os.ModePerm))
|
||||
|
||||
engine.RunImporter(logger.Get(), store, &mbz.MbzErrorCaller{})
|
||||
|
||||
// ensure all artists are saved
|
||||
_, err = store.GetArtist(ctx, db.GetArtistOpts{Name: "American Football"})
|
||||
require.NoError(t, err)
|
||||
_, err = store.GetArtist(ctx, db.GetArtistOpts{Name: "Rachel Goswell"})
|
||||
require.NoError(t, err)
|
||||
_, err = store.GetArtist(ctx, db.GetArtistOpts{Name: "Elizabeth Powell"})
|
||||
require.NoError(t, err)
|
||||
|
||||
// ensure artist aliases are saved
|
||||
artist, err := store.GetArtist(ctx, db.GetArtistOpts{MusicBrainzID: suzukiMBID})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "鈴木雅之", artist.Name)
|
||||
assert.Contains(t, artist.Aliases, "Masayuki Suzuki")
|
||||
_, err = store.GetArtist(ctx, db.GetArtistOpts{Name: "すぅ"})
|
||||
require.NoError(t, err)
|
||||
|
||||
// ensure albums are saved
|
||||
album, err := store.GetAlbum(ctx, db.GetAlbumOpts{MusicBrainzID: giriReleaseMBID})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "GIRI GIRI", album.Title)
|
||||
// ensure album aliases are saved
|
||||
artist, err = store.GetArtist(ctx, db.GetArtistOpts{Name: "NELKE"})
|
||||
require.NoError(t, err)
|
||||
album, err = store.GetAlbum(ctx, db.GetAlbumOpts{Title: "虹の色よ鮮やかであれ (NELKE ver.)", ArtistID: artist.ID})
|
||||
require.NoError(t, err)
|
||||
aliases, err := store.GetAllAlbumAliases(ctx, album.ID)
|
||||
require.NoError(t, err)
|
||||
assert.Contains(t, utils.FlattenAliases(aliases), "Nijinoiroyo Azayakadeare (NELKE ver.)")
|
||||
|
||||
// ensure all tracks are saved
|
||||
track, err := store.GetTrack(ctx, db.GetTrackOpts{MusicBrainzID: nijinoTrackMBID})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "虹の色よ鮮やかであれ (NELKE ver.)", track.Title)
|
||||
aliases, err = store.GetAllTrackAliases(ctx, track.ID)
|
||||
require.NoError(t, err)
|
||||
assert.Contains(t, utils.FlattenAliases(aliases), "Nijinoiroyo Azayakadeare (NELKE ver.)")
|
||||
// ensure track duration is saved
|
||||
assert.EqualValues(t, 218, track.Duration)
|
||||
|
||||
artist, err = store.GetArtist(ctx, db.GetArtistOpts{MusicBrainzID: suzukiMBID})
|
||||
require.NoError(t, err)
|
||||
_, err = store.GetTrack(ctx, db.GetTrackOpts{Title: "GIRI GIRI", ArtistIDs: []int32{artist.ID}})
|
||||
require.NoError(t, err)
|
||||
|
||||
count, err := store.CountTracks(ctx, db.PeriodAllTime)
|
||||
require.NoError(t, err)
|
||||
assert.EqualValues(t, 4, count)
|
||||
count, err = store.CountAlbums(ctx, db.PeriodAllTime)
|
||||
require.NoError(t, err)
|
||||
assert.EqualValues(t, 3, count)
|
||||
count, err = store.CountArtists(ctx, db.PeriodAllTime)
|
||||
require.NoError(t, err)
|
||||
assert.EqualValues(t, 6, count)
|
||||
|
||||
truncateTestData(t)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -139,6 +139,11 @@ func (d *Psql) SaveAlbum(ctx context.Context, opts db.SaveAlbumOpts) (*models.Al
|
|||
return nil, fmt.Errorf("SaveAlbum: Commit: %w", err)
|
||||
}
|
||||
|
||||
err = d.SaveAlbumAliases(ctx, r.ID, opts.Aliases, "MusicBrainz")
|
||||
if err != nil {
|
||||
l.Err(err).Msgf("Failed to save aliases for album %s", opts.Title)
|
||||
}
|
||||
|
||||
return &models.Album{
|
||||
ID: r.ID,
|
||||
MbzID: r.MusicBrainzID,
|
||||
|
|
|
|||
|
|
@ -43,10 +43,11 @@ func ImportKoitoFile(ctx context.Context, store db.DB, filename string) error {
|
|||
|
||||
for i := range data.Listens {
|
||||
// use this for save/get mbid for all artist/album/track
|
||||
mbid := uuid.Nil
|
||||
var mbid uuid.UUID
|
||||
|
||||
artistIds := make([]int32, 0)
|
||||
for _, ia := range data.Listens[i].Artists {
|
||||
mbid = uuid.Nil
|
||||
if ia.MBID != nil {
|
||||
mbid = *ia.MBID
|
||||
}
|
||||
|
|
@ -81,6 +82,7 @@ func ImportKoitoFile(ctx context.Context, store db.DB, filename string) error {
|
|||
}
|
||||
// call associate album
|
||||
albumId := int32(0)
|
||||
mbid = uuid.Nil
|
||||
if data.Listens[i].Album.MBID != nil {
|
||||
mbid = *data.Listens[i].Album.MBID
|
||||
}
|
||||
|
|
@ -117,6 +119,7 @@ func ImportKoitoFile(ctx context.Context, store db.DB, filename string) error {
|
|||
}
|
||||
|
||||
// call associate track
|
||||
mbid = uuid.Nil
|
||||
if data.Listens[i].Track.MBID != nil {
|
||||
mbid = *data.Listens[i].Track.MBID
|
||||
}
|
||||
|
|
|
|||
706
test_assets/koito_export_test.json
Normal file
706
test_assets/koito_export_test.json
Normal file
|
|
@ -0,0 +1,706 @@
|
|||
{
|
||||
"version": "1",
|
||||
"exported_at": "2025-06-18T12:56:53Z",
|
||||
"user": "koito",
|
||||
"listens": [
|
||||
{
|
||||
"listened_at": "2022-01-08T22:32:08Z",
|
||||
"track": {
|
||||
"mbid": null,
|
||||
"duration": 354,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "Every Wave To Ever Rise (feat. Elizabeth Powell)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"album": {
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/cover/1f54d600d0ce5c88a6b2fd75659ec796/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "American Football (LP3)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
],
|
||||
"various_artists": false
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/ac81a9567a9ae0963274563370eff015/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": "4ebb5ad3-9018-407d-8c24-c03011ab9ac6",
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "American Football",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/4aaff116fd21b5c1bdafd55fbf843053/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "Elizabeth Powell",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"listened_at": "2022-01-16T00:43:25Z",
|
||||
"track": {
|
||||
"mbid": null,
|
||||
"duration": 354,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "Every Wave To Ever Rise (feat. Elizabeth Powell)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"album": {
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/cover/1f54d600d0ce5c88a6b2fd75659ec796/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "American Football (LP3)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
],
|
||||
"various_artists": false
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/ac81a9567a9ae0963274563370eff015/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": "4ebb5ad3-9018-407d-8c24-c03011ab9ac6",
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "American Football",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/4aaff116fd21b5c1bdafd55fbf843053/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "Elizabeth Powell",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"listened_at": "2022-01-16T04:47:43Z",
|
||||
"track": {
|
||||
"mbid": null,
|
||||
"duration": 354,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "Every Wave To Ever Rise (feat. Elizabeth Powell)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"album": {
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/cover/1f54d600d0ce5c88a6b2fd75659ec796/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "American Football (LP3)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
],
|
||||
"various_artists": false
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/ac81a9567a9ae0963274563370eff015/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": "4ebb5ad3-9018-407d-8c24-c03011ab9ac6",
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "American Football",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/4aaff116fd21b5c1bdafd55fbf843053/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "Elizabeth Powell",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"listened_at": "2022-01-18T18:36:21Z",
|
||||
"track": {
|
||||
"mbid": null,
|
||||
"duration": 354,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "Every Wave To Ever Rise (feat. Elizabeth Powell)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"album": {
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/cover/1f54d600d0ce5c88a6b2fd75659ec796/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "American Football (LP3)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
],
|
||||
"various_artists": false
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/ac81a9567a9ae0963274563370eff015/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": "4ebb5ad3-9018-407d-8c24-c03011ab9ac6",
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "American Football",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/4aaff116fd21b5c1bdafd55fbf843053/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "Elizabeth Powell",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"listened_at": "2022-01-16T05:28:11Z",
|
||||
"track": {
|
||||
"mbid": null,
|
||||
"duration": 287,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "I Can't Feel You (feat. Rachel Goswell)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"album": {
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/cover/1f54d600d0ce5c88a6b2fd75659ec796/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "American Football (LP3)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
],
|
||||
"various_artists": false
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/ac81a9567a9ae0963274563370eff015/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": "4ebb5ad3-9018-407d-8c24-c03011ab9ac6",
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "American Football",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/36120901230ef2799610483fbfe5402e/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "Rachel Goswell",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"listened_at": "2022-01-18T18:59:01Z",
|
||||
"track": {
|
||||
"mbid": null,
|
||||
"duration": 287,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "I Can't Feel You (feat. Rachel Goswell)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"album": {
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/cover/1f54d600d0ce5c88a6b2fd75659ec796/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "American Football (LP3)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
],
|
||||
"various_artists": false
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/ac81a9567a9ae0963274563370eff015/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": "4ebb5ad3-9018-407d-8c24-c03011ab9ac6",
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "American Football",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/36120901230ef2799610483fbfe5402e/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "Rachel Goswell",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"listened_at": "2022-01-19T01:31:22Z",
|
||||
"track": {
|
||||
"mbid": null,
|
||||
"duration": 287,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "I Can't Feel You (feat. Rachel Goswell)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"album": {
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/cover/1f54d600d0ce5c88a6b2fd75659ec796/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "American Football (LP3)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
],
|
||||
"various_artists": false
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/ac81a9567a9ae0963274563370eff015/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": "4ebb5ad3-9018-407d-8c24-c03011ab9ac6",
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "American Football",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/36120901230ef2799610483fbfe5402e/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "Rachel Goswell",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"listened_at": "2025-03-17T03:16:50Z",
|
||||
"track": {
|
||||
"mbid": null,
|
||||
"duration": 0,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "GIRI GIRI",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"album": {
|
||||
"image_url": "https://coverartarchive.org/release/ac1f8da0-21d7-426e-83b0-befff06f0871/front",
|
||||
"mbid": "ac1f8da0-21d7-426e-83b0-befff06f0871",
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "GIRI GIRI",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
],
|
||||
"various_artists": false
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"image_url": "https://yt3.googleusercontent.com/DKlRZNy1yaOkBvIH5vaA3RHdLtylEqaoRsnQIfJlSeo8y_Ov1_3fZRebFtm3NgpsB6tvJQzzcQ=s900-c-k-c0x00ffffff-no-rj",
|
||||
"mbid": "30f851bb-dba3-4e9b-811c-5f27f595c86a",
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "鈴木雅之",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
},
|
||||
{
|
||||
"alias": "Masayuki Suzuki",
|
||||
"source": "MusicBrainz",
|
||||
"is_primary": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/827131318ca82724744bc9c2c4b43a6c/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "すぅ",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"listened_at": "2025-03-17T22:17:42Z",
|
||||
"track": {
|
||||
"mbid": null,
|
||||
"duration": 0,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "GIRI GIRI",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"album": {
|
||||
"image_url": "https://coverartarchive.org/release/ac1f8da0-21d7-426e-83b0-befff06f0871/front",
|
||||
"mbid": "ac1f8da0-21d7-426e-83b0-befff06f0871",
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "GIRI GIRI",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
],
|
||||
"various_artists": false
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"image_url": "https://yt3.googleusercontent.com/DKlRZNy1yaOkBvIH5vaA3RHdLtylEqaoRsnQIfJlSeo8y_Ov1_3fZRebFtm3NgpsB6tvJQzzcQ=s900-c-k-c0x00ffffff-no-rj",
|
||||
"mbid": "30f851bb-dba3-4e9b-811c-5f27f595c86a",
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "鈴木雅之",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
},
|
||||
{
|
||||
"alias": "Masayuki Suzuki",
|
||||
"source": "MusicBrainz",
|
||||
"is_primary": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/827131318ca82724744bc9c2c4b43a6c/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "すぅ",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"listened_at": "2025-03-18T20:46:02Z",
|
||||
"track": {
|
||||
"mbid": null,
|
||||
"duration": 0,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "GIRI GIRI",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"album": {
|
||||
"image_url": "https://coverartarchive.org/release/ac1f8da0-21d7-426e-83b0-befff06f0871/front",
|
||||
"mbid": "ac1f8da0-21d7-426e-83b0-befff06f0871",
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "GIRI GIRI",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
],
|
||||
"various_artists": false
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"image_url": "https://yt3.googleusercontent.com/DKlRZNy1yaOkBvIH5vaA3RHdLtylEqaoRsnQIfJlSeo8y_Ov1_3fZRebFtm3NgpsB6tvJQzzcQ=s900-c-k-c0x00ffffff-no-rj",
|
||||
"mbid": "30f851bb-dba3-4e9b-811c-5f27f595c86a",
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "鈴木雅之",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
},
|
||||
{
|
||||
"alias": "Masayuki Suzuki",
|
||||
"source": "MusicBrainz",
|
||||
"is_primary": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/827131318ca82724744bc9c2c4b43a6c/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "すぅ",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"listened_at": "2025-03-19T14:15:35Z",
|
||||
"track": {
|
||||
"mbid": null,
|
||||
"duration": 0,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "GIRI GIRI",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"album": {
|
||||
"image_url": "https://coverartarchive.org/release/ac1f8da0-21d7-426e-83b0-befff06f0871/front",
|
||||
"mbid": "ac1f8da0-21d7-426e-83b0-befff06f0871",
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "GIRI GIRI",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
],
|
||||
"various_artists": false
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"image_url": "https://yt3.googleusercontent.com/DKlRZNy1yaOkBvIH5vaA3RHdLtylEqaoRsnQIfJlSeo8y_Ov1_3fZRebFtm3NgpsB6tvJQzzcQ=s900-c-k-c0x00ffffff-no-rj",
|
||||
"mbid": "30f851bb-dba3-4e9b-811c-5f27f595c86a",
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "鈴木雅之",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
},
|
||||
{
|
||||
"alias": "Masayuki Suzuki",
|
||||
"source": "MusicBrainz",
|
||||
"is_primary": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/827131318ca82724744bc9c2c4b43a6c/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "すぅ",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"listened_at": "2025-03-20T00:36:12Z",
|
||||
"track": {
|
||||
"mbid": null,
|
||||
"duration": 0,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "GIRI GIRI",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"album": {
|
||||
"image_url": "https://coverartarchive.org/release/ac1f8da0-21d7-426e-83b0-befff06f0871/front",
|
||||
"mbid": "ac1f8da0-21d7-426e-83b0-befff06f0871",
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "GIRI GIRI",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
],
|
||||
"various_artists": false
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"image_url": "https://yt3.googleusercontent.com/DKlRZNy1yaOkBvIH5vaA3RHdLtylEqaoRsnQIfJlSeo8y_Ov1_3fZRebFtm3NgpsB6tvJQzzcQ=s900-c-k-c0x00ffffff-no-rj",
|
||||
"mbid": "30f851bb-dba3-4e9b-811c-5f27f595c86a",
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "鈴木雅之",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
},
|
||||
{
|
||||
"alias": "Masayuki Suzuki",
|
||||
"source": "MusicBrainz",
|
||||
"is_primary": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"image_url": "https://cdn-images.dzcdn.net/images/artist/827131318ca82724744bc9c2c4b43a6c/1000x1000-000000-80-0-0.jpg",
|
||||
"mbid": null,
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "すぅ",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"listened_at": "2025-03-23T17:22:03Z",
|
||||
"track": {
|
||||
"mbid": "a4f26836-3894-46c1-acac-227808308687",
|
||||
"duration": 218,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "Nijinoiroyo Azayakadeare (NELKE ver.)",
|
||||
"source": "Manual",
|
||||
"is_primary": false
|
||||
},
|
||||
{
|
||||
"alias": "虹の色よ鮮やかであれ (NELKE ver.)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"album": {
|
||||
"image_url": "https://coverartarchive.org/release/7114f07c-c1f7-4423-a9c3-585444bef51b/front",
|
||||
"mbid": "7114f07c-c1f7-4423-a9c3-585444bef51b",
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "Nijinoiroyo Azayakadeare (NELKE ver.)",
|
||||
"source": "MusicBrainz",
|
||||
"is_primary": false
|
||||
},
|
||||
{
|
||||
"alias": "虹の色よ鮮やかであれ (NELKE ver.)",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
],
|
||||
"various_artists": false
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"image_url": "User Upload",
|
||||
"mbid": "3d202d36-1219-4e31-bfb9-d73355c66a83",
|
||||
"is_primary": false,
|
||||
"aliases": [
|
||||
{
|
||||
"alias": "NELKE",
|
||||
"source": "Canonical",
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue