Giusto per riassumere, l’offerta lampo kindle è “la promozione che ti permette di acquistare ogni giorno un titolo diverso scontato a un prezzo eccezionale per 24 ore soltanto“ 1. Quasi un anno fa scrissi un piccolo script che permettesse esportare quest’offerta in un comodo feed, in modo da potere rimanere sempre aggiornato senza dovere andare a controllare manualmente la pagina di giorno in giorno. Nonostante ora sia possibile attivare una newsletter per ricevere l’offerta quotidiana, preferisco comunque usare il feed in modo da tenere separate le conversazioni personali (posta) dalle informazioni online (feed RSS o Atom).
Fatta questa breve premessa, mi sono accorto qualche tempo fa di non ricevere informazioni da questo feed. La cosa mi ha insospettito, soprattutto perché lo script funzionava generando un feed corretto secondo il validatore ufficiale. Purtroppo feedly (il servizio che ho iniziato ad usare come sostituto di google reader), pareva proprio non digerirlo. Ammetto che dopo un po’ di ricerche non ho trovato una vera e propria soluzione, ma solo un comodo modo per raggirare il problema: il feed ora redirige in automatico a feedproxy, un servizio di google che permette di monitorare le iscrizioni dei feed e fare un po’ di statistiche. Sostanzialmente i dati che vengono esportati sono gli stessi, ma in questo modo feedly pare più contento ed è tornato a funzionare.
Nel frattempo però ho avuto modo di notare che talvolta i libri in offerta sono più di uno, quindi mi sono adoperato nel modificare opportunamente lo script per renderlo in grado di riconoscerli tutti, e non solo il primo della lista come faceva nella versione precedente. Questa nuova versione è in realtà on-line già da qualche giorno, ma ho voluto aspettare a scrivere questo articolo per essere sicuro che funzionasse correttamente.
Nota per i più smanettoni
L’url del feed è sempre lo stesso [UPDATE: no, non è vero, il sito ha cambiato dominio ed ho dovuto aggiornare tutti i link], solo che adesso redirige in automatico a feedproxy. Siccome però feedproxy deve in qualche modo leggere questo feed, la redirezione avviene solo per gli utenti normali. Queste righe di codice fanno avvenire la magia
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'FeedBurner') === FALSE ){ header('Location: //feeds.feedburner.com/UnofficialOffertaLampoKindle'); die(); }
Sostanzialmente quello che viene fatto nella condizione è controllare se chi richiede il feed non è feedproxy, nel qual caso si invia il comando per redirigere lo script sull’apposita pagina e poi si termina l’esecuzione. Nel caso invece sia feedproxy, il corpo dell’if viene saltato e lo script procede nella sua esecuzione normale.
Un altro piccolo miglioramento fatto consiste nel comunicare che la pagina possa essere messa in cache (anche pubblica) per un massimo di 3 ore.
header('Cache-Control: public'); header('Cache-Control: max-age=10800'); //3h (60sec * 60min * 3hours)
Questo permette di alleggerire il carico del server, al piccolo prezzo di avere un ritardo massimo di 3 ore prima di ricevere l’aggiornamento. Ma siccome credo che nessuno si lamenti se alle 2.30 di notte non ha ancora ricevuto l’offerta del giorno di amazon, ho preferito non complicarmi la vita aggiungendo controlli più complessi.
Come nella prima versione, è possibile visualizzare il codice dello script che rilascio sotto licenza GPL. Per qualunque suggerimento, richiesta o anche solo per un ringraziamento, i commenti qua sotto sono gratuiti 😉