diff --git a/README.md b/README.md index 97e6120..c764730 100644 --- a/README.md +++ b/README.md @@ -145,7 +145,7 @@ You can help translate this project into your language with [Weblate](https://tr ## License -Scotty © 2023-2024 Philipp Wolfer +Scotty © 2023-2025 Philipp Wolfer Scotty is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. diff --git a/internal/backends/jspf/jspf.go b/internal/backends/jspf/jspf.go index a9e5c90..6551f15 100644 --- a/internal/backends/jspf/jspf.go +++ b/internal/backends/jspf/jspf.go @@ -180,13 +180,14 @@ func listenAsTrack(l models.Listen) jspf.Track { } func trackAsListen(t jspf.Track) (*models.Listen, error) { - track, addedAt, err := jspfTrackAsTrack(t) + track, ext, err := jspfTrackAsTrack(t) if err != nil { return nil, err } listen := models.Listen{ - ListenedAt: *addedAt, + ListenedAt: ext.AddedAt, + UserName: ext.AddedBy, Track: *track, } return &listen, err @@ -212,16 +213,23 @@ func loveAsTrack(l models.Love) jspf.Track { } func trackAsLove(t jspf.Track) (*models.Love, error) { - track, addedAt, err := jspfTrackAsTrack(t) + track, ext, err := jspfTrackAsTrack(t) if err != nil { return nil, err } love := models.Love{ - Created: *addedAt, + Created: ext.AddedAt, + UserName: ext.AddedBy, RecordingMBID: track.RecordingMBID, Track: *track, } + + recordingMSID, ok := track.AdditionalInfo["recording_msid"].(string) + if ok { + love.RecordingMSID = mbtypes.MBID(recordingMSID) + } + return &love, err } @@ -238,7 +246,7 @@ func trackAsJSPFTrack(t models.Track) jspf.Track { return track } -func jspfTrackAsTrack(t jspf.Track) (*models.Track, *time.Time, error) { +func jspfTrackAsTrack(t jspf.Track) (*models.Track, *jspf.MusicBrainzTrackExtension, error) { track := models.Track{ ArtistNames: []string{t.Creator}, ReleaseName: t.Album, @@ -253,12 +261,12 @@ func jspfTrackAsTrack(t jspf.Track) (*models.Track, *time.Time, error) { } } - addedAt, err := readMusicBrainzExtension(t, &track) + ext, err := readMusicBrainzExtension(t, &track) if err != nil { return nil, nil, err } - return &track, addedAt, nil + return &track, ext, nil } func makeMusicBrainzExtension(t models.Track) jspf.MusicBrainzTrackExtension { @@ -281,7 +289,7 @@ func makeMusicBrainzExtension(t models.Track) jspf.MusicBrainzTrackExtension { return extension } -func readMusicBrainzExtension(jspfTrack jspf.Track, outputTrack *models.Track) (*time.Time, error) { +func readMusicBrainzExtension(jspfTrack jspf.Track, outputTrack *models.Track) (*jspf.MusicBrainzTrackExtension, error) { ext := jspf.MusicBrainzTrackExtension{} err := jspfTrack.Extension.Get(jspf.MusicBrainzTrackExtensionID, &ext) if err != nil { @@ -297,7 +305,7 @@ func readMusicBrainzExtension(jspfTrack jspf.Track, outputTrack *models.Track) ( } } - return &ext.AddedAt, nil + return &ext, nil } func (b *JSPFBackend) readJSPF() error {