Fixed Deezer listen export count

This commit is contained in:
Philipp Wolfer 2023-12-09 18:10:34 +01:00
parent 08514e5eac
commit 3e9ebfb9af
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B

View file

@ -83,10 +83,14 @@ func (b *DeezerApiBackend) ExportListens(oldestTimestamp time.Time, results chan
offset := math.MaxInt32 offset := math.MaxInt32
perPage := MaxItemsPerGet perPage := MaxItemsPerGet
startTime := time.Now()
minTime := oldestTimestamp
totalDuration := startTime.Sub(oldestTimestamp)
defer close(results) defer close(results)
p := models.Progress{Total: int64(perPage)} p := models.Progress{Total: int64(totalDuration.Seconds())}
var totalCount int
out: out:
for { for {
@ -101,7 +105,6 @@ out:
// and continue. // and continue.
if offset >= result.Total { if offset >= result.Total {
p.Total = int64(result.Total) p.Total = int64(result.Total)
totalCount = result.Total
offset = result.Total - perPage offset = result.Total - perPage
if offset < 0 { if offset < 0 {
offset = 0 offset = 0
@ -120,15 +123,19 @@ out:
if listen.ListenedAt.Unix() > oldestTimestamp.Unix() { if listen.ListenedAt.Unix() > oldestTimestamp.Unix() {
listens = append(listens, listen) listens = append(listens, listen)
} else { } else {
totalCount -= 1
break break
} }
} }
sort.Sort(listens) sort.Sort(listens)
results <- models.ListensResult{Items: listens, Total: totalCount} if len(listens) > 0 {
p.Elapsed += int64(count) minTime = listens[0].ListenedAt
}
remainingTime := startTime.Sub(minTime)
p.Elapsed = int64(totalDuration.Seconds() - remainingTime.Seconds())
progress <- p progress <- p
results <- models.ListensResult{Items: listens, OldestTimestamp: minTime}
if offset <= 0 { if offset <= 0 {
// This was the last request, no further results // This was the last request, no further results
@ -141,6 +148,7 @@ out:
} }
} }
results <- models.ListensResult{OldestTimestamp: minTime}
progress <- p.Complete() progress <- p.Complete()
} }