solo per abbonati

Update 2010/07/27: nuova versione aggiornata per il sito http://www.ilfattoquotidiano.it

Dato che l'ho già passato a vari amici, lo posto anche qua nella speranza che sia utile ad altri.
Cosa? Uno script per scaricare in automatico Il Fatto Quotidiano, per abbonati.

Specifico per abbonati in quanto personalmente mi sono abbonato all'edizione PDF quasi interamente per sostenere la loro iniziativa di stampa indipendente (almeno dagli editori, anche se non dagli inserzionisti pubblicitari ...): non sono necessariamente vicino alle loro posizioni politiche, ma ogni giornale in più è un bene per la stampa italiana. In quest'ottica, non sono quindi interessato a scaricare le varie versioni PDF "pirata" che si trovano in rete (e che quindi non starò qui a linkare).

download

Gli script sono i seguenti:

  • ilfatto: main entry point, lo invoco ogni giorno per scaricare il giornale in una dir predefinita e far partire in automatico un PDF reader su di esso (se già scaricato, evita di ri-scaricare il PDF)

  • ilfatto-download: backend usato dallo script di cui sopra per autenticarsi presso il portale abbonati, sciegliere la data odierna, e scaricare il PDF. Richiede la libreria Python mechanize

Aprite ilfatto-download e cambiate i valori USERNAME e PASSWORD in ciò che vi si addice (per i non addetti ai Python-lavori: racchiudeteli tra virgolette doppie "" come nell'esempio). Poi, quando volete farvi una lettura, eseguite ilfatto.

comment 1

Fantastico, grazie!

Funziona anche su OSX, con le seguenti modifiche: installare python e py-mechanize da macports, sostituire /usr/bin/python con /opt/local/bin/python, e sostituire xdg-open con open. Voilà. Tra l'altro in OSX lo scaricamento da Web è ancora più seccante perché Safari (...) non ricorda username e password nella form di scaricamento (e la checkbox "ricordami" non ha il benché minimo effetto...).

Comment by Luca Padovani Sun 15 Nov 2009 09:42:41 AM CET
comment 2

Ciao, premesso che non ne capisco di python (mi limito a misere basi di java) quando provo a fare il download del .pdf da ilfatto-download riesce a salvarmi il file, ma quando provo ad aprirlo esce come corrotto. L'altro file fatto mancano delle "" vicino alla data ma anche aggiungendole non compila.

Grazie

Ciao :)

Comment by artax09 Wed 02 Dec 2009 09:26:36 PM CET
@artax09

strano, in diversi lo usiamo tutti i giorni senza problemi ...

su che sistema operativo sei? hai installato il modulo mechanize di python (che è indispensabile)? infine, l'esecuzione de "ilfatto-download" non ha segnalato alcun problema?

se non lo ha fatto, può essere che effettivamente tu abbia scaricata un PDF danneggiato (a volte capita che temporaneamente abbiano dei PDF scazzati, che poi correggono più avanti nella giornata) ...

Comment by zack Thu 03 Dec 2009 09:19:23 AM CET
comment 4

Intanto Grazie per la rapida risposta :) uso windows 7, ho installato python 2.6.3 e easy_install poi tramite quello ho installato mechanize 0.1.11 Quando eseguo ilfatto-download non dà errori e mi salva il file. Purtoppo ho provato diverse volte, anche ora, e mi salva sempre il file corrotto. Forse ho sbagliato qualcosa nella procedura, attendo info :)

Ciao

Comment by Anonymous Fri 04 Dec 2009 07:43:42 PM CET
@artax09

ah, interessante, non immaginavo che avrei avuto utenti windows :-)

Quindi ok, tu non usi "ilfatto", ma direttamente "ilfatto-download", come è giusto che sia. Riguardando lo script, non ci vedo niente che possa causare un non funzionamento su windows ... e chiaramente assumo tu abbia eseguito le istruzioni sul riempimento di nome utente / password. Altra cosa, sei certo che lo script non sollevi eccezioni Python quando lo esegui? Sui sistemi unix in generale vengono stampate sulla console, su windows non so dato che non ci ho mai usato Python.

Detto ciò, direi che l'unica altra possibilità per aiutarti che ho è che tu mi invii uno dei PDF "corrotti" che ti scarica affinché io ci dia un'occhiata, puoi farlo via mail per favore? (la mia mail è sulla prima pagina della mia homepage).

Comment by zack Sun 06 Dec 2009 12:01:42 PM CET
help per windows cercasi

Purtroppo, dopo avere debuggato un po' la cosa con artax09, siamo ancora ad un punto morto.

Sotto windows mechanize salva su disco un PDF più lungo del normale (circa 100 Kb), che ha header e trailer corretto, ma qualche differenza non ancora meglio identificata altrove (è un file binario, il diff è meno banale del solito).

Se qualche esperto di windows/python/mechanize passa di qua ... accettiamo volentieri aiuto da mani più windows-esperte delle mie.

Potrebbe aiutare anche qualche testing su altri windows, dato che artax09 ha testato solo su windows 7.

Attendiamo fiduciosi ...

Comment by zack Tue 08 Dec 2009 01:59:17 PM CET
Grande! Funziona su Mac OSX 10.6 (Snow Leopard)

Ciao, l'ho appena testato (ilfatto-download) su OSX 10.6 e funziona alla grande. Ho usato il python preinstallato, ho installato i moduli mechanize (0.1.11) e ClientForm (0.2.10) et voilà!

Grazie!

Comment by Kurt Sat 09 Jan 2010 10:54:29 AM CET
comment 8

Ciao, volendo provare un metodo alternativo per utenti win mi sto avventurando in una script per fare login via CURL con metodo post, qualcosa tipo:

set CURL_URL=http://www.antefatto.it/servizi/login/login.aspx?redirect=/servizi/pdf/pdfselect.aspx set CURL_POST=-d "Login1$UserName=%USERID%&Login1$Password=%PASSWORD%&EVENTTARGET=&EVENTARGUMENT=&VIEWSTATE=%VIEWSTATE%&EVENTVALIDATION=%EVENTVALIDATION%" curl.exe %CURL_POST% %CURL_URL%

Purtroppo prendo sempre errori tipo [ViewStateException: Invalid viewstate. Client IP: xx.xx.xx.xx Port: 2316 User-Agent: curl/7.12.0 (i386-pc-win32) libcurl/7.12.0 zlib/1.2.1 ViewState: '/wEPDwUKMTY1MjA5MzAyOWWEYQUeX19Db250cm9sasJlcXVpcmVQb3N0QmFja0tleV9fFgIFEUxvZ2luMSRSZW1lbWJlck234ssMb2dpbjEkTG9naW5JbWFnZUJ1dHRvbjfjyH746ajNdVv6tHEQVjYewAqH'

Qualcuno sa dirmi se ho qualche speranza di riuscire o se è una strada che non mi porterà a nulla?

Comment by Umberto Mon 08 Feb 2010 10:12:44 PM CET
CURL o WGET

Purtroppo il mio post precedente ha perso tutta la formattazione, non credo sia interpretabile.

Se qualcuno ha qualche cosa di funzionante che utilizzi CURL o WGET e vuole condividere, gliene sarei grato.

Comment by Umberto Mon 08 Feb 2010 10:17:36 PM CET

Ciao, rispondo al post su libcurl: Per fare una cosa simile e piuttosto semplice con wireshark devi catturare i pacchetto che fa la redirezione e poi ricreare la richiesta http con curl.

Se ti servono altre info contattami via il sito http://capuzzo.free.fr

CiaoCiao -Claudio

Comment by Claudio Tue 08 Jun 2010 09:55:39 PM CEST

Con un po' di ritardo, ho aggiornato lo script per il nuovo sito http://www.ilfattoquotidiano.it.

È sufficiente che ri-scarichiate i file precedenti, i nomi non sono cambiati.

Enjoy!

Comment by zack Tue 27 Jul 2010 08:43:33 AM CEST
su windows non c'è verso di farlo andare neanche con l'ultima mechanize presa da github qualche suggerimento?
Comment by Lol Sun 29 Aug 2010 09:24:18 PM CEST

wget -O /dev/null --keep-session-cookies --save-cookies=cookies.txt --post-data='log=carnev75%40libero.it&pwd=mastice75&_wp_original_http_referer=http%3A%2F%2Fwww.ilfattoquotidiano.it%2Fabbonati%2F&wp-submit=Log+In&redirect_to=http%3A%2F%2Fwww.ilfattoquotidiano.it%2Fabbonati%2F&testcookie=1' http://www.ilfattoquotidiano.it/login/?action=login&instance=tml-page

sleep 3

wget --load-cookies=cookies.txt -A pdf http://www.ilfattoquotidiano.it/openpdf/?n=$1 -O $2

$1 e $2 sono rispettivamente il today e il nome del file senza il path. Ho modificato lo script per fare in modo che gli arrivino questi due parametri. se vi interessa fatemi sapere che vi mando la persione completa.

ciao e grazie per lo script

Comment by Anonymous Tue 31 Aug 2010 10:05:55 PM CEST

ovviamente bisogna cambiare username e password.

p.s non provate con quelli che ho postato, non funzionano ;)

Comment by Anonymous Tue 31 Aug 2010 10:34:22 PM CEST

Ciao, ho trovato il tuo script e lo uso con soddisfazione. Ti sarebbe difficile implementare una funzione che permetta di scaricare gli articoli in formato html dalla pagina es: http://www.ilfattoquotidiano.it/giornale-cartaceo/?g=23-09-2010 (mi sembra che siano disponibili solo gli articoli fino al giorno precedente)? Basterebbe scaricarli in una cartella con il nome della data. In questo modo sarebbe facile farne una versione epub per portarla in giro su lettori eink. Grazie comunque Luciano

Comment by Luciano Fattore Fri 24 Sep 2010 08:36:45 AM CEST

[ re-post da una risposta via mail a Luciano Fattore, pochi giorni dopo il suo commento ]

Ti chiedevo se sarebbe difficile implementare una funzione che permetta di scaricare gli articoli in formato html dalla pagina es: http://www.ilfattoquotidiano.it/giornale-cartaceo/?g=23-09-2010 (mi sembra che siano disponibili solo gli articoli fino al giorno precedente)?

Non so se mi sarebbe facile o difficile, francamente non ho avuto tempo di guardarci, ed è per questo motivo che non ho risposto al tuo commento. Non so nemmeno quando avrò tempo di guardarci in quanto il mio modo di leggere Il Fatto Quotidiano è via PDF, non via formato HTML. Fortunatamente però, lo script che ho realizzato è Software Libero http://www.gnu.org/philosophy/free-sw.it.html , il che significa che chiunque è libero di migliorarlo e di redistribuire alla comunità le sue migliorie.

Ti consiglio quindi o di provare a modificare tu stesso lo script affinché faccia ciò che ti serve, oppure di trovare altri che condividono il tuo interesse e che possano e vogliano farlo. Sarò ben lieto di integrare le vostre modifiche e di annunciare sulla mia pagina le nuove mirabolanti feature che voi avrete contribuito.

Grazie mille, spero a presto.

Comment by zack Mon 27 Sep 2010 07:11:52 PM CEST

Ciao mi aggancio al comento sull'open source. io avevo iniziato a fare uno script simile poi ho trovato il tuo. ora ho aperto un progetto su launchpad. Lo trovate qui: https://launchpad.net/ilfattodownloader quando si lancia ilfattodownloader.py si apre un calendario e da li si puo' selezinare il giorno di cui si vuole scaricare il fatto. al momento i file vengono salvati in una cartella di default sotto la home dell'utente che si chiama ilfatto. saluti

Comment by giuseppe Wed 29 Sep 2010 10:37:12 PM CEST

Ciao mi aggancio al comento sull'open source. io avevo iniziato a fare uno script simile poi ho trovato il tuo. ora ho aperto un progetto su launchpad.

... delle due, mi sembra che il tuo sia un buon esempio di come non fare le cose in ambito software libero, nel senso che hai rifatto da zero un software che già esisteva senza contattarne l'autore per unire le forze. Comunque sia, nessun problema, parliamo di un piccolo contributo e probabilmente avevamo requisiti diversi (io ad esempio voglio qualcosa di batch, per potere facilmente automatizzare lo scaricamento). Spero almeno tu abbia riutilizzato la parte di autenticazione, i.e. l'unica parte che richiedeva un po' di trial-and-error.

Saluti

Comment by zack Thu 30 Sep 2010 08:58:12 AM CEST

delle due, mi sembra che il tuo sia un buon esempio di come non fare le cose in ambito software libero, nel senso che hai rifatto da zero un software che già esisteva senza contattarne l'autore per unire le forze.

mmm... mi spiace che tu stia partendo in maniera cosi prevenuta è un atteggiamento decisamente poco "open". Può darsi che intendiamo il software libero in maniera differente. Per me il valore più importante è la libertà. Preso un pezzo di software voglio essere libero di leggerlo, studiarlo, modificarlo a mio piacimento e voglio essere libero di redistribuirlo. Per te invece sembra che il valore più importante sia il riutilizzo/sfruttamento. Trovato un pezzo di codice che fa quello che voglio lo sfrutto per aggiungerci altre funzionalità... non è il mio modo di fare. Per quanto riguarda il contattare l'autore per unire le forze è proprio quello che ho fatto. ti ho postato il link dove ho messo il codice proprio perche tu possa vederlo prenderlo ed eventualmente migliorarlo. Se ti sembra che il codice che ho scritto stravolga il tuo script mi dispiace è un problema di contesto, sto lavorando ad un progetta da 26000 unittest, cambiare 10 righe in uno script python è stato un attimo... Ad ogni modo se ci sei ti offro volentieri una birra alla festa del toro di Granarolo :) saluti

giuseppe 

Comment by giuseppe Fri 01 Oct 2010 10:13:31 PM CEST

gaetano@feynman:/tmp$ wget "http://pdf.ilfattoquotidiano.it/openpdf/?n=20110123" --2011-01-23 02:09:00-- http://pdf.ilfattoquotidiano.it/openpdf/?n=20110123 Resolving pdf.ilfattoquotidiano.it... 80.247.70.152 Connecting to pdf.ilfattoquotidiano.it|80.247.70.152|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 10269585 (9.8M) [application/pdf] Saving to: `index.html?n=20110123'

100%[====================================================================================>] 10,269,585 268K/s in 38s

2011-01-23 02:09:39 (265 KB/s) - `index.html?n=20110123' saved [10269585/10269585]

Comment by Gaetano Sun 23 Jan 2011 02:15:33 AM CET