All pastes #149220 Raw Edit

Stuff

public text v1 · immutable
#149220 ·published 2006-08-25 16:31 UTC
rendered paste body
#!/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)))