rendered paste body#!/usr/bin/pythonfrom os import rename, listdirfrom sys import argv, exitfrom urllib import urlopenimport reclass EpguidesParser: def __init__(self, url): print "making connection to %s..." % url site = urlopen(url) self.text = site.read() def parse(self): site = self.text title = site title = re.split('<h1><a href=".*?">(.*?)</a></h1>', site) self.title = title[1] site = site.split("<pre>") site = site[1].split("</pre>")[0] site = site.replace("\r", "") site = site.split("\n") del site[0] season_regexp = re.compile("^Season [0-9]+") url_regexp = re.compile('<a target="_blank" href=".*?">(.*?)</a>') space_regexp = re.compile("\s+") incomplete_regexp = re.compile("^[0-9]+\-$") episode_list = [] for line in site: if len(line) != 0 and not season_regexp.match(line) and not "Special" in line: line = url_regexp.split(line) del line[2] line[0] = space_regexp.split(line[0]) for element in line[0]: if len(element) == 0: del line[0][line[0].index(element)] info = line[0] info[0] = info[0].replace(".", "") split = info[1].split("-") if info[0] != "S-": if len(split[1]) == 0: del split[1] info[1] = info[1].replace("-", "") else: del info[1] info.insert(1, split[0]) info.insert(2, split[1]) if info[0] != "S-": info[3] = "%s %s %s" % (info[4], info[5], info[6]) del info[5:7] del info[4] episode = info episode.append(line[1]) episode_list.append(episode) self.episode_list = episode_list def episodesBySeason(self, season): episodes = [] for episode in self.episode_list: if episode[1] == season: episodes.append(episode) return episodesif __name__ == "__main__": print "%s - rename files according to their epguides.com description" % argv[0] try: argv[1] except IndexError: print "usage example: %s 1 http://www.epguides.com/4400/" % argv[0] exit() try: ep = EpguidesParser(argv[2]) except IOError: print "could not make connection to %s" % argv[2] exit() try: ep.parse() except: print "could not parse" exit() print eplist = ep.episodesBySeason(argv[1]) filelist = listdir("./") filelist2 = [] for file in filelist: if file[-3:] == "avi": filelist2.append(file) for file in filelist2: info = eplist[filelist2.index(file)] newname = "%s S%sE%s - %s.avi" % (ep.title, info[1].zfill(2), info[2].zfill(2), info[4]) print "%s => %s" % (file, newname) rename(file, newname) print print "%s files renamed." % (str(len(filelist2)))