podcast.go 866 B

12345678910111213141516171819202122232425262728293031323334
  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. // normalizeDuration returns the duration tag value as a number of minutes
  12. func normalizeDuration(rawDuration string) (int, error) {
  13. var sumSeconds int
  14. durationParts := strings.Split(rawDuration, ":")
  15. if len(durationParts) > 3 {
  16. return 0, ErrInvalidDurationFormat
  17. }
  18. for i, durationPart := range durationParts {
  19. durationPartValue, err := strconv.Atoi(durationPart)
  20. if err != nil {
  21. return 0, ErrInvalidDurationFormat
  22. }
  23. sumSeconds += int(math.Pow(60, float64(len(durationParts)-i-1))) * durationPartValue
  24. }
  25. return sumSeconds / 60, nil
  26. }