diff --git a/internal/handler/download.go b/internal/handler/download.go index 1989a2a..9c94392 100644 --- a/internal/handler/download.go +++ b/internal/handler/download.go @@ -439,11 +439,18 @@ func (h *Handler) trackDownloadProgress(ctx context.Context, job *domain.Downloa return } - if upd.Progress > 0 && lastProgress == 0 { + if lastProgress == 0 { lastProgress = upd.Progress - } else if upd.Progress-lastProgress < domain.ProgressThreshold { - continue } else { + diff := upd.Progress - lastProgress + // Skip small changes (< threshold) in either direction to avoid spamming edits. + // HLS streams often emit a fake 100% initial estimate then real values. + if diff >= 0 && diff < domain.ProgressThreshold { + continue + } + if diff < 0 && -diff < domain.ProgressThreshold { + continue + } lastProgress = upd.Progress } diff --git a/internal/handler/keyboard.go b/internal/handler/keyboard.go index 4b236ac..ab0bded 100644 --- a/internal/handler/keyboard.go +++ b/internal/handler/keyboard.go @@ -69,7 +69,7 @@ func languageKeyboard(languages []string) models.InlineKeyboardMarkup { func progressKeyboard(pct float64, speed, eta string) models.InlineKeyboardMarkup { progressText := fmt.Sprintf("%.1f%%", pct) if speed != "" { - progressText += fmt.Sprintf(" | %s/s", speed) + progressText += fmt.Sprintf(" | %s", speed) } if eta != "" { progressText += fmt.Sprintf(" | ETA %s", eta)