X-Git-Url: http://gitweb.pimeys.fr/?p=scripts-20-100.git;a=blobdiff_plain;f=rename_series.py;h=60e6d5e94abe58e940e65be8f78083208b7ffb2e;hp=4bc4c81769f131f5309124d85a42f0078bb3eb89;hb=ae1c96ff21bdfe773fab67a92d3404d13d616dce;hpb=ab7839b3a8293bfeb93c37d1b58e08ff80073d3f diff --git a/rename_series.py b/rename_series.py index 4bc4c81..60e6d5e 100755 --- a/rename_series.py +++ b/rename_series.py @@ -12,16 +12,24 @@ import pprint FORMAT = "%%(series_name)s - [%%(season)0%(logmaxseason)sdx%%(episode)0%(logmaxepisode)sd] - %%(title)s.%%(extension)s" -SEASONEPISODE_REGEXP = ur"^(?P([A-Za-z0-9_-]+(\.| ))+)(S|- \[)(?P\d+)(E|x)(?P\d+).*\.(?P[a-z0-9]*)$" +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) @@ -67,11 +75,11 @@ def process(dir, titles, maxseason, seriesname, args): series_name = raw_input("Spécifier titre : ") else: series_name = list(series_names)[0] - l = range(1, len(dir) + 1) + l = range(args.starting, args.starting + len(dir)) eps = dir.keys() eps.sort() if eps != l: - raise ValueError("Il manque des épisodes : %s" % eps) + raise ValueError("N° titres ≠ N° épisodes : %s ≠ %s" % (l, eps)) if len(titles) != len(eps): print "Pas autant de titres que d'épisodes : on retente en lisant une ligne sur deux." titles = get_titles(args.titles, oneintwo=True) @@ -86,7 +94,7 @@ def process(dir, titles, maxseason, seriesname, args): for k in eps: (before, d) = dir[k] d.update(formatdir) - d["title"] = titles[k-1] + d["title"] = titles[k] newname = FORMAT % d newname = newname % d map.append((before, newname)) @@ -113,6 +121,7 @@ if __name__ == "__main__": 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('-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) args = parser.parse_args()