FORMAT = "%%(series_name)s - [%%(season)0%(logmaxseason)sdx%%(episode)0%(logmaxepisode)sd] - %%(title)s.%%(extension)s"
-SEASONEPISODE_REGEXP = ur"^(?P<series_name>([A-Za-z0-9_-]+(\.| ))+)(S|\[)(?P<season>\d+)(E|x)(?P<episode>\d+).*\.(?P<extension>[a-z0-9]*)$"
+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 get_titles(filename, debug=False, oneintwo=False):
if oneintwo:
# On enlève une ligne sur deux
text = re.sub("(.*\n).*\n", r'\1', text)
- titles = re.findall('"(.*)"', text)
+ titles = re.findall('^[0-9\s]+"(.*?)"', text, flags=re.MULTILINE)
if debug:
print "Titres :"
pprint.pprint(titles)
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)
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))
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()