Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
#!/usr/bin/python # -*- coding: utf-8 -*- # Tercer script Python. # Fede Diaz (nordri) Mayo 2008 # Este script recorre el disco externo y genera un listado de las peliculas # en HTML con enlaces a film affinity. # 01-07-08 Las novedades se marcan en negrita. import os import avisoPorEmail # Eliminamos la extension al nombre del archivo def formateaNombrePeli(n): t = n.split(".avi") return t[0] # Esta función recibe una ruta y la explora clonando el contenido. def listado(path): try: for fichero in os.listdir(path): fname = os.path.join(path, fichero) if os.path.isdir(fname): os.makedirs(pathOld + fname) # crea directorio y padres listado(fname) else: file = open(pathOld + fname, "w") file.close() except OSError, e: print e # Esta función crea listas con el contenido del árbol de directorio. def listadoCompletoPelis(path, i): try: for fichero in os.listdir(path): fname = os.path.join(path, fichero) if os.path.isdir(fname): i.append(fichero) listadoCompletoPelis(fname, i) else: i.append(fichero) return i except OSError, e: print e def listadoNovedades(a, b): i = [] for peli in a: if not peli in b: i.append(peli) return i path = "/tmp/mnt/backup/pelis" pathOld = "/home/nordri/bin/var" listadoPelis = open("/tmp/listado.html", "w") # Escribimos en el fichero la cabezera HTML listadoPelis.write("<html><head><title>El Listado de Peliculas</title>"\ "</head><body bgcolor=\"#efefef\" text=\"black\" " \ "link=\"blue\" vlink=\"#551A8B\" alink=\"red\">") # Creamos la lista de generos y los ordenamos generos = os.listdir(path) generos.sort() # Creamos dos listas, una con la sesión anterior, otra con la actual, les # hacemos la intersección y nos quedamos con las novedades. sesionActual = listadoCompletoPelis(path, []) sesionPasada = listadoCompletoPelis(pathOld, []) novedades = listadoNovedades(sesionActual, sesionPasada) # En generos tenemos la lista de generos, luego, por cada uno recorremos los # archivos y los metemos en pelis. De igual forma, por cada peli la formateamos # (le quitamos la extensión) y la añadimos a la lista. # Se hace una discriminación para evitar archivos de subtitulo y añadir algun # subdirectorio (de Series y Documentales) for nombreGenero in generos: listadoPelis.write("<p><b>Peliculas del genero: " + nombreGenero + "</b></p><ol>") pelis = os.listdir(path + "/" + nombreGenero) pelis.sort() for nombrePeli in pelis: if nombrePeli.endswith("avi") or os.path.isdir(path + "/" + nombreGenero + "/" + nombrePeli): if nombrePeli in novedades: nombrePeliFormato = formateaNombrePeli(nombrePeli) listadoPelis.write("<li><b><a href=\"http://www.filmaffinity.com/es/" \ "search.php?stext=" + nombrePeliFormato + \ "&stype%5B%5D=title&genre=&country=&fromyear=&" \ "toyear=\">" + nombrePeliFormato + "</a></b>" \ "<font color=\"red\"><blink> Novedad</blink></font></li>") else: nombrePeliFormato = formateaNombrePeli(nombrePeli) listadoPelis.write("<li><a href=\"http://www.filmaffinity.com/es/" \ "search.php?stext=" + nombrePeliFormato + \ "&stype%5B%5D=title&genre=&country=&fromyear=&" \ "toyear=\">" + nombrePeliFormato + "</a></li>") listadoPelis.write("</ol>") # Cerramos la página HTML listadoPelis.write("</body></html>") # Cerramos el fichero listadoPelis.close() # Avisamos a la peña con las nuevas pelis dires = [ direcciones en una lista ] avisoPorEmail.mail('/tmp/listado.html', "Listado de peliculas", dires, 'html') # Regeneramos el arbol con el contenido actual del disco. # Creamos la raiz del objetivo os.system('rm -r ' + pathOld) if not os.path.exists(pathOld): os.makedirs(pathOld) if not os.path.exists(pathOld + path): os.makedirs(pathOld + path) listado(path)
This paste will be private.
From the Design Piracy series on my blog: