mirror of
https://git.sr.ht/~phw/scotty
synced 2025-05-10 10:17:04 +02:00
jspf: also set username and recording MSID in exports
This commit is contained in:
parent
a645ec5c78
commit
d757129bd7
2 changed files with 18 additions and 10 deletions
|
@ -145,7 +145,7 @@ You can help translate this project into your language with [Weblate](https://tr
|
||||||
|
|
||||||
## License
|
## 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.
|
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.
|
||||||
|
|
||||||
|
|
|
@ -180,13 +180,14 @@ func listenAsTrack(l models.Listen) jspf.Track {
|
||||||
}
|
}
|
||||||
|
|
||||||
func trackAsListen(t jspf.Track) (*models.Listen, error) {
|
func trackAsListen(t jspf.Track) (*models.Listen, error) {
|
||||||
track, addedAt, err := jspfTrackAsTrack(t)
|
track, ext, err := jspfTrackAsTrack(t)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
listen := models.Listen{
|
listen := models.Listen{
|
||||||
ListenedAt: *addedAt,
|
ListenedAt: ext.AddedAt,
|
||||||
|
UserName: ext.AddedBy,
|
||||||
Track: *track,
|
Track: *track,
|
||||||
}
|
}
|
||||||
return &listen, err
|
return &listen, err
|
||||||
|
@ -212,16 +213,23 @@ func loveAsTrack(l models.Love) jspf.Track {
|
||||||
}
|
}
|
||||||
|
|
||||||
func trackAsLove(t jspf.Track) (*models.Love, error) {
|
func trackAsLove(t jspf.Track) (*models.Love, error) {
|
||||||
track, addedAt, err := jspfTrackAsTrack(t)
|
track, ext, err := jspfTrackAsTrack(t)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
love := models.Love{
|
love := models.Love{
|
||||||
Created: *addedAt,
|
Created: ext.AddedAt,
|
||||||
|
UserName: ext.AddedBy,
|
||||||
RecordingMBID: track.RecordingMBID,
|
RecordingMBID: track.RecordingMBID,
|
||||||
Track: *track,
|
Track: *track,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
recordingMSID, ok := track.AdditionalInfo["recording_msid"].(string)
|
||||||
|
if ok {
|
||||||
|
love.RecordingMSID = mbtypes.MBID(recordingMSID)
|
||||||
|
}
|
||||||
|
|
||||||
return &love, err
|
return &love, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -238,7 +246,7 @@ func trackAsJSPFTrack(t models.Track) jspf.Track {
|
||||||
return 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{
|
track := models.Track{
|
||||||
ArtistNames: []string{t.Creator},
|
ArtistNames: []string{t.Creator},
|
||||||
ReleaseName: t.Album,
|
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 {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return &track, addedAt, nil
|
return &track, ext, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeMusicBrainzExtension(t models.Track) jspf.MusicBrainzTrackExtension {
|
func makeMusicBrainzExtension(t models.Track) jspf.MusicBrainzTrackExtension {
|
||||||
|
@ -281,7 +289,7 @@ func makeMusicBrainzExtension(t models.Track) jspf.MusicBrainzTrackExtension {
|
||||||
return extension
|
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{}
|
ext := jspf.MusicBrainzTrackExtension{}
|
||||||
err := jspfTrack.Extension.Get(jspf.MusicBrainzTrackExtensionID, &ext)
|
err := jspfTrack.Extension.Get(jspf.MusicBrainzTrackExtensionID, &ext)
|
||||||
if err != nil {
|
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 {
|
func (b *JSPFBackend) readJSPF() error {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue