From 9eea05a70986b1a3cdce19777fcd0f9e0def6fc7 Mon Sep 17 00:00:00 2001 From: dbr Date: Sat, 8 Nov 2008 18:21:42 +1030 Subject: [PATCH] Shared regex configuration --- filename_config.py | 118 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 filename_config.py diff --git a/filename_config.py b/filename_config.py new file mode 100644 index 0000000..026f82d --- /dev/null +++ b/filename_config.py @@ -0,0 +1,118 @@ +#!/usr/bin/env python +#encoding:utf-8 + +import re + +# Regex configs +regex_config={} + +# Character class for valid episode/show names. +# Example: [a-zA-Z0-9\-'\ ] +regex_config['valid_in_names'] = "[\w\(\).,\[\]'\ \-?!#]" + + +tv_regex = {} + +################################### +# TV Filename Regexs +################################### +# Valid filenames, with episode name +# Should return 4 groups: +# Series name. +# Season number. +# Episode number. +# Episode name. +# Ignore filetype extension. +# +# If there are 3 groups, they are treated as: +# Series name, epiosde number, episode name. Season number is defaulted to "1" +# +# Show name - [01x01-02] - The Episode Name (Part 1) +# Show name - [01x23] - The Episode Name (Part 1) +# Show name - [01x23] - The Episode Name +# Show name - [01xExtra01] - DVD Extra Feature 1 +# Show name - [01xSpecial01] - Special Episode 1 +# Show name - [01] - First episode + +tv_regex['with_ep_name'] = [ + re.compile("^(%(valid_in_names)s+) - \[(\d{2})x(\d{2})\] - (%(valid_in_names)s+)$" % (regex_config)), + re.compile("^(%(valid_in_names)s+) - \[(\d{2})x(\d{2}-\d{2})\] - (%(valid_in_names)s+)$" % (regex_config)), + re.compile("^(%(valid_in_names)s+) - \[(\d{2})x(Special\d{1,2})\] - (%(valid_in_names)s+)$" % (regex_config)), + re.compile("^(%(valid_in_names)s+) - \[(\d{2})xExtra(\d{1,2})\] - (%(valid_in_names)s+)$" % (regex_config)), + re.compile("^(%(valid_in_names)s+) - \[(\d{2})] - (%(valid_in_names)s+)$" % (regex_config)), +] + +################################### +# Valid filenames, but missing episode name +# +# Show name - [04x01] +# Show name - [04x01-02] +# Show name - [04xSpecial01] +# Show name - [04xExtra01] +tv_regex['missing_ep_name'] = [ + re.compile("(%(valid_in_names)s+) - \[(\d{2})x(\d{2})\]" % (regex_config)), + re.compile("(%(valid_in_names)s+) - \[(\d{2})x(\d{2}-\d{2})\]"% (regex_config)), + re.compile("(%(valid_in_names)s+) - \[(\d{2})x(Special\d{1,2})\]" % (regex_config)), + re.compile("(%(valid_in_names)s+) - \[(\d{2})x(Extra\d{1,2})\]" % (regex_config)), + re.compile("(%(valid_in_names)s+) - \[(\d{2})x(Extra\d{1,2})\]" % (regex_config)) +] + +# Valid path names +tv_regex['valid_path'] = [ + re.compile("/./(.+?)/season (\d{1,2})$"), + re.compile("/./(.+?)/season (\d{1,2})/extras$"), + re.compile(".+?/Misc") +] + +################################### +# Regex to match valid, but not-to-be-processed files (dot-files, folder.jpg artwork) +################################### +tv_regex['decrappify'] = [ + re.compile("^Icon.{1}$"), + re.compile("(?=^[.]{1}.*)"), + re.compile("^folder.jpg$"), +] + + + +film_regex = {} +################################### +# Film Filename Regexs +################################### +# Valid filenames +# Should return 2 groups: +# Film name. +# Year. +# +# Ignore filetype extension +# +# The Film [2004] +film_regex['with_year'] = [ + re.compile("(%(valid_in_names)s+) \[(\d{4})\]$" % (regex_config)) +] + + +################################### +# Valid filenames, but missing year +# +# The Film +film_regex['missing_year'] = [ + re.compile("(%(valid_in_names)s+)$" % (regex_config)), +] + +################################### +# Valid paths +# +# ./ + +film_regex['valid_path'] = [ + re.compile("/.$"), +] + +################################### +# Regex to match valid, but not-to-be-processed files (dot-files, Icon) +################################### +film_regex['decrappify'] = [ + re.compile("^Icon.{1}$"), + re.compile("(?=^[.]{1}.*)") +]