<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Bruno Sarverry</title>
    <description>The latest articles on DEV Community by Bruno Sarverry (@bruino).</description>
    <link>https://dev.to/bruino</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F612764%2F7100568a-1c7a-4ca0-84f1-ab93f946592a.png</url>
      <title>DEV Community: Bruno Sarverry</title>
      <link>https://dev.to/bruino</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bruino"/>
    <language>en</language>
    <item>
      <title>3 útiles APIs generadoras de avatares</title>
      <dc:creator>Bruno Sarverry</dc:creator>
      <pubDate>Tue, 20 Apr 2021 16:51:43 +0000</pubDate>
      <link>https://dev.to/bruino/3-utiles-apis-generadoras-de-avatar-p6</link>
      <guid>https://dev.to/bruino/3-utiles-apis-generadoras-de-avatar-p6</guid>
      <description>&lt;p&gt;Asocie una identidad visual al perfil de los usuarios de su producto tecnológico, implementando alguna de las siguientes soluciones mediante API.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Por qué prestar atención a implementar avatares en nuestros desarrollos?
&lt;/h3&gt;

&lt;p&gt;Más allá de la función que cumple en la interfaz de usuario, los avatares(aquellas imágenes que representan nuestra identidad de manera online) pueden permitirnos &lt;strong&gt;crear una identidad visual a nuestro producto tecnológico&lt;/strong&gt;, haciendo que destaque por sobre el resto.&lt;/p&gt;

&lt;p&gt;Por ello, aquí presentamos 3 APIs generadoras de avatares(de entre varios) &lt;strong&gt;que son gratuitos, sin límite, y no necesitan de crear una cuenta&lt;/strong&gt;, para implementar en sus proyectos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UI Avatar&lt;/li&gt;
&lt;li&gt;Joe Schmoe&lt;/li&gt;
&lt;li&gt;Gravatar&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  UI Avatar
&lt;/h2&gt;

&lt;p&gt;Un generador enfocado en las siglas de nuestros nombres, muy común en los clientes de correo electrónico.&lt;br&gt;
En función de un nombre y un color, puede representar la identidad del usuario de su plataforma de manera discreta y conservadora.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

https://ui-avatars.com/api/?name=Jon+Snow&amp;amp;background=0D8ABC&amp;amp;color=fff&amp;amp;size=128


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fui-avatars.com%2Fapi%2F%3Fname%3DJohn%2BSnow%26background%3D0D8ABC%26color%3Dfff%26size%3D128" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fui-avatars.com%2Fapi%2F%3Fname%3DJohn%2BSnow%26background%3D0D8ABC%26color%3Dfff%26size%3D128" alt="ui avatar example"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Joe Schmoe
&lt;/h2&gt;

&lt;p&gt;Una colección de ilustraciones coloridas de personas. Una manera distinta(y de actitud) para usar como imagen de perfil para sus usuarios.&lt;/p&gt;

&lt;p&gt;A partir de un nombre, un correo electrónico, o una ID, puedes solicitar el mismo avatar varias veces, por lo que podrás asociar la identidad del usuario con la misma.&lt;br&gt;
Aparte de un identificador, puedes solicitar el avatar en función del sexo inclusive.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

https://joeschmoe.io/api/v1/male/jon


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjoeschmoe.io%2Fapi%2Fv1%2Fmale%2Fjon" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjoeschmoe.io%2Fapi%2Fv1%2Fmale%2Fjon" alt="joe schmoe example"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Gravatar
&lt;/h2&gt;

&lt;p&gt;Posiblemente el más famoso, es utilizado por una multitud de sitios web(Github, Disqus, Stackoverflow, Gitlab, entre otros).&lt;br&gt;
El propósito de Gravatar es que tengas un Avatar de Reconocimiento Global, en el que cargas los datos de tu perfil una única vez, y cualquier sitio web que esté asociado a Gravatar insertará tu perfil creado en él.&lt;br&gt;
Aqui nos interesa la funcionalidad integrada de Gravatar de generar un avatar temático, enviando como parámetro un &lt;a href="https://es.wikipedia.org/wiki/Md5" rel="noopener noreferrer"&gt;hash md5&lt;/a&gt; de algún identificador único para el usuario que administras, por ej. usando su email:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="c1"&gt;#Email del usuario
&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;  Jon.Snow@thewall.north &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="c1"&gt;# Eliminamos los espacios en blanco
&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="c1"&gt;# Forzamos todos los caracteres en minúscula
&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# jon.snow@thewall.north
&lt;/span&gt;
&lt;span class="c1"&gt;# Obtenemos el hash md5
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;hashlib&lt;/span&gt;
&lt;span class="nb"&gt;hash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hashlib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;md5&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;hexdigest&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="c1"&gt;# bfcb1d6a22d7098499771d3bcec5a8c4
&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Tenemos diversas temáticas para elegir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;identicon:&lt;/strong&gt; patrones geométricos únicos.
```
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=identicon&amp;amp;f=y&amp;amp;s=128" rel="noopener noreferrer"&gt;https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=identicon&amp;amp;f=y&amp;amp;s=128&lt;/a&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;![gravatar identicon example](https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=identicon&amp;amp;f=y&amp;amp;s=128)

- **monsterid:** distintas caricaturas de monstruos(variando el rostro, color, etc.).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=monsterid&amp;amp;f=y&amp;amp;s=128" rel="noopener noreferrer"&gt;https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=monsterid&amp;amp;f=y&amp;amp;s=128&lt;/a&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;![gravatar monsterid example](https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=monsterid&amp;amp;f=y&amp;amp;s=128)

- **wavatar:** distintas expresiones de rostros en diversos colores.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=wavatar&amp;amp;f=y&amp;amp;s=128" rel="noopener noreferrer"&gt;https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=wavatar&amp;amp;f=y&amp;amp;s=128&lt;/a&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;![gravatar wavatar example](https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=wavatar&amp;amp;f=y&amp;amp;s=128)

- **retro:** rostros pixeladas al estilo 8-bit.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=retro&amp;amp;f=y&amp;amp;s=128" rel="noopener noreferrer"&gt;https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=retro&amp;amp;f=y&amp;amp;s=128&lt;/a&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;![gravatar retro example](https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=retro&amp;amp;f=y&amp;amp;s=128)

- **robohash:** distintas caricaturas de robots(variando el rostro, color, etc.).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=robohash&amp;amp;f=y&amp;amp;s=128" rel="noopener noreferrer"&gt;https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=robohash&amp;amp;f=y&amp;amp;s=128&lt;/a&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;![gravatar robohash example](https://www.gravatar.com/avatar/bfcb1d6a22d7098499771d3bcec5a8c4?d=robohash&amp;amp;f=y&amp;amp;s=128)

- **mp:** (mystery-person) una simple silueta de una persona por defecto. Nota: no requiere de un hash en específico.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://www.gravatar.com/avatar/00000000000000000000000000000000?d=mp&amp;amp;f=y&amp;amp;s=128" rel="noopener noreferrer"&gt;https://www.gravatar.com/avatar/00000000000000000000000000000000?d=mp&amp;amp;f=y&amp;amp;s=128&lt;/a&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;![gravatar mistery person example](https://www.gravatar.com/avatar/00000000000000000000000000000000?d=mp&amp;amp;f=y&amp;amp;s=128)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>design</category>
      <category>spanish</category>
      <category>avatar</category>
      <category>api</category>
    </item>
    <item>
      <title>Acortar URL + Código QR, en Python</title>
      <dc:creator>Bruno Sarverry</dc:creator>
      <pubDate>Tue, 20 Apr 2021 16:17:39 +0000</pubDate>
      <link>https://dev.to/bruino/acortar-url-codigo-qr-en-python-11h3</link>
      <guid>https://dev.to/bruino/acortar-url-codigo-qr-en-python-11h3</guid>
      <description>&lt;p&gt;&lt;strong&gt;Acortar URL permite simplificar y hacer más atractivo estéticamente un link&lt;/strong&gt;, como también poder registrar los click que realizan en ellos.&lt;br&gt;
&lt;strong&gt;Los códigos QR ayudan a la comodidad del usuario&lt;/strong&gt;, evitando introducir datos de forma manual en los teléfonos.&lt;br&gt;
La suma de ambos dará como resultado &lt;strong&gt;un Código QR lo más reducido en tamaño posible&lt;/strong&gt;, 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.&lt;br&gt;
Todo esto, usando uno de los lenguajes de programación de más auge en estos últimos tiempos.&lt;/p&gt;
&lt;h2&gt;
  
  
  Acortar URL
&lt;/h2&gt;

&lt;p&gt;La manera más fácil y rápida es usando la librería &lt;a href="https://github.com/ellisonleao/pyshorteners" rel="noopener noreferrer"&gt;pyshorteners&lt;/a&gt;, que pone a disposición muchas APIs acortadoras de URL para usar.&lt;br&gt;
Instalamos directamente de PyPi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;pyshorteners
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;a href="https://pyshorteners.readthedocs.io/en/latest/apis.html" rel="noopener noreferrer"&gt;Aquí&lt;/a&gt; una lista de los servicios disponible para acortar las urls, con sus implementaciones respectivas.&lt;br&gt;
Para nuestro ejemplo usaremos &lt;a href="https://da.gd/" rel="noopener noreferrer"&gt;da.gd&lt;/a&gt; como solución:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pyshorteners&lt;/span&gt;

&lt;span class="n"&gt;shortener&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pyshorteners&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Shortener&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;short_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;shortener&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dagd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;short&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://en.wikipedia.org/wiki/Jon_Snow_(character)&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;short_url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# https://da.gd/5X3NV
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;De esta manera reducimos notablemente la cantidad de carácteres, que nos servirá para el siguiente paso.&lt;/p&gt;
&lt;h2&gt;
  
  
  Generar QR
&lt;/h2&gt;

&lt;p&gt;Nos apoyaremos de las librerías &lt;a href="https://github.com/lincolnloop/python-qrcode" rel="noopener noreferrer"&gt;python-qrcode&lt;/a&gt; y Pillow(Python Imaging Library) para crear los códigos.&lt;br&gt;
Instalamos directamente de PyPi:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;qrcode pillow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Y aplicamos:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;qrcode&lt;/span&gt;

&lt;span class="n"&gt;qr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;qrcode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;QRCode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;box_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;error_correction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;qrcode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;constants&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ERROR_CORRECT_M&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;qr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://da.gd/5X3NV&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;qr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;make&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;img&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;qr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;make_image&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;El parámetro &lt;strong&gt;box_size&lt;/strong&gt; es el tamaño en píxeles de cada cuadrado del QR.&lt;br&gt;
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):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ERROR_CORRECT_L:&lt;/strong&gt; corrección de errores del 7% o menos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ERROR_CORRECT_M(por defecto):&lt;/strong&gt; corrección de errores del 15% o menos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ERROR_CORRECT_Q:&lt;/strong&gt; corrección de errores del 25% o menos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ERROR_CORRECT_H:&lt;/strong&gt; corrección de errores del 30% o menos.
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnzegj7j1hw0rrhk0eonn.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Definiendo a &lt;strong&gt;fit&lt;/strong&gt; igual a &lt;em&gt;True&lt;/em&gt; determina el tamaño del QR automaticamente a partir del valor de entrada en &lt;strong&gt;add_data&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Resultado
&lt;/h2&gt;

&lt;p&gt;El producto final(comparándolo con la misma URL sin acortar) es:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpdfgjhpjzigo8xy7o43e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpdfgjhpjzigo8xy7o43e.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

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

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

&lt;p&gt;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 &lt;a href="https://bit.ly" rel="noopener noreferrer"&gt;bit.ly&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pyshorteners&lt;/span&gt;

&lt;span class="n"&gt;shortener&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pyshorteners&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Shortener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;YOUR_KEY&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;shortener&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bitly&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;total_clicks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://bit.ly/TEST&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



</description>
      <category>api</category>
      <category>python</category>
      <category>tutorial</category>
      <category>spanish</category>
    </item>
  </channel>
</rss>
