Actualizando imagenes de productos con xmlrpc

A partir de las imagenes de un website

Gustavo Orrillo
- 07/02/2020 - 1 min. de lectura


Trabajando para un cliente con un extenso catalogo de productos, me encontré con la necesidad de tener que actualizar los mismos en base a sus imagenes que se encontraban alojadas en su website. Como hacerlo entonces? Para ello utilicé dos herramientas; xmlrpc (como era de suponerse) y el paquete wget de Python, el cual me resultó muy util. Como podrán suponer en base al nombre, dicho módulo implementa el comando wget en python. Y es muy simple, despues de instalarlo:

pip install wget

se lo puede utilizar de la siguiente forma:

image_url = 'http://www.demo.com/image.png'
image_filename = wget.download(image_url)
print(image_filename)
Sensacional, con eso a mano, no fue dificil hacer un script en Python que mediante xmlrpc. Para ello mediante pymysql recorriamos una tabla de una base de datos, y obteniamos por producto la url de la imagen del mismo. Descargabamos la imagen mediante wget y actualizabamos el campo de la imagen en Odoo. La parte del script que hace esto se encuentra a continuación:


SQL = "select code,filename from productos"
cur.execute(SQL)
rows = cur.fetchall()
image_url = 'https://www.demo.com/imagenes/'
for i,row in enumerate(rows):
        print(i,row)
        image_filename = wget.download(image_url + row['filename'])
        print(image_filename)
        product_tmpl_id = sock.execute(dbname,uid,pwd,'product.template','search',[('default_code','=',row['code'])])
        if product_tmpl_id:
                f = open(image_filename,'rb')
                image = f.read()
                imageBase64 = base64.b64encode(image)
                vals = {
                        'image_1920': imageBase64,
                        }
                return_id = sock.execute(dbname,uid,pwd,'product.template','write',product_tmpl_id,vals)
                print return_id


 


Acerca de:

Gustavo Orrillo

Passionate about programming, he has implemented Odoo for different types of businesses since 2010. In Moldeo Interactive he is a founding Partner and Programmer; In addition to writing on the Blog about different topics related to the developments he makes.