Site icon Just another blog

[Tip] Esportare la wishlist di IBS

Ecco il risultato di un piccolo esercizio di stile di shell programming messo a punto per risolvere un problema a Lawrence, un mio contatto su Friendfeed.

C’è modo di esportare la wishlist di IBS verso Amazon oppure Anobii?

In effetti IBS non consente alcun tipo di esportazione dei libri messi nella lista dei desideri, e si potrebbe essere portati ad rispondere “No” alla domanda, ma una breve analisi visiva/CTRL-F ai sorgenti della pagina mi hanno dato qualche speranza, ed ho intensificato le ricerche salvandola in locale ed sottoponendola a qualche tool da riga di comando. La prima cosa che mi è saltata all’occhio è stata la scarsa eleganza del codice generato, ed ho passato il file .html a tidy, un potente strumento per la validazione e la correzione del codice [X]HTML, in modo da renderlo più leggibile; poi ho individuato le parti più “interessanti” relativamente alla soluzione del problema, e cioè questo testo:

http://www.ibs.it/ser/serdsp.asp?isbn=9788874241590

che contiene appunto il codice ISBN di uno dei libri presenti nella wishlist.
Sono quindi passato a grep, costruendo man mano la stringa di ricerca fino ad ottenere un risultato più o meno pulito, tipo questo:

http://www.ibs.it/ser/serdsp.asp?isbn=9788874241590"
http://www.ibs.it/ser/serdsp.asp?isbn=9788874241590"

La presenza della doppia linea non è un errore di scrittura nel post, ci sono realmente due linee del genere per ogni libro nella wishlist. Dopo grep ho chiamato in causa sed per ripulire l’output ed ottenere solo l’elenco dei codici ISBN, la soluzione al problema, facendogli eseguire due cose in successione:

sed -e 's/[^0-9]*//g'

con questa chiamata cancello tutto ciò che non è numerico, mentre con

sed -n 'p;n'

stampo in output solamente le linee dispari.
Et voilà, ecco la riga di comando completa:

tidy -f errs.txt -imu lista.html; grep '."http://www.ibs.it/ser/serdsp.asp?isbn=[0-9]\{13\}' lista.html | sed -e 's/[^0-9]*//g' | sed -n 'p;n'

Leggendo il codice si nota la presenza del file lista.html, che corrisponde alla pagina della wishlist salvata in locale: utilizzando questa accortezza ed eseguendo la riga di comando nella medesima directory contenente il file si ottiene in output l’agognato elenco di codici ISBN pronto per essere copiaincollato in Anobii. Sono convinto che il codice possa essere ottimizzato ma, come confermatomi da Lawrence, già in questo modo è pienamente funzionante.

Happy coding

[tags]shell, linux, internetbookshop, ibs[/tags]

Exit mobile version