Che eBook gratuito pubblica oggi Packt Publishing?

Andrea Borruso
mai più senza
Published in
4 min readMay 18, 2016

--

Packt Publishing è una casa editrice che da un po’ di tempo pubblica ogni giorno un nuovo eBook gratuito in questa pagina: https://www.packtpub.com/packt/offers/free-learning.

Non c’è un modo per essere avvisati e quindi ogni giorno bisognerebbe aprire la pagina e verificare se c’è qualcosa di proprio interesse. Io facevo così, e difatti spesso mi sono perso qualche pubblicazione interessante, perché a volte dimenticavo di aprirla. Poi Lorenzo mi ha chiesto:

è possibile farsi un alert automatico che mi invii il titolo ogni giorno?

Questo mi ha fatto accendere il terzo neurone e mettere in piedi un servizio che, ogni giorno intorno alle 8 di mattina, pubblica un nuovo tweet con il titolo del libro gratuito del giorno.

Sono tre i componenti che fanno girare il sistema: un account Twitter, IFTTT e uno script bash.

Twitter

L’account Twitter @FreeEbooksPP è il punto di arrivo, ma per la procedura che ho messo doveva preesistere (si crea in pochi minuti).

Basterà seguirlo e potrete leggerne gli aggiornamenti. Ancora meglio se lo aggiungerete ai profili favoriti: sarete avvisati automaticamente ogni giorno.

IFTTT

IFTTT è una straordinaria applicazione web che mette in contatto numerose altre applicazioni e servizi web, per la produttività, per la una casa connessa, per stare in contatto, ecc.. A gruppi di due: una farà da trigger (da miccia) e una sarà quella di azione (diciamo di destinazione).

Trigger

Il trigger in questo caso è il Maker Channel — usato moltissimo dai Maker — che può ricevere o eseguire una richiesta web.

Al canale è associato un URL che farà da trigger tutte le volte che verrà invocato. Ogni utente IFTTT ha a disposizione un URL con questra struttura:

https://maker.ifttt.com/trigger/{nomeevento}/with/key/bsi0as1LkC2Qmfasda9rNHM

L’elemento variabile è il nome dell’evento e se ne possono scegliere n a nostro piacimento. In questo caso l’ho chiamato “pp” (come Packt Publishing).
Inoltre è possibile opzionalmente associare all’attivazione del trigger (sino a) tre valori, per tre proprietà. Ne ho usato soltanto uno per il titolo del libro.

Per fare la richiesta web e passare come valore il titolo del libro si può usare cURL — un’eccellente libreria open source per interagire con il web — con una sintassi come quella di sotto:

curl -X POST -H "Content-Type: application/json" -d '{"value1":"Titolo del libro"}' https://maker.ifttt.com/trigger/pp/with/key/bsi0as1LkC2Qmfasda9rNHM

Destinazione

La destinazione è il Canale Twitter, e l’azione che verrà attivata dal trigger sarà Post a tweet: verrà pubblicato un post tutte le volte che l’azione verrà innestata dal trigger, con un testo personalizzato (in questo caso il titolo del libro free del giorno).

Script bash

Lo script creato viene lanciato ogni giorno intorno alle 8 di mattina, in modo da:

  • aprire la pagina del sito;
  • estrarre il titolo del libro;
  • fare la chiamata all’URL del Maker Channel, passandogli come valore il titolo del libro.

Nello script sono stati aggiunti due controlli di errore: uno per verificare che il sito sia raggiunbile (verificando che il codice HTTP di risposta alla chiamata sia 200) e uno per verificare che sia stato estratto un valore per il titolo.

Il titolo viene estratto grazie a un CSS selector, ovvero grazie allo stile che risulta applicato a quel titolo. In questo caso il titolo del libro è associato al tag HTML h2 ed è all’interno di un div a cui è applicata la classe CSS “dotd-title”. E’ l’unico elemento della pagina con queste caratteristiche, che quindi è possibile usare come filtro di estrazione.

E’ possibile risalire al CSS Selector di un elemento di una pagina, usando gli strumenti di sviluppo di un browser (sotto l’esempio in Chrome).

Lo script è scritto in bash e contiene dei commenti nei punti essenziali. Basta fare in modo che venga eseguito ogni giorno a una certa ora — io lo faccio con cron — e la pubblicazione su Twitter verrà automatizzata.

Conclusione

Si tratta di una piccola procedura che si può adattare ad altre diavolerie simili, in cui si voglia attivare qualche comoda automazione. Il canale Maker di IFTTT è di grande comodità, perché trasforma una semplice chiamata web in un interruttore.

Il cuore è la bash di Linux e le sue utility, con cui è possibile fare cose complesse, con semplicità e rapidità.

Il trigger per me è stato lorenzo perone!

--

--

Andrea Borruso
mai più senza

#data #maps #GIS #baci #condivisione. Orgoglioso di essere presidente di @ondatait