]> gitweb.pimeys.fr Git - scripts-20-100.git/blobdiff - rename_series.py
[bind_ftp] Dossier spécifique pour l'Upload sur zeldren
[scripts-20-100.git] / rename_series.py
index 9ef1dc2d8433353788059dbaa35e09c80a83a844..8b049197a2456ce4c735cc4c3180d7f4596f2a61 100755 (executable)
@@ -15,13 +15,21 @@ FORMAT = "%%(series_name)s - [%%(season)0%(logmaxseason)sdx%%(episode)0%(logmaxe
 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)
@@ -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)