|
|
#!/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("El Listado de Peliculas"\
"")
# 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("Peliculas del genero: " + nombreGenero + " ")
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("- " + nombrePeliFormato + "" \
"
")
else:
nombrePeliFormato = formateaNombrePeli(nombrePeli)
listadoPelis.write("- " + nombrePeliFormato + "
")
listadoPelis.write(" ")
# Cerramos la página HTML
listadoPelis.write("")
# 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)
|