jspf: also set username and recording MSID in exports

This commit is contained in:
Philipp Wolfer 2025-05-01 15:20:37 +02:00
parent a645ec5c78
commit d757129bd7
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
2 changed files with 18 additions and 10 deletions

View file

@ -145,7 +145,7 @@ You can help translate this project into your language with [Weblate](https://tr
## License
Scotty © 2023-2024 Philipp Wolfer <phw@uploadedlobster.com>
Scotty © 2023-2025 Philipp Wolfer <phw@uploadedlobster.com>
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.

View file

@ -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 {