From 3e9ebfb9af353fc9fe8c1e4844bbd531de9be78e Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Sat, 9 Dec 2023 18:10:34 +0100 Subject: [PATCH] Fixed Deezer listen export count --- internal/backends/deezer/deezer.go | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/internal/backends/deezer/deezer.go b/internal/backends/deezer/deezer.go index 802d1ab..c796af3 100644 --- a/internal/backends/deezer/deezer.go +++ b/internal/backends/deezer/deezer.go @@ -83,10 +83,14 @@ func (b *DeezerApiBackend) ExportListens(oldestTimestamp time.Time, results chan offset := math.MaxInt32 perPage := MaxItemsPerGet + startTime := time.Now() + minTime := oldestTimestamp + + totalDuration := startTime.Sub(oldestTimestamp) + defer close(results) - p := models.Progress{Total: int64(perPage)} - var totalCount int + p := models.Progress{Total: int64(totalDuration.Seconds())} out: for { @@ -101,7 +105,6 @@ out: // and continue. if offset >= result.Total { p.Total = int64(result.Total) - totalCount = result.Total offset = result.Total - perPage if offset < 0 { offset = 0 @@ -120,15 +123,19 @@ out: if listen.ListenedAt.Unix() > oldestTimestamp.Unix() { listens = append(listens, listen) } else { - totalCount -= 1 break } } sort.Sort(listens) - results <- models.ListensResult{Items: listens, Total: totalCount} - p.Elapsed += int64(count) + if len(listens) > 0 { + minTime = listens[0].ListenedAt + } + + remainingTime := startTime.Sub(minTime) + p.Elapsed = int64(totalDuration.Seconds() - remainingTime.Seconds()) progress <- p + results <- models.ListensResult{Items: listens, OldestTimestamp: minTime} if offset <= 0 { // This was the last request, no further results @@ -141,6 +148,7 @@ out: } } + results <- models.ListensResult{OldestTimestamp: minTime} progress <- p.Complete() }