podcast.go 794 B

123456789101112131415161718192021222324252627282930313233
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package rss // import "miniflux.app/v2/internal/reader/rss"
  4. import (
  5. "errors"
  6. "math"
  7. "strconv"
  8. "strings"
  9. )
  10. var errInvalidDurationFormat = errors.New("rss: invalid duration format")
  11. func getDurationInMinutes(rawDuration string) (int, error) {
  12. var sumSeconds int
  13. durationParts := strings.Split(rawDuration, ":")
  14. if len(durationParts) > 3 {
  15. return 0, errInvalidDurationFormat
  16. }
  17. for i, durationPart := range durationParts {
  18. durationPartValue, err := strconv.Atoi(durationPart)
  19. if err != nil {
  20. return 0, errInvalidDurationFormat
  21. }
  22. sumSeconds += int(math.Pow(60, float64(len(durationParts)-i-1))) * durationPartValue
  23. }
  24. return sumSeconds / 60, nil
  25. }