More granular progress report for JSPF and scrobblerlog

This commit is contained in:
Philipp Wolfer 2025-05-23 07:47:52 +02:00
parent 83eac8c801
commit c7af90b585
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
4 changed files with 55 additions and 19 deletions

View file

@ -108,21 +108,22 @@ func (b *JSPFBackend) ExportListens(ctx context.Context, oldestTimestamp time.Ti
}
listens := make(models.ListensList, 0, len(b.playlist.Tracks))
for _, track := range b.playlist.Tracks {
p.Export.Total = int64(len(b.playlist.Tracks))
for _, track := range models.IterExportProgress(b.playlist.Tracks, &p, progress) {
listen, err := trackAsListen(track)
if err == nil && listen != nil && listen.ListenedAt.After(oldestTimestamp) {
listens = append(listens, *listen)
p.Export.TotalItems += 1
}
}
sort.Sort(listens)
p.Export.Total = int64(len(listens))
p.Export.Complete()
progress <- p
results <- models.ListensResult{Items: listens}
}
func (b *JSPFBackend) ImportListens(ctx context.Context, export models.ListensResult, importResult models.ImportResult, progress chan models.TransferProgress) (models.ImportResult, error) {
for _, listen := range export.Items {
p := models.TransferProgress{}.FromImportResult(importResult, false)
for _, listen := range models.IterImportProgress(export.Items, &p, progress) {
if err := ctx.Err(); err != nil {
return importResult, err
}
@ -133,7 +134,6 @@ func (b *JSPFBackend) ImportListens(ctx context.Context, export models.ListensRe
importResult.UpdateTimestamp(listen.ListenedAt)
}
progress <- models.TransferProgress{}.FromImportResult(importResult, false)
return importResult, nil
}
@ -151,21 +151,22 @@ func (b *JSPFBackend) ExportLoves(ctx context.Context, oldestTimestamp time.Time
}
loves := make(models.LovesList, 0, len(b.playlist.Tracks))
for _, track := range b.playlist.Tracks {
p.Export.Total = int64(len(b.playlist.Tracks))
for _, track := range models.IterExportProgress(b.playlist.Tracks, &p, progress) {
love, err := trackAsLove(track)
if err == nil && love != nil && love.Created.After(oldestTimestamp) {
loves = append(loves, *love)
p.Export.TotalItems += 1
}
}
sort.Sort(loves)
p.Export.Total = int64(len(loves))
p.Export.Complete()
progress <- p
results <- models.LovesResult{Items: loves}
}
func (b *JSPFBackend) ImportLoves(ctx context.Context, export models.LovesResult, importResult models.ImportResult, progress chan models.TransferProgress) (models.ImportResult, error) {
for _, love := range export.Items {
p := models.TransferProgress{}.FromImportResult(importResult, false)
for _, love := range models.IterImportProgress(export.Items, &p, progress) {
if err := ctx.Err(); err != nil {
return importResult, err
}
@ -176,7 +177,6 @@ func (b *JSPFBackend) ImportLoves(ctx context.Context, export models.LovesResult
importResult.UpdateTimestamp(love.Created)
}
progress <- models.TransferProgress{}.FromImportResult(importResult, false)
return importResult, nil
}