Autor

Alejandro Alcalde

Graduado en Ingeniería Informática en la ETSIIT, Granada. Creador de El Baúl del Programador

Más artículos de Alejandro Alcalde

Hace poco me encontré con el problema de añadir a todas las etiquetas de imágenes del blog los atributos de tamaño (Altura y anchura). Hacerlo a mano era inviable debido a la cantidad de artículos. Así que pensé que una buena forma sería hacerlo con python. El razonamiento es el siguiente:


¿Te gusta el blog? Ayúdame a seguir escribiendo


Para llevar a cabo la tarea he usado el módulo BeautifulSoup. A continuación se muestra el código comentado:

#!/bin/python

from BeautifulSoup import BeautifulSoup
from os.path import basename, splitext
from PIL import Image
import glob

# Ruta a la carpeta que contiene los ficheros, en este caso
# cualquier fichero markdown
path = "/ruta/ficheros/*.md"

# Iteramos para cada fichero
for fname in glob.glob(path):
    # Lo abrimos
    f = open(fname)
    # Creamos un objeto BeautifulSoup para parsear el fichero
    soup = BeautifulSoup(f)
    f.close()

    # Para cada etiqueta de imagen que encontremos en el fichero
    for img in soup.findAll('img'):
        if img != None:
            try:
                if img['src'].startswith("/assets") == True:
                    # Abrimos la imagen
                    pil = Image.open("/ruta/carpeta/imagenes" + img['src'])
                    # Obtenemos su tamaño
                    width, height = pil.size
                    # Modificamos la etiqueta HTML para añadirle el tamaño
                    img['width'] = str(width) + "px"
                    img['height'] = str(height) + "px"
            except KeyError:
                pass

    # Guardamos el fichero modificado
    with open(fname, "wb") as file:
        file.write(str(soup))

Espero que os resulte útil, he subido el script a github.

Referencias

¿Has visto algún error?: Por favor, ayúdame a corregirlo contactando conmigo.

Categorías:Etiquetas:

Quizá también te interese leer...