DEV Community

Cover image for Acortar URL + Código QR, en Python
Bruno Sarverry
Bruno Sarverry

Posted on

Acortar URL + Código QR, en Python

Acortar URL permite simplificar y hacer más atractivo estéticamente un link, como también poder registrar los click que realizan en ellos.
Los códigos QR ayudan a la comodidad del usuario, evitando introducir datos de forma manual en los teléfonos.
La suma de ambos dará como resultado un Código QR lo más reducido en tamaño posible, resultando más atractivo en lo estético, y pudiendo además(gracias a los servicios acortadores de URL) tener información estadística del uso del mismo.
Todo esto, usando uno de los lenguajes de programación de más auge en estos últimos tiempos.

Acortar URL

La manera más fácil y rápida es usando la librería pyshorteners, que pone a disposición muchas APIs acortadoras de URL para usar.
Instalamos directamente de PyPi:

pip install pyshorteners
Enter fullscreen mode Exit fullscreen mode

Aquí una lista de los servicios disponible para acortar las urls, con sus implementaciones respectivas.
Para nuestro ejemplo usaremos da.gd como solución:

import pyshorteners

shortener = pyshorteners.Shortener()
short_url = shortener.dagd.short('https://en.wikipedia.org/wiki/Jon_Snow_(character)')
print(short_url) # https://da.gd/5X3NV
Enter fullscreen mode Exit fullscreen mode

De esta manera reducimos notablemente la cantidad de carácteres, que nos servirá para el siguiente paso.

Generar QR

Nos apoyaremos de las librerías python-qrcode y Pillow(Python Imaging Library) para crear los códigos.
Instalamos directamente de PyPi:

pip install qrcode pillow
Enter fullscreen mode Exit fullscreen mode

Y aplicamos:

import qrcode

qr = qrcode.QRCode(
    box_size=5,
    error_correction = qrcode.constants.ERROR_CORRECT_M,
    )
qr.add_data('https://da.gd/5X3NV')
qr.make(fit=True)

img = qr.make_image()
img.show()
Enter fullscreen mode Exit fullscreen mode

El parámetro box_size es el tamaño en píxeles de cada cuadrado del QR.
Con error_correction definimos la corrección de errores para el QR. Hay 4 constantes definidas dentro de la librería de códigos QR (a mayor porcentaje de corrección, posiblemente dimensiones más grande del QR):

  • ERROR_CORRECT_L: corrección de errores del 7% o menos.
  • ERROR_CORRECT_M(por defecto): corrección de errores del 15% o menos.
  • ERROR_CORRECT_Q: corrección de errores del 25% o menos.
  • ERROR_CORRECT_H: corrección de errores del 30% o menos. Alt Text

Definiendo a fit igual a True determina el tamaño del QR automaticamente a partir del valor de entrada en add_data.

Resultado

El producto final(comparándolo con la misma URL sin acortar) es:
Alt Text

Conclusión

Para la experiencia de usuario: a más pequeño un código QR, menos complejo al ojo humano, y visualmente más atractivo.
Por tanto hay que tener en cuenta que:

  • a mayor cantidad de carácteres, más grande las dimensiones del código QR;
  • a más grande las dimensiones del código QR, más le cuesta al smartphone procesar el contenido a escanear.

Podemos también tener estadísticas de interés sobre las reacciones/escanéos del código QR que hicimos, a partir de la función de contabilización de clicks al enlace que ofrece algunos servicios, por ejemplo bit.ly.

import pyshorteners

shortener = pyshorteners.Shortener(api_key='YOUR_KEY')
shortener.bitly.total_clicks('https://bit.ly/TEST')
Enter fullscreen mode Exit fullscreen mode

Top comments (0)