Posiblemente piensas que no existe cosa más chula que poder disponer de un comic de Garfield cada vez que escribas «garfield» en tu terminal más cercana.
Es algo bonito e improductivo en lo que emplear tu tiempo. Vamos a ponernos manos a la obra.
Instalar las dependencias
Puedes en Debian instalar las dependencias así:
# apt install curl wget feh
Si no utilizas Debian no pasa nada, nadie es perfecto.
El script garfield
Con nuestro editor favorito (nano, vim, emacs, le, …) podemos crear el archivo «garfield» con el siguiente contenido:
#!/bin/bash # Copyright © Paws, Inc. All rights reserved. Comics by Jim Davis. # 56k.es is not affiliated with Paws, Inc. or their website www.garfield.com. # garfiel is just a script to get random Garfield comics from the website www.garfield.com. # fanta - fanta@56k.es - Mar 2020 url=$(curl -sL "https://garfield.com/comic/random" | grep "img-responsive" | grep "gif" | cut -d "\"" -f 4 | cut -d "?" -f 1) file=$(echo $url | cut -d "/" -f 7) wget -q "$url" -O /tmp/$file feh -xF /tmp/$file
Es importante dejar una pequeña cabecera con algo de info sobre el script.
Es importante indicar la salida de wget para que sobrescriba y no genere otro archivo igual pero con doble extensión .1, .2, .3, ….
feh con -x no muestra bordes el visor de imágenes. Con -F lo que hace es ponerse en pantalla completa.
Lo que hace el script es con curl atacar a la url garfield.com/comic/random . Esa url realiza una redirección hacia un comic aleatorio.
Por tanto es importante que curl lleve -L para que se siga la redirección.
Permisos al script
Se le han de dar permisos de ejecución al script.
$ chmod +x garfield
Y luego se puede copiar este en /usr/bin/ . Por ejemplo así:
# cp -pRv garfield /usr/bin
Finalmente ya con escribir «garfield» tendríamos que tener un comic aleatorio en pantalla.
Saludos cordiales.
Para que el script siga funcionando hay que cambiar las dos primeras lineas por esto:
url=$(curl -sL "https://www.gocomics.com/random/garfield" | grep "item-comic-image" | grep -o -P 'data-srcset="[^ "]+' | cut -d '"' -f2)
file=$(basename $url)