@@ -8,14 +8,27 @@ import (
88 log "github.com/sirupsen/logrus"
99)
1010
11+ func matchDurationFilter (duration_limit int64 , episode_duration int64 , operator string , logger log.FieldLogger ) bool {
12+ if duration_limit != 0 {
13+ if operator == "min" && episode_duration < duration_limit {
14+ logger .Info ("skipping due to duration filter" )
15+ return false
16+ } else if operator == "max" && episode_duration > duration_limit {
17+ logger .Info ("skipping due to duration filter" )
18+ return false
19+ }
20+ }
21+ return true
22+ }
23+
1124func matchRegexpFilter (pattern , str string , negative bool , logger log.FieldLogger ) bool {
1225 if pattern != "" {
1326 matched , err := regexp .MatchString (pattern , str )
1427 if err != nil {
1528 logger .Warnf ("pattern %q is not a valid" )
1629 } else {
1730 if matched == negative {
18- logger .Infof ("skipping due to mismatch" )
31+ logger .Infof ("skipping due to regexp mismatch" )
1932 return false
2033 }
2134 }
@@ -40,6 +53,14 @@ func matchFilters(episode *model.Episode, filters *feed.Filters) bool {
4053 if ! matchRegexpFilter (filters .NotDescription , episode .Description , true , logger .WithField ("filter" , "not_description" )) {
4154 return false
4255 }
56+
57+ if ! matchDurationFilter (filters .MinDuration , episode .Duration , "min" , logger .WithField ("filter" , "min_duration" )) {
58+ return false
59+ }
60+
61+ if ! matchDurationFilter (filters .MaxDuration , episode .Duration , "max" , logger .WithField ("filter" , "max_duration" )) {
62+ return false
63+ }
4364
4465 return true
4566}
0 commit comments