# Author: Nic Wolfe # URL: http://code.google.com/p/sickbeard/ # # This file is part of Sick Beard. # # Sick Beard is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Sick Beard is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Sick Beard. If not, see . # all regexes are case insensitive ep_regexes = [ ('standard_repeat', # Show.Name.S01E02.S01E03.Source.Quality.Etc-Group # Show Name - S01E02 - S01E03 - S01E04 - Ep Name ''' ^(?P.+?)[. _-]+ # Show_Name and separator s(?P\d+)[. _-]* # S01 and optional separator e(?P\d+) # E02 and separator ([. _-]+s(?P=season_num)[. _-]* # S01 and optional separator e(?P\d+))+ # E03/etc and separator [. _-]*((?P.+?) # Source_Quality_Etc- ((?[^- ]+))?)?$ # Group '''), ('fov_repeat', # Show.Name.1x02.1x03.Source.Quality.Etc-Group # Show Name - 1x02 - 1x03 - 1x04 - Ep Name ''' ^(?P.+?)[. _-]+ # Show_Name and separator (?P\d+)x # 1x (?P\d+) # 02 and separator ([. _-]+(?P=season_num)x # 1x (?P\d+))+ # 03/etc and separator [. _-]*((?P.+?) # Source_Quality_Etc- ((?[^- ]+))?)?$ # Group '''), ('standard', # Show.Name.S01E02.Source.Quality.Etc-Group # Show Name - S01E02 - My Ep Name # Show.Name.S01.E03.My.Ep.Name # Show.Name.S01E02E03.Source.Quality.Etc-Group # Show Name - S01E02-03 - My Ep Name # Show.Name.S01.E02.E03 ''' ^((?P.+?)[. _-]+)? # Show_Name and separator s(?P\d+)[. _-]* # S01 and optional separator e(?P\d+) # E02 and separator (([. _-]*e|-) # linking e/- char (?P(?!(1080|720)[pi])\d+))* # additional E03/etc [. _-]*((?P.+?) # Source_Quality_Etc- ((?[^- ]+))?)?$ # Group '''), ('fov', # Show_Name.1x02.Source_Quality_Etc-Group # Show Name - 1x02 - My Ep Name # Show_Name.1x02x03x04.Source_Quality_Etc-Group # Show Name - 1x02-03-04 - My Ep Name ''' ^((?P.+?)[\[. _-]+)? # Show_Name and separator (?P\d+)x # 1x (?P\d+) # 02 and separator (([. _-]*x|-) # linking x/- char (?P (?!(1080|720)[pi])(?!(?<=x)264) # ignore obviously wrong multi-eps \d+))* # additional x03/etc [\]. _-]*((?P.+?) # Source_Quality_Etc- ((?[^- ]+))?)?$ # Group '''), ('scene_date_format', # Show.Name.2010.11.23.Source.Quality.Etc-Group # Show Name - 2010-11-23 - Ep Name ''' ^((?P.+?)[. _-]+)? # Show_Name and separator (?P\d{4})[. _-]+ # 2010 and separator (?P\d{2})[. _-]+ # 11 and separator (?P\d{2}) # 23 and separator [. _-]*((?P.+?) # Source_Quality_Etc- ((?[^- ]+))?)?$ # Group '''), ('stupid', # tpz-abc102 ''' (?P.+?)-\w+?[\. ]? # tpz-abc (?!264) # don't count x264 (?P\d{1,2}) # 1 (?P\d{2})$ # 02 '''), ('verbose', # Show Name Season 1 Episode 2 Ep Name ''' ^(?P.+?)[. _-]+ # Show Name and separator season[. _-]+ # season and separator (?P\d+)[. _-]+ # 1 episode[. _-]+ # episode and separator (?P\d+)[. _-]+ # 02 and separator (?P.+)$ # Source_Quality_Etc- '''), ('season_only', # Show.Name.S01.Source.Quality.Etc-Group ''' ^((?P.+?)[. _-]+)? # Show_Name and separator s(eason[. _-])? # S01/Season 01 (?P\d+)[. _-]* # S01 and optional separator [. _-]*((?P.+?) # Source_Quality_Etc- ((?[^- ]+))?)?$ # Group ''' ), ('no_season_multi_ep', # Show.Name.E02-03 # Show.Name.E02.2010 ''' ^((?P.+?)[. _-]+)? # Show_Name and separator (e(p(isode)?)?|part|pt)[. _-]? # e, ep, episode, or part (?P(\d+|[ivx]+)) # first ep num ((([. _-]+(and|&|to)[. _-]+)|-) # and/&/to joiner (?P(?!(1080|720)[pi])(\d+|[ivx]+))[. _-]) # second ep num ([. _-]*(?P.+?) # Source_Quality_Etc- ((?[^- ]+))?)?$ # Group ''' ), ('no_season_general', # Show.Name.E23.Test # Show.Name.Part.3.Source.Quality.Etc-Group # Show.Name.Part.1.and.Part.2.Blah-Group ''' ^((?P.+?)[. _-]+)? # Show_Name and separator (e(p(isode)?)?|part|pt)[. _-]? # e, ep, episode, or part (?P(\d+|([ivx]+(?=[. _-])))) # first ep num ([. _-]+((and|&|to)[. _-]+)? # and/&/to joiner ((e(p(isode)?)?|part|pt)[. _-]?) # e, ep, episode, or part (?P(?!(1080|720)[pi]) (\d+|([ivx]+(?=[. _-]))))[. _-])* # second ep num ([. _-]*(?P.+?) # Source_Quality_Etc- ((?[^- ]+))?)?$ # Group ''' ), ('bare', # Show.Name.102.Source.Quality.Etc-Group ''' ^(?P.+?)[. _-]+ # Show_Name and separator (?P\d{1,2}) # 1 (?P\d{2}) # 02 and separator ([. _-]+(?P(?!\d{3}[. _-]+)[^-]+) # Source_Quality_Etc- (-(?P.+))?)?$ # Group '''), ('no_season', # Show Name - 01 - Ep Name # 01 - Ep Name # 01 - Ep Name ''' ^((?P.+?)(?:[. _-]{2,}|[. _]))? # Show_Name and separator (?P\d{1,2}) # 02 (?:-(?P\d{1,2}))* # 02 [. _-]+((?P.+?) # Source_Quality_Etc- ((?[^- ]+))?)?$ # Group ''' ), ] sports_regexs = [ ('sports_standard', # Sports.Name.2010.11.23.Source.Quality.Etc-Group # Sports.Name.23rd.Nov.2010.Source.Quality.Etc-Group ''' ^(?P(UEFA|MLB|ESPN|WWE|MMA|UFC|TNA|EPL|NASCAR|NBA|NFL|NHL|NRL|PGA|SUPER LEAGUE|FORMULA|FIFA|NETBALL|MOTOGP))[. _-]+ ((?P\d{3})[. _-]+)? ((?P\w+)[. _-]+)? (?P(\d{4}[. _-]+\d{1,2}[. _-]+\d{1,2})|(\d{1,2}\w{2}[. _-]+\w+[. _-]+\d{4})) [. _-]*((?P.+?)((?[^- ]+))?)?$ ''' ), ]