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

@ -154,22 +154,23 @@ func (b *ScrobblerLogBackend) ExportListens(ctx context.Context, oldestTimestamp
listens := make(models.ListensList, 0, len(b.log.Records))
client := strings.Split(b.log.Client, " ")[0]
for _, record := range b.log.Records {
p.Export.Total = int64(len(b.log.Records))
for _, record := range models.IterExportProgress(b.log.Records, &p, progress) {
listen := recordToListen(record, client)
if listen.ListenedAt.After(oldestTimestamp) {
listens = append(listens, recordToListen(record, client))
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 *ScrobblerLogBackend) ImportListens(ctx context.Context, export models.ListensResult, importResult models.ImportResult, progress chan models.TransferProgress) (models.ImportResult, error) {
p := models.TransferProgress{}.FromImportResult(importResult, false)
records := make([]scrobblerlog.Record, len(export.Items))
for i, listen := range export.Items {
for i, listen := range models.IterImportProgress(export.Items, &p, progress) {
records[i] = listenToRecord(listen)
}
lastTimestamp, err := b.log.Append(b.file, records)
@ -179,8 +180,6 @@ func (b *ScrobblerLogBackend) ImportListens(ctx context.Context, export models.L
importResult.UpdateTimestamp(lastTimestamp)
importResult.ImportCount += len(export.Items)
progress <- models.TransferProgress{}.FromImportResult(importResult, false)
return importResult, nil
}