Report abuse

#!/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("
  1. " + nombrePeliFormato + "" \ " Novedad
  2. ") else: nombrePeliFormato = formateaNombrePeli(nombrePeli) listadoPelis.write("
  3. " + nombrePeliFormato + "
  4. ") 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)