Guardare e scaricare i video di Repubblica TV senza Flash Player

Se c’è una cosa che mi fa venire i nervi sono i siti web che discriminano artificiosamente gli utenti Linux. Per qualche motivo, sembra che il fatto di usare un sistema operativo più veloce, più sicuro e più stabile ci debba rendere vittime di dispetti bizzarri.

Poco tempo fa avevo parlato di MyMovies Live, ma recentemente mi sono imbattuto per caso sul portare Repubblica TV. Quello che ho visto è a dir poco incredibile: se proviamo a vedere un filmato, il portale ci risponde con un messaggio di errore.

errore_flash_Repubblica
Il discutibile messaggio di Repubblica TV

A prima vista potrebbe sembrare un avvertimento che ci ricorda di avere una versione vecchia di Flash Player, per qualche motivo. Peccato che questo messaggio compaia anche con la versione 21.0.0.213… che è l’ultima su tutte le piattaforme.

Guardando un attimo la struttura della pagina ho visto che, in realtà, ogni video di Repubblica TV è soltanto un semplicissimo file MP4. Oltre al danno, anche la beffa: infatti non servirebbe nessun plug-in per vedere i filmati.

Ho trovato questa cosa abbastanza snervante, per di più considerando il fatto che è possibile risolverla con pochissime righe di codice.

Infatti, è la prima volta che ho scritto uno script per un sito web digitando solamente 4 righe di Javascript, che sono andate al primo colpo senza nemmeno testarle. Questo mi rende davvero sbigottito e mi chiedo come mai Repubblica non possa fare una modifica così ovvia al portale per renderlo fruibile a tutti, senza dover usare un plug-in obsoleto e poco sicuro come Flash Player.

Ad ogni modo, col mio script si ottiene questo risultato:

crozza_video_repubblica
Video riprodotto direttamente in MP4 su Repubblica TV

Analogamente a quanto fatto per Rai, Mediaset, La7, RSI e BBC, ho pubblicato online lo script. In questo modo potete attivare la visione dei video anche nel vostro browser. 🙂 Vi ricordo che per installare gli script bisogna avere un’estensione per il browser:

Ah, il vostro browser deve essere in grado di riprodurre i video HTML5 in formato MP4.

Infine, vi basta cliccare il bottone per andare sulla pagina dedicata e completare l’installazione premendo Installa questo script:

Download — Video Repubblica in HTML5

Per salvare un video, basta cliccare col tasto destro sopra di esso e scegliere la voce apposita. 😀 Buona visione!

Annunci

Convertire una presentazione in immagini, includendo le animazioni intermedie

Ieri ho iniziato il lavoro di montaggio video del mio intervento sull’estrazione di dati dalle pagine web. Come gli anni scorsi, anche quest’anno ho parlato utilizzando una presentazione Impress per accompagnare il discorso.

Dato che il video di me che gesticolo è di secondaria importanza, l’intento è mettere in risalto le slide. Per questo ho pensato di convertire tutte le slide in immagini per poi usarle in fase di montaggio. Le slide verranno mostrate a schermo pieno al posto del video, specialmente nei passaggi più importanti, mentre si sentirà la traccia audio per la mia voce.

In linea di principio, avrei potuto creare un PDF della presentazione e convertire quello in tante immagini, una per pagina. Tuttavia, in diverse slide ci sono alcuni punti che compaiono uno alla volta e questo viene perso durante la conversione in PDF.

Animazione del testo all'interno della stessa pagina
Animazione del testo all’interno della stessa pagina

Per questo motivo, ho deciso di seguire un approccio diverso:

  1. mostrare la prima slide
  2. catturare la schermata
  3. andare alla prossima slide
  4. ripetere il procedimento

Tutto questo in modo completamente automatico, ad eccezione dell’atto di terminare la procedura dopo l’ultima slide. Per ottenere il risultato desiderato, ho creato un brevissimo script in Python che utilizza il modulo pyautogui per automatizzare la pressione dei tasti, come suggerito qui. Un’altra funzionalità utile di questo modulo è la facoltà di catturare screenshot, così abbiamo tutto il necessario! 🙂

Prerequisiti

Il modulo pyautogui è sostanzialmente multipiattaforma, in quanto fa tutto il “duro lavoro” di adattamento per eseguire le stesse operazioni sui vari sistemi operativi, le quali normalmente richiederebbero modi diversi di essere compiute.

Tuttavia, è necessario installare anche alcuni componenti aggiuntivi per Linux che verranno utilizzati dal modulo per portare a termine ciò che ci serve. Pertanto, installiamo il modulo nel nostro profilo utente e i pacchetti necessari nel sistema con i comandi:

sudo apt-get install python-xlib python-tk python-pil
pip install --user pyautogui
sudo apt-get install scrot

Il primo pacchetto serve per la simulazione dei tasti e in generale il funzionamento base del modulo. Il secondo pacchetto sarebbe opzionale, ma per noi è necessario perché vogliamo anche che vengano catturati gli screenshot.

Catturare le schermate

A questo punto potete creare una nuova cartella screen con dentro uno script Python, chiamato ad esempio cattura.py. Il contenuto è questo:

#!/usr/bin/env python

import pyautogui
import time

# Attesa iniziale
time.sleep(10)

numero = 1

# Premere Ctrl+C alla fine della presentazione
while True:
    im = pyautogui.screenshot()
    im.save('screen_%03i.png' % numero)
    pyautogui.press('right')
    # Attesa transizione/animazione
    time.sleep(3)
    numero += 1

L’idea di base è semplice. Quando lo script parte, sta fermo per 10 secondi, così potete cambiare finestra e avviare la presentazione con LibreOffice (oppure Calligra Suite). Passato questo tempo, inizia la cattura delle schermate con il nome screen_001.png.

Tra una schermata e l’altra c’è una pausa di 3 secondi, in modo da far finire eventuali effetti di transizione (ad esempio le dissolvenze). Avviate lo script con il terminale, cambiando directory e lanciando il file Python appena creato:

cd /percorso/di/slide/cattura.py
python cattura.py

Poi avviate subito la presentazione e attendete senza toccare nulla. 😉 In poco tempo inizierete a vedere il computer che “va da solo” cambiando slide e attivando le animazioni fino all’ultima pagina.

Vi ricordo che, al posto di digitare tutto il percorso della directory che contiene lo script, potete fare drag’n’drop dell’icona della cartella slide dentro al terminale, dopo aver digitato il comando cd seguito da uno spazio. 😉

Quando la presentazione arriva alla fine, tenete conto che lo script continuerà a premere freccia destra ogni 3 secondi, catturando screenshot. Perciò riaprite il terminale ridotto ad icona e premete i tasti Ctrl+C per terminare il ciclo infinito.

Troverete le schermate (in formato PNG) nella cartella precedentemente creata.

Schermate ottenute con il procedimento descritto
Schermate ottenute con il procedimento descritto

Ritocchi finali

È probabile che, alla fine delle schermate ottenute, ci sia qualche file in più che mostra il vostro desktop dopo aver finito la presentazione ma prima di aver terminato lo script. In questo caso, è sufficiente cancellare le immagini di troppo. 😉

Nel mio caso, ho notato che la funzione di presentazione di LibreOffice lasciava un leggero margine nero in basso e a destra:

Margine nero lasciato da LibreOffice
Margine nero lasciato da LibreOffice

Il margine, misurato con GIMP, risultava di 1 pixel in basso e 2 pixel a destra. Per correggere questo problema ho usato ImageMagick. Il comando, che modifica direttamente le immagini originali, è questo:

mogrify -crop -2-1 screen_*.png

Attenzione che ciò crea delle copie di backup nascoste nella stessa cartella, ad esempio il file screen_001.png verrà copiato con il nome di screen_001.png~ e solo in seguito modificato. Se usate una cartella solo per le slide e poi la eliminate tutta, anche le copie nascoste saranno ripulite. In caso contrario, fate attenzione a non lasciare tracce inutili. 🙂

Ordinare script ed eseguibili su Linux con una comoda directory

I sistemi operativi Linux sono eccellenti e versatili. Hanno una lista talmente lunga di pregi e vantaggi che qualcuno ci ha addirittura fatto un sito web. Elencarli tutti risulterebbe impossibile, tuttavia uno dei miei preferiti è la capacità di personalizzazione.

Che si tratti di aggiungere temi, indicatori sulla barra di stato, software o anche piccoli comandi (script) per effettuare compiti ripetitivi, c’è solo l’imbarazzo della scelta. Il terminale fornisce una interfaccia a riga di comando che può tornare utile a principianti ed esperti. Ve ne avevo parlato in passato: alcuni comandi sono molto semplici e si imparano in fretta.

I programmi e gli script

La maggioranza dei programmi su Linux è disponibile in comodi pacchetti, scaricabili direttamente dal gestore pacchetti (o “centro software”, oppure altri nomi simili). Tuttavia esistono degli strumenti che vengono distribuiti come eseguibili da estrarre in una cartella e lanciare subito.

Alcuni sono software un po’ di nicchia, come ad esempio K2pdfopt. Si tratta di un eccellente programma open source in grado di reimpaginare completamente un PDF anche scannerizzato e ottimizzarlo per un lettore ebook o uno smartphone. Altri sono programmi molto più conosciuti e “grossi” come l’IDE Eclipse.

Esistono poi innumerevoli script sparsi in giro per il web. Queste vere e proprio gemme si trovano solitamente su siti e blog specializzati e possono essere sotto forma di script già pronti oppure di un elenco di comandi Linux. Nel secondo caso basta metterli in un file con estensione sh e renderli eseguibili per poterli richiamare ogni volta.

Per esempio, potreste essere interessati a un metodo per pulire le tracce di Wine. Cercando sul web trovate questo mio articolo e lanciate i 5 comandi. Per evitare di cercarli di nuovo e copiarli ogni volta, potete creare un semplice file chiamato cleanwine.sh con il seguente contenuto:

#!/bin/bash
rm -rf ~/.config/menus/applications-merged/wine-*
rm -rf ~/.local/share/applications/wine*
find ~/.local/share/icons/ -name "*wine*" | xargs rm -rf
rm -rf ~/.local/share/desktop-directories/wine-*
rm -rf ~/.wine*

In sintesi, dovete includere i comandi desiderati preceduti da una riga chiamata shebang, che specifica quale shell deve essere eseguita. Il file non ha ancora il permesso di essere eseguito. Ciò si può risolvere da terminale, dando:

chmod +x cleanwine.sh

Oppure cliccando col destro e accedendo alle proprietà del file, alla scheda permessi.

Questo lo potete fare con molti altri comandi che trovate in rete, per evitare di ricordare a memoria sequenze lunghissime e impossibili da ripetere senza errori. Esistono naturalmente anche esempi più complicati, come i comandi che richiedono parametri (se agiscono su file o altro). Il mio era solo un esempio, ci vorrebbe un altro articolo per trattare approfonditamente tutto ciò.

Lo stesso discorso vale per molti script in Python formati da un singolo file, come ad esempio il mio script per usare il servizio gratuito di VPNGate.

Lanciare i propri script o programmi

Quello che abbiamo visto finora è bello e interessante, sorge però un problema. Voi potete avere scaricato k2pdfopt o altri eseguibili, oppure potete aver scritto (o salvato dal web) qualche script come cleanwine.sh. Però il vostro sistema non sa che esistono. Intendo dire che, provando a lanciare un comando da terminale, otterrete un errore:

$ k2pdfopt
k2pdfopt: comando non trovato

Finché è uno solo, va bene anche richiamare il percorso completo, supponendo di aver dato i permessi di esecuzione:

/home/andrea/Scaricati/k2pdfopt # oppure ~/Scaricati/k2pdfopt

Questo però non è pulito. Immaginate di avere anche 4-5 script o eseguibili: intasereste qualche cartella adibita ad altro (per esempio Scaricati) e poi dovreste ricordare l’intero percorso ogni volta. Impraticabile.

La soluzione è creare una o più directory in cui mettere gli script e poi “informare” il vostro sistema della sua esistenza.

Organizzare tutto con una directory

Con questa guida intendo spiegarvi l’organizzazione che utilizzo io. Ovviamente potete variarla e adattarla alle vostre esigenze. Sul mio portatile, ho creato nella home una cartella chiamata bin, che contiene anche altre sottocartelle:

$ ls -1d ~/bin/*/
/home/andrea/bin/eclipse/
/home/andrea/bin/sage/
/home/andrea/bin/script/

In sintesi, ho una directory dove ho estratto l’ultima versione di Eclipse, una dove tengo installato Sage e una cartella dove tengo due dozzine di script di vario genere. Ho anche qualche altro software che non ho incluso nell’output, per evitare confusione.

L’idea di base è semplice: includere la maggior parte degli script (in Bash e in Python) dentro a script, alcuni eseguibili come k2pdfopt direttamente in bin e i programmi grossi nelle proprie directory. Qualunque eseguibile o script messo dentro a una di queste cartelle deve poter essere richiamato dal terminale scrivendone il nome.

Una volta organizzata la struttura di cartelle e inseriti i vari script o programmi, è il momento di rendere tutto ciò “visibile” dal terminale.

Aggiustare il PATH

La shell della vostra distribuzione Linux è in grado di riconoscere i comandi che digitate perché sa dove andarli a cercare. Per esempio, se digitate who e premete Invio, il sistema cercherà tutte le cartelle nel PATH fino a trovare un programma che si chiami esattamente così. Il programma (probabilmente /usr/bin/who) viene quindi eseguito.

Qui entra il gioco la personalizzazione: possiamo aggiungere le nostre directory e richiamare gli script e gli eseguibili scaricati. Per farlo, vi basta aprire il file .bashrc nella vostra cartella home.

Due cose a cui fare attenzione:

  • Sto supponendo che la vostra versione di Linux usi Bash come shell predefinita, se non siete sicuri al 99% è così. Gli utenti esperti possono modificare la propria shell e usarne una alternativa.
  • Il file da modificare è nascosto (inizia con un punto), perciò dovrete attivare la visualizzazione dei file nascosti per poterlo individuare. Su alcuni gestori di file, come quello di Ubuntu, si può fare anche premendo Ctrl+H mentre siete nella cartella home.
  • Queste modifiche valgono solo per il vostro utente. Gli altri utenti del sistema non noteranno differenze.

È necessario aggiungere alcune righe in fondo. Magari mettete anche un paio di righe bianche per separare il contenuto precedente da quello aggiunto da voi. In particolare sono una per directory:

# Percorsi aggiunti al PATH
export PATH=$PATH:~/bin
export PATH=$PATH:~/bin/script
export PATH=$PATH:~/bin/sage

Non ho aggiunto Eclipse perché non mi interessa richiamarlo da terminale, ma solo tenerlo in una cartella “in ordine”. Come potete vedere, stiamo ridefinendo il PATH aggiungendovi un separatore (due punti) e la directory desiderata. Ne mettiamo una alla volta per comodità.

Ricordate di modificare il mio esempio, non copiatelo così com’è. Un paio di osservazioni:

  • Se non usate Sage o se avete predisposto altre cartelle, adattate le righe di conseguenza.
  • La tilde serve a rappresentare il percorso della vostra cartella home.

Ora dovreste chiudere il terminale e riaprirlo. Qualsiasi script o eseguibile messo nella cartella bin o in un’altra di quelle che avete elencato potrà essere richiamato con il relativo nome.

Alcuni consigli

Aggiungendo altri programmi potrebbe capitarvi di creare altre sottodirectory, e queste non sono incluse nel PATH. Potete modificarlo ogni volta, oppure mettere un collegamento simbolico all’esegubile principale nella cartella bin: questo in genere funziona bene con i programmi in Java.

Un esempio è jPdf Tweak, un altro software per modificare i PDF. L’ho scaricato in questo percorso:

~/bin/jpdftweak-linux-x64-1.1

Poi però l’ho collegato nella directory principale, per evitare di dover modificare la mia configurazione:

cd ~/bin/
ln -s jpdftweak-linux-x64-1.1/jpdftweak.jar .

Ciò potrebbe non funzionare per alcuni software, provate caso per caso. Ecco come appare attualmente la mia directory per gli script e gli eseguibili:

Esempio di contenuto della directory predisposta
Esempio di contenuto della directory predisposta

Per quanto riguarda i programmi che hanno interfaccia grafica, può essere utile creare un’icona per il menu. Il lanciatore va inserito in:

~/.local/share/applications

Deve inoltre avere una estensione .desktop. Eccovi un esempio del contenuto del mio file jpdftweak.desktop:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=jPdf Tweak
Icon=/home/andrea/bin/jpdftweak-linux-x64-1.1/icons/icon256.png
Path=/home/andrea/bin/jpdftweak-linux-x64-1.1/
Exec=jpdftweak.jar

Ovviamente i campi vanno adattati al caso specifico.

Spero di aver fornito una spiegazione esauriente per creare una propria directory dove immagazzinare gli script e i file binari. Chiaramente queste istruzioni rispecchiano le mie personali preferenze, altri potrebbero usare metodi differenti.

Se avete dei suggerimenti a questo proposito o volete condividere la vostra organizzazione in questo ambito, lasciate un commento. 🙂

Script per Video Mediaset 5.2: design aggiornato e lo schermo intero per davvero

Oggi ho rilasciato la versione 5.2 per il mio script che permette di scaricare i filmati da Video Mediaset. Anche se la precedente 4.6 ha “resistito” al cambio di grafica, continuando a funzionare, ho preferito adattare lo script al nuovo design del sito e semplificare un po’ le cose.

Avrebbe dovuto essere la 5.0. Tuttavia, in seguito sono venute fuori complicazioni con Firefox, poi ho scoperto anche che hanno cambiato le carte in tavola per quanto riguarda le estensioni e di conseguenza anche Greasemonkey. Pertanto avevo dovuto “ripristinare” la 4.6, inventandomi la versione 5.1.0.4.6 (copia-incolla della 4.6).

Cos’è cambiato di preciso? In realtà non molto… Prima, su Greasemonkey l’autore di uno script poteva inserire oggetti e pezzi di codice all’interno della pagina. Io per esempio inserisco la barra verde contenente i link al video. Ora non più, bisogna usare le funzioni apposite fornite da Firefox, come ad esempio exportFunction.

Conclusione? Si fa la stessa cosa, non cambia niente. Solo che bisogna farlo in modo complicato, e così facendo bisogna istruire gli altri browser (per esempio Chromium) su cosa sia exportFunction, che è una prerogativa esplicita di Firefox. Da qui la perdita di tempo, visto che per pura coincidenza una nuova funzionalità che volevo aggiungere aveva bisogno di fare ciò.

Benvenuti all’Ufficio complicazione affari semplici. 😛

Comunque… a parte lo sfogo tecnico sul fatto che gli sviluppatori Firefox pensino che noi non abbiamo niente di meglio da fare che aggiornare i nostri script per niente, alla fine la nuova versione è pronta.

Vediamo i cambiamenti principali. Innanzitutto, ho rimosso tutta la parte di gestione del player. Video Mediaset ora usa HTML5 ogni qualvolta sia possibile, ripiegando su Flash Player in caso contrario. Niente più offensive discriminazioni per noi utenti Linux. 😀

Ho potuto quindi concentrarmi sul migliorare il riproduttore fornito da Mediaset. Dato che la modalità “schermo intero” che hanno messo è abbastanza buffa (e finta), ci ho messo un po’ del mio e ho fatto delle modifiche. Cito testualmente dall’articolo sullo script:

A partire dalla versione 5.2 dello script, ho inserito una funzionalità che migliora notevolmente la modalità “schermo intero” e il player fornito da Video Mediaset. In particolare:

  • usa il vero full screen, invece di un ingrandimento del filmato ai bordi della pagina
  • funziona con il riproduttore HTML5, sia su Firefox che su Chrome/Chromium
  • nasconde il cursore del mouse che diventa visibile solo muovendolo verso il basso, dove ci sono i controlli del player
  • elimina la pubblicità che precede il filmato

Nelle seguenti immagini potete vedere la differenza tra la modalità a schermo intero di Video Mediaset e quella col mio script attivato:

Devo dire comunque che Mediaset ha fatto un buon lavoro con il portale, la nuova grafica è molto pulita e si focalizza sui contenuti più che sulle decorazioni inutili. Ottimo anche il passaggio ad HTML5. 🙂

Come sempre, potete attendere che lo script si aggiorni automaticamente, oppure accorciare i tempi e installarlo manualmente. Buona visione! 😉

Inoltrare le email da Libero Mail a qualsiasi altro indirizzo

Da quando ho pubblicato (nel 2011) il mio articolo su come usare la casella email di Libero tramite IMAP, usando Gmail come ponte, tale post ha ricevuto più di 98900 visite. Supponendo che in 1 caso su 100 il mio post sia stato utile, significa aver aiutato quasi 1000 persone a evitare l’uso della terribile interfaccia web di Libero Mail, o ancor meglio aver permesso la migrazione definitiva verso un servizio di qualità come Gmail.

La mia guida si basava sull’uso dei filtri per l’inoltro della posta verso Gmail. Non sono rimasto perciò molto sorpreso quando una persona mi ha comunicato che recentemente non era possibile seguire la mia guida, in quanto Libero ha cambiato le carte in tavola permettendo l’inoltro della propria posta solo verso altre caselle Libero.

La figura mostra cosa succede quando si prova a creare un filtro di inoltro verso una casella email non fornita da Libero:

Avviso: i tuoi dati sono nelle nostre mani!
Avviso: i tuoi dati sono nelle nostre mani!

Di fatto è stata attuata una vera e propria politica di vendor lock-in, vale a dire il fenomeno per cui un fornitore di servizi incatena i propri utenti, impedendo ai medesimi di “scappare” coi propri dati verso altri servizi.

Se mi è consentito usare un eufemismo, non è che questa cosa sia esattamente da considerarsi gradita e simpatica… Specialmente quando un ignaro utente si rende conto di non poter passare a un altro fornitore email avendo la tranquillità che i messaggi mandati all’indirizzo vecchio saranno inoltrati. 😉

Per questo motivo ho analizzato il sito di Libero Mail e ho trovato un metodo abbastanza pratico per disattivare il blocco. Si tratta di uno user script per il browser, vale a dire un minuscolo programma che viene avviato quando visitate il sito di Libero Mail.

Per usarlo, dovete installare l’estensione adatta per il vostro browser. Questa cambia a seconda del software che utilizzate per navigare:

Una volta installata l’estensione, potete provvedere a scaricare lo script aprendo la pagina di download, tramite il seguente pulsante:

Download — Libero Mail forward to ANY address

Ovviamente poi cliccate su Install this script.

Potete quindi recarvi sul sito web di Libero Mail e creare i filtri di inoltro che più vi aggradano, senza messaggi fastidiosi, inopportuni e offensivi che vi bloccano. 🙂

Una nota importantissima che voglio aggiungere: non è assolutamente escluso che in futuro Libero aumenti le limitazioni e queste pratiche “incatenanti”. Vi raccomando perciò di usare i filtri di inoltro per ricevere i messaggi sulla vostra casella di un provider più funzionale, e avvisare alla svelta chi vi scrive che possedete un nuovo indirizzo.

Migrate prima che sia troppo tardi. 😉