X-Git-Url: http://gitweb.pimeys.fr/?p=scripts-20-100.git;a=blobdiff_plain;f=rename_series.py;h=8b049197a2456ce4c735cc4c3180d7f4596f2a61;hp=9ef1dc2d8433353788059dbaa35e09c80a83a844;hb=9ad2a272dd90a939590df3881cbe98ad174d1214;hpb=27a13a179a04abe4e2989e66a9dee68796402c9e diff --git a/rename_series.py b/rename_series.py index 9ef1dc2..8b04919 100755 --- a/rename_series.py +++ b/rename_series.py @@ -15,13 +15,21 @@ FORMAT = "%%(series_name)s - [%%(season)0%(logmaxseason)sdx%%(episode)0%(logmaxe SEASONEPISODE_REGEXP = ur"^(?P([A-Za-z0-9_()-]+(\.| ))+)(S|- \[?)(?P\d+)(E|x)(?P\d+).*\.(?P[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) @@ -55,7 +63,7 @@ def get_files(titlesfilename, debug=False): 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()]) @@ -79,7 +87,7 @@ def process(dir, titles, maxseason, seriesname, args): 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 = [] @@ -112,6 +120,7 @@ if __name__ == "__main__": 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) @@ -119,6 +128,6 @@ if __name__ == "__main__": 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)