#!/usr/bin/python
from os import rename, listdir
from sys import argv, exit
from urllib import urlopen
import re
class 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 episodes
if __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)))