SEASONEPISODE_REGEXP = ur"^(?P<series_name>([A-Za-z0-9_()-]+(\.| ))+)(S|- \[?)(?P<season>\d+)(E|x)(?P<episode>\d+).*\.(?P<extension>[a-z0-9]*)$"
sep_re = re.compile(SEASONEPISODE_REGEXP)
+def _tryint(s):
+ """Renvoie int(s) ou s si échec."""
+ try:
+ return int(s)
+ except:
+ return s
+
def get_titles(filename, debug=False, oneintwo=False):
"""Récupère les titres des épisodes dans le fichier"""
text = open(filename).read()
if oneintwo:
# On enlève une ligne sur deux
text = re.sub("(.*\n).*\n", r'\1', text)
- titles = re.findall('^[0-9\s]+"(.*?)"', text, flags=re.MULTILINE)
+ titles = re.findall('^([0-9\s]+)"(.*?)"', text, flags=re.MULTILINE)
+ titles = {_tryint(n) : title for (n, title) in titles}
if debug:
print "Titres :"
pprint.pprint(titles)
pprint.pprint(dir)
return dir
-def process(dir, titles, maxseason, seriesname, args):
+def process(dir, titles, maxseason, maxepisode, seriesname, args):
"""Prépare tous les renommages.
Renvoie une map before -> after."""
series_names = set([proper_name(d["series_name"]) for (_, d) in dir.values()])
raise ValueError("Pas autant de titres que d'épisodes !")
formatdir = {
"logmaxseason" : len(str(maxseason)),
- "logmaxepisode" : len(str(max(eps))),
+ "logmaxepisode" : max(len(str(max(eps))), len(str(maxepisode))),
"series_name" : series_name
}
map = []
parser.add_argument('-q', '--quiet', help="Ne pas afficher les warnings", action="store_true")
parser.add_argument('-t', '--titles', help="Fichier contenant les titres des épisodes", action="store", type=str, default="titles")
parser.add_argument('-m', '--maxseason', help="Nombre total de saisons (pour le nombre de 0)", action="store", type=str, default=1)
+ parser.add_argument('-M', '--maxepisode', help="Nombre total d'épisodes (pour le nombre de 0)", action="store", type=str, default=10)
parser.add_argument('-s', '--seriesname', help="Override le nom de la série", action="store", type=str)
parser.add_argument('-n', '--starting', help="Numéro du 1er épisode", action="store", type=int, default=1)
titles = get_titles(args.titles, args.verbose)
files = get_files(args.titles, args.verbose)
- map = process(files, titles, args.maxseason, args.seriesname, args)
+ map = process(files, titles, args.maxseason, args.maxepisode, args.seriesname, args)
if confirm(map):
do(map)