diff --git a/src/nefarious/parsers/movie.py b/src/nefarious/parsers/movie.py index 60524df0..c92b5fab 100644 --- a/src/nefarious/parsers/movie.py +++ b/src/nefarious/parsers/movie.py @@ -13,11 +13,11 @@ class MovieParser(ParserBase): regex.compile(r"^(?(?![(\[]).+?)((\W|_))(?:(?<!(19|20)\d{2}.)(German|French|TrueFrench))(.+?)(?=((19|20)\d{2}|$))(?<year>(19|20)\d{2}(?!p|i|\d+|\]|\W\d+))?(\W+|_|$)(?!\\)", regex.I), ), ( - 'Special, Despecialized, etc. Edition Movies, e.g: Mission.Impossible.3.Special.Edition.2011', + 'Special, Despecialized, etc. Edition Movies, e.g.: Mission.Impossible.3.Special.Edition.2011', regex.compile(r"^(?<title>(?![(\[]).+?)?(?:(?:[-_\W](?<![)\[!]))*\(?(?<edition>(((Extended.|Ultimate.)?(Director.?s|Collector.?s|Theatrical|Ultimate|Final(?=(.(Cut|Edition|Version)))|Extended|Rogue|Special|Despecialized|\d{2,3}(th)?.Anniversary)(.(Cut|Edition|Version))?(.(Extended|Uncensored|Remastered|Unrated|Uncut|IMAX|Fan.?Edit))?|((Uncensored|Remastered|Unrated|Uncut|IMAX|Fan.?Edit|Edition|Restored|((2|3|4)in1))))))\)?.{1,3}(?<year>(19|20)\d{2}(?!p|i|\d+|\]|\W\d+)))+(\W+|_|$)(?!\\)", regex.I), ), ( - 'Normal movie format, e.g: Mission.Impossible.3.2011', + 'Normal movie format, e.g.: Mission.Impossible.3.2011', regex.compile(r"^(?<title>(?![(\[]).+?)?(?:(?:[-_\W](?<![)\[!]))*(?<year>(19|20)\d{2}(?!p|i|(19|20)\d{2}|\]|\W(19|20)\d{2})))+(\W+|_|$)(?!\\)", regex.I), ), ( diff --git a/src/nefarious/tasks.py b/src/nefarious/tasks.py index 8bb63d06..a6b2ce75 100644 --- a/src/nefarious/tasks.py +++ b/src/nefarious/tasks.py @@ -294,7 +294,18 @@ def wanted_media_task(): for media_type, data in wanted_media_data.items(): for media in data['query']: - # media has been released (or it's missing it's release date so try anyway) so create a task to try and fetch it + # skip episodes attempts if last attempt was within x days, and we're past release date by x days + if media_type == 'episode': + days_since_last_attempt = (today - media.last_attempt_date).days if media.last_attempt_date else None + days_since_release = abs(today - media.release_date).days if media.release_date else None + is_too_recent_to_check_for_old_episodes = all([ + days_since_last_attempt is not None and days_since_last_attempt <= 7, + days_since_release is not None and days_since_release >= 7, + ]) + if is_too_recent_to_check_for_old_episodes: + logger_background.info(f=f"skipping wanted media {media} since it's been released for a while and attempted recently") + continue + # media has been released (or it's missing its release date so try anyway) so create a task to try and fetch it if not media.release_date or media.release_date <= today: logger_background.info('Wanted {type}: {media}'.format(type=media_type, media=media)) # queue task for wanted media