def run(verbose): preprocesados = preprocesar.get_top_htmls() pi = ParseaImagenes() for dir3, fname, _ in preprocesados: if verbose: print "Extrayendo imgs de %s/%s" % (dir3.encode("utf8"), fname.encode("utf8")) pi.parsea(dir3, fname) pi.dump() return pi.imgs_ok, pi.cant
def run(verbose): # tomar los preprocesador ordenados de más importante a menos preprocesados = preprocesar.get_top_htmls() # levantamos la relación artículos -> imágenes pag_imagenes = {} with codecs.open(config.LOG_IMAGPROC, "r", "utf-8") as fh: for linea in fh: partes = linea.strip().split(config.SEPARADOR_COLUMNAS) dir3 = partes[0] fname = partes[1] dskurls = partes[2:] pag_imagenes[dir3, fname] = dskurls # hacemos una lista de las páginas, anotando en que posición la # encontramos por primera vez, para luego ordenar por eso (de esta manera, # si una misma imagen está en un artículo importante y en otro que no, la # imagen va a quedar al 100%) imagenes = {} for posic_archivo, (dir3, fname, _) in enumerate(preprocesados): # sacamos qué imágenes le corresponde a este archivo dskurls = pag_imagenes[(dir3, fname)] # para cada imagen (si no estaba de antes), guardamos la posición # del archivo for url in dskurls: if url not in imagenes: imagenes[url] = posic_archivo total_imagenes = len(imagenes) imagenes = sorted(imagenes.items(), key=operator.itemgetter(1)) # levantamos la lista de imágenes para a relacionarlas con la weburl dskweb = {} with codecs.open(config.LOG_IMAGENES, "r", "utf-8") as fh: for linea in fh: dsk, web = linea.strip().split(config.SEPARADOR_COLUMNAS) dskweb[dsk] = web escalador = Escalador(total_imagenes) log_reduccion = codecs.open(config.LOG_REDUCCION, "w", "utf8") for i, (dskurl, _) in enumerate(imagenes): escala = escalador(i) if escala == 0: # ya estamos, no más imágenes log_reduccion.close() return weburl = dskweb[dskurl] info = (str(int(escala)), dskurl, weburl) log_reduccion.write(config.SEPARADOR_COLUMNAS.join(info) + "\n")