How to download BBC iPlayer videos and radio programmes

Abstract (Italiano): Scrivo questo articolo in inglese perché (ovviamente) la registrazione dei video della BBC interessa maggiormente le persone che parlano inglese. Se lasciate un commento, gentilmente fatelo in inglese.

Abstract (English): I’m writing this post in English because (obviously) recording BBC videos is mostly of interest for those who speak English. Also, a small note for native speakers, especially British people: I’m Italian and I’m mostly used to write using American spelling. For this reason, the post may contain mistakes or American words which may seem unusual. I’m sorry for that. If you find errors (apart from AE spelling) let me know in the comments.

Update (30 April 2017): Version 4.0 of the script is out, which is mostly rewritten from scratch and leverages youtube-dl instead of ffmpeg. I’ve updated this post accordingly.

Introduction

I already wrote about downloading videos from the BBC and Hulu websites (in Italian), however it was about two years ago. Websites change and so does software, hence the suggested method of using get_flash_videos does not work anymore.

I also wrote a generic article about downloading videos from websites (in Italian, too) that contains many different use cases and examples. One of my readers asked for clarification about recording iPlayer videos, so I tried again myself. I was able to apply some of the techniques of my post, together with a couple of clever tricks to find the maximum quality.

Since the process is a bit involved, I wrote a small software which automates all the steps and tells you how to start the recording immediately. This program is actually a so called user script, i.e. a piece of software that runs directly into your browser.

This article explains how to download and install the script. Then it shows you how to use it and what you need to do to record BBC iPlayer videos. Before we start, you need to be able to trick the BBC website into thinking you are living in the UK. If you are actually living there, skip the next section.

Pretending to be in the UK

The BBC iPlayer service is officially available only in the United Kingdom. The website will check your IP address and refuse access if you are trying to watch content from another country. To fix this problem, you need to use a technique to access the site through a server in the UK.

Usually the best tool for the job is a VPN service. VPNs are used to establish secure connections to private networks over the Internet, but may also be used to avoid geographical restrictions of websites.

There are many different VPN services. Most of them are paid (although cheap), while some are free. Among the best options, you can:

Please keep in mind that recently the BBC has started being more aggressive at blocking VPN providers. Always verify if your VPN provider works with the BBC (most of them have free trials available).

Luckily, I also wrote a Python script for easily using VPNGate by specifying only the desired country which works perfectly on any Linux distribution, including Ubuntu, Mint, Fedora, OpenSuse and Mageia. You can check it out here.

You may also try VPN OneClick, which lists UK among the servers. Regardless of what VPN service you choose, once it is activated, you are ready to go on and start recording videos from iPlayer.

Script installation

To run the user script in your browser, you need to install an extension that is compatible with Greasemonkey (version 3) scripts. The following are recommended:

Currently the script does not work with Greasemonkey 4 on Firefox 57 or later. Please do not use Greasemonkey 4.

After this step, you can click the following link to open the script page on Greasyfork. On the page that shows up, click on the Install this script button to complete the procedure.

You are now ready to start downloading.

Recording videos

The next time you open a video page on iPlayer, you’ll see that the script adds a box under it with some instructions and a command line. The following pictures shows an example with this video.

bbc_download_youtube-dl
Example of the output of the script

The command line displayed in the gray box is a one-liner you can use together with youtube-dl. This is a software used to convert and record video files, which can be installed on any of the common Linux distributions such as Ubuntu. More informations are available on the official website.

Despite its name, it does not work only for YouTube, it works for many other websites as well. My script uses it because it can download DASH streams served through a MPD file easily. The program can download some BBC videos without the need of my script, however the latter:

  • works on many pages where youtube-dl doesn’t recognize the stream URL
  • provides you with converted SRT subtitles on the fly, thanks to its internal converter

Remember that you will still need ffmpeg installed on your system. Check out its official website here.

To start the download:

  • carefully copy the entire content of the gray box (and nothing else)
  • paste it into a terminal window
  • press Enter and wait until the process is over

Keep in mind that this will create a lot of temporary files, but they will get removed automatically at the end.

It is also possible to download the videos on Windows or macOS. On Windows you just need to create a new file called download.bat (with Notepad, or any other editor) in the same directory of youtube-dl.exe and copy-paste the command line into it. After that, you click the bat file and it should start downloading.

However, please note that I do not offer any assistance for Windows or macOS here on the blog. If in doubt, please use Linux, or find an expert to help you with your OS. You can find the installation instructions of youtube-dl by clicking here.

Recording radio programmes

Starting from version 3.2, the script supports radio programmes such as those provided by BBC School Radio. The process is exactly the same as recording a video, including the command line. The files are in M4A format as provided by the BBC (no conversion is performed).

Conclusion

The script I developed allows to automate all the necessary steps required to ensure the highest possible quality during the downloading. In particular, the script does the following:

  • find the configuration of the player for mobile phones
  • get the list of DASH manifests for different bitrates
  • look for the best available bitrate for desktop computers
  • show the command line to the user

Performing the process manually is time consuming, error-prone and tedious if done multiple times. In this way it should be much easier for those who just want to record a couple of videos to watch them with a modern TV, on the train or keep them in a personal library.

Moreover, starting from version 3.0 the script shows you a download link to the original subtitles in TTML format (which is not very widespread). In addition, it performs an automatic conversion to the commonly used SRT format for your convenience.

Happy downloading! 🙂

Did you like the article?

Writing software and tutorials like this takes time. If you found the provided information useful, and you liked the post, you may buy me a coffee by clicking on the button. 🙂 If you do so, please leave a message on the donation page telling me it’s for this script.

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. 🙂

Stampanti Brother e l’errore “Impossibile rilevare”: un semplice trucco per allungare la vita delle cartucce

Possiedo con soddisfazione una stampante Brother DCP-J140W a getto d’inchiostro. In passato ne avevo parlato spiegando anche come installarla con Linux.

La cosa più interessante di questa stampante è il costo delle cartucce: le compatibili dalla Germania si pagano circa 80 centesimi di euro a cartuccia, tra l’altro in formato ad alta capacità. Un “difetto” di questo brand, però, è che appena la stampante rileva una cartuccia esaurita, tutto si blocca.

Compare infatti il messaggio “Impossibile rilevare”, di solito seguito da una sigla o da una rappresentazione grafica, se la stampante ha un display a colori. La sigla può essere BK, C, M, o Y a seconda del colore: nero, ciano, magenta o giallo.

Perché la stampante si blocca quando esaurisce un colore?

Cercando informazioni online, ho trovato un articolo molto interessante dal titolo Printing with the Black Ink Cartridge Only, nel quale si sfatano alcuni miti in merito a questo argomento. Molti ritengono infatti che i produttori forzino questo comportamento meramente per far acquistare altre cartucce, ma in realtà non è così.

Esistono alcune motivazioni tecniche alquanto valide per impedire la stampa con cartucce vuote. Non mi dilungherò molto, ma voglio elencare i motivi principali di seguito. Per tutti i dettagli, leggete l’articolo linkato.

  1. Innanzitutto, l’inchiostro può seccarsi nel punto di uscita della testina, se rimane lì per un tempo prolungato. Ciò causa stampe di bassa qualità e potrebbe risultare in blocchi irreparabili. Questo viene evitato con un periodico ciclo di pulizia delle testine… che richiede l’uso di un po’ di inchiostro.
  2. In secondo luogo, se una cartuccia è assente, la stampante cercherà di “succhiare” inchiostro, ma otterrà solo aria. Alcune stampanti riscaldano l’inchiostro fino al punto di ebollizione o lo pompano attraverso dei piccoli fori: se l’inchiostro è assente, questo può causare danni alle testine.
  3. Il terzo motivo è che l’assenza del nero può degradare notevolmente la nitidezza degli altri colori, che richiedono un certo quantitativo di inchiostro nero per risultare più brillanti. L’articolo mostra anche un’immagine di esempio.

Quando le cartucce in realtà non sono vuote

Posto che stampare con cartucce completamente esaurite può essere dannoso, rimane tuttavia un altro problema. Infatti le stampanti Brother a volte segnalano l’assenza di inchiostro con cartucce tutt’altro che vuote!

A me è successo recentemente, desiderando stampare qualche articolo per lavorare alla tesi. La stampante lamentava l’assenza di inchiostro nero, ciano e magenta: insomma ben 3 su 4. Pur essendo consapevole di aver pagato le cartucce pochissimo, sono rimasto piuttosto deluso quando le ho esaminate. Guardate la foto.

Livello di inchiostro effettivo di ciano e magenta
Livello di inchiostro effettivo di ciano e magenta

Non ho fotografato il nero, ma vi garantisco che la situazione era analoga. Le cartucce compatibili hanno il vantaggio di essere trasparenti, mostrando che in effetti c’è ancora circa il 20% di inchiostro disponibile. Altro che vuote.

L’articolo di cui ho parlato prima—relativo ai motivi per cui le stampanti si bloccano—contiene suggerimenti per ovviare alla situazione con alcune marche. Tuttavia, in merito alla Brother è piuttosto pessimista, arrivando a negare l’esistenza di soluzioni:

Cartridges that fall under this description will simply not let you continue if they believe a cartridge is missing or is out of ink. there is no work around or solution currently available other than replacing the cartridge.

Una volta consapevole dei motivi tecnici “di sicurezza”, sapevo comunque di non avere delle cartucce vuote, e volevo stampare. Prima di darmi per vinto, ho voluto cercare su Internet ancora un po’. È andata a finire che la soluzione me l’ha suggerita direttamente il sito di Brother USA.

Cosa dice il sito di Brother

I vari portali nazionali di Brother contengono un vasto catalogo di pagine molto simili, con i manuali d’istruzioni dei prodotti e le pagine di FAQ (domande frequenti). Quelle relative all’errore “Impossibile rilevare” o “Cannot detect” sono più o meno tutte uguali, limitandosi a dire di provare a togliere la cartuccia e reinserirla, altrimenti buttarla.

Questo non è molto utile. Fortunatamente, la pagina relativa al modello MFC-J6920DW è decisamente più dettagliata e spiega come viene rilevato il livello d’inchiostro. Riassumo qui le informazioni principali, solo per il pezzo che ci interessa. Ho rifatto le figure perché quelle originali sono di bassa qualità.

L’articolo inizia spiegando che l’errore può comparire in caso di cartuccia esaurita, oppure nel caso si tenti di usare una cartuccia del modello sbagliato. Raccomanda inoltre di leggere attentamente il messaggio.

Estrazione della cartuccia
Estrazione della cartuccia

Si passa poi alle istruzioni per estrarre le cartucce. Dopo aver aperto lo sportello è necessario premere la levetta relativa al colore desiderato, facendola scattare. La cartuccia viene spinta fuori e si può rimuovere.

Segue tutta una filippica che spiega come assicurarsi che le cartucce siano originali. A noi questo non interessa, passiamo oltre. Il punto 5 della spiegazione ci dice finalmente come fa la stampante a rilevare il livello di inchiostro. Viene mostrato tutto con due foto, che ho ricostruito qui sotto:

Ricostruzione dello schema fornito da Brother
Ricostruzione dello schema fornito da Brother

In sostanza l’inchiostro, scendendo di livello, fa muovere in alto un indicatore nero che esce dalla finestra del sensore. L’articolo si chiude spiegando che è necessario procurarsi una cartuccia che non sia esaurita. Infine illustra come riporre le cartucce all’interno della stampante.

Resettare il livello di inchiostro

Avendo imparato il funzionamento del sensore, si può procedere a “persuadere” la stampante ad accettare le cartucce. Il metodo è molto semplice: coprire la finestra del sensore!

Io ho proceduto a “scoperchiare” l’area interessata spostando con le dita la plastica nera che scorre lateralmente sulla cartuccia. Ho quindi operato con la prima cosa che mi è capitata sotto mano, in particolare un pennarello UniPosca argentato.

Finestra del sensore coperta
Finestra del sensore coperta

Ho nominato il pennarello solo come esempio, potete usare quello che vi va, che sia un pezzo di nastro isolante, una mano di tempera, una placcatura in oro… 😛 Gli indelebili ad acqua però non sembrano andare bene.

Scherzi a parte, l’importante è che sia coperto da tutti e due i lati!

Una volta effettuata l’operazione, reinserite le cartucce nella stampante. Il display mostrerà un messaggio chiedendo se sono state sostituite delle cartucce. Rispondete “sì” a ognuna. Se tutto è andato per il verso giusto, verrà stampata una pagina di prova e potrete continuare a stampare quello che vi serve.

Livello del nero dopo la "riparazione"
Livello del nero dopo la “riparazione”

Come potete vedere dalla foto, le cartucce verranno viste come completamente piene. Rimarrà a voi l’onere di cambiarle quando saranno effettivamente in procinto di esaurirsi.

Lo potrete vedere dai colori sbiaditi della stampa e a quel punto sarà proprio il caso di mettere delle cartucce nuove. Ricordate quello che ho scritto sulle ragioni tecniche di questa necessità. Meglio non rischiare di rovinare la stampante. 😉

Pensate di aver cancellato dei file? I malintenzionati li recuperano, ecco come

Un paio di settimane fa ho finito di pubblicare sul sito del GrappaLUG i video del Linux Day 2014. Abbiamo avuto ben 8 talk e il lavoro di montaggio ha richiesto un po’ di tempo.

Sono stato impegnato sia per l’introduzione all’evento, sia in un intervento tutto mio dal titolo Non prestate quella chiavetta. Il talk aveva lo scopo di far prendere consapevolezza alle persone sulla cancellazione dei file, che troppo spesso è solo un’illusione. Molti infatti non sono consapevoli dei limiti di un gesto come “svuotare il cestino” e dei rischi che si corrono in termini di privacy.

Se volete saperne di più su questo argomento, e sui mezzi che hanno eventuali malintenzionati per scoprire quello che pensavate fosse cancellato, potete rivedere il mio intervento. Ecco la descrizione e il video del talk:

A volte crediamo di aver cancellato documenti e file privati dai nostri dispositivi, ma in realtà non è così. Spesso un malintenzionato può recuperare i nostri dati personali e ledere la nostra privacy.

Clicca qui per mostrare contenuto da YouTube.
(leggi la privacy policy del servizio)

Purtroppo avevo un po’ di raffreddore, ma tutto sommato credo che il risultato sia stato positivo. Il pubblico in sala era presente e interessato, nonostante fosse l’ultimo talk della giornata. 😉 Se volete, potete scaricare le slide sul sito del GrappaLUG, cliccando qui.

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! 😉

VPN in Italia, USA, UK e molto altro gratis con VPNGate

Alcuni siti web, specialmente quelli dove vengono trasmessi dei video (si pensi ad esempio a Rai Replay o alla BBC) impongono delle restrizioni per la visione. Succede quindi che per visualizzare o scaricare i video forniti da questi siti sia necessario essere residenti in un paese “autorizzato”.

O perlomeno far credere che sia così. 😛

Senza dilungarmi troppo in questioni tecniche (c’è la pagina su Wikipedia per quello), esistono dei servizi che forniscono una VPN: questa tecnologia consente di collegarsi alla rete attraverso un server di uscita che può essere collocato ovunque (quindi anche in un altro stato). Ad esempio, una persona che si trova in Italia può visitare un sito americano ed essere “rilevato” come un navigatore che si collega dagli Stati Uniti.

Abiti all’estero e vuoi scaricare i filmati da Rai Replay? Ti serve una VPN (non per tutti i video, in questo caso… ma alcuni sì). Abiti in Italia e desideri utilizzare Hulu (sito web americano di streaming legale)? Ti serve una VPN.

Ovviamente questi sono solo alcuni esempi, i residenti di certi paesi “difficili” (Cina, Siria, eccetera) usano le VPN per aggirare la censura governativa o proteggersi dall’intercettazione indiscriminata. Comunque, diciamo che è una tecnologia che torna utile in moltissime occasioni.

Sappiamo bene che esistono numerosi servizi di VPN in abbonamento, ormai ne fanno anche a prezzi bassissimi. Ci sono poi anche VPN con offerte in cui si paga una volta solta e poi durano per sempre. Nonostante questo, oggi ho scoperto un servizio tremendamente interessante.

Il servizio VPNGate

L’infrastruttura in oggetto si chiama VPNGate. Si tratta di una rete di server sparsi per il mondo, che forniscono accesso VPN gratuito e sono gestiti interamente da volontari!

Come molti altri, supportano OpenVPN quindi possiamo avere accesso anche su Linux in modo molto semplice. Inoltre la cosa interessante è che loro stessi “suggeriscono” di creare del software con la propria API, direttamente in home page:

Do you want to parse the below HTML table? Instead you can use CSV List to make your own VPN Gate client app.

Lo script vpngate.py

Non ho saputo resistere e mi sono lanciato subito. 🙂 Ho creato uno script in Python che si occupa di tutte le operazioni necessarie:

  • ottiene la lista dei server da VPNGate
  • filtra le voci tenendo solo quelle del paese scelto dall’utente
  • estrae il server con score più alto (solitamente coincide con il più veloce)
  • attiva il file di configurazione necessario
  • fa partire il comando openvpn automaticamente

L’idea di base è quella di scegliere il paese, e lasciare fare tutto il resto al computer. 🙂

Download e utilizzo

Ho pubblicato lo script su Github, assieme a un file README in inglese con qualche dettaglio in più.

Per scaricare il file vpngate.py potete cliccare sul bottone nella pagina di Github, oppure direttamente da terminale:

wget https://gist.github.com/Lazza/bbc15561b65c16db8ca8/raw/vpngate.py
chmod +x vpngate.py

Nota: dovete avere installato il modulo Requests di Python, nonché il client di OpenVPN. Su Ubuntu si possono installare i pacchetti necessari con il seguente comando:

sudo apt-get install python-requests openvpn

L’utilizzo è molto semplice, vi basta lanciare lo script indicando il paese tramite il nome oppure il codice di due lettere:

./vpngate.py US

Se volete scrivere il nome per esteso, potete anche digitarlo in modo parziale. Le maiuscole non hanno importanza. Perciò Russian Federation, Russia e russia funzioneranno ugualmente.

Ovviamente dovete scrivere i nomi dei paesi in inglese. Nel dubbio, date un’occhiata al sito di VPNGate e verificate il nome riportato.

Il processo della VPN va terminato premendo Ctrl+C, come si farebbe lanciando a mano OpenVPN. Nel giro di pochi secondo lo script dovrebbe “segnalare” a OpenVPN di fermarsi e stampare un messaggio di conferma a video.

Per finire, eccovi una breve demo di vpngate.py in azione:

Clicca qui per mostrare contenuto da YouTube.
(leggi la privacy policy del servizio)

Conclusione

Che vogliate accedere a un sito con restrizioni geografiche, proteggervi durante l’uso di una rete wi-fi pubblica o altro, VPNGate fornisce una lista veramente ampia di paesi tra cui poter scegliere. Nel momento in cui sto scrivendo, la lista di server permette di scegliere tra i seguenti paesi:

Giappone, Corea del Sud, Russia, Regno Unito, Stati Uniti d’America, Belgio, Indonesia, Venezuela, Germania, Austria, Thailandia, Australia, Svezia, Repubblica Dominicana, Vietnam, Cina, Malesia, Taiwan, Canada, Ucraina, Estonia, Marocco, Oman, Nigeria, Egitto, Bermuda, Francia, Bulgaria, Svizzera, Iran.

In questo preciso momento non visualizzo server italiani, tuttavia ogni tanto—aggiornando la lista sul sito—compaiono paesi che prima non c’erano. Inoltre dai log del servizio si evince che c’è chi ha utilizzato server italiani.

Per questi motivi, ritengo di poter dire con ragionevole sicurezza che abbiano anche qualche punto di uscita in Italia, magari non attivo 24 ore su 24. In alternativa, potete usare una VPN più seria che fornisca anche l’Italia tra i paesi disponibili.

Tenete conto che vpngate.py usa la lista di server fornita in formato CSV dall’API, la quale contiene server da parecchi paesi ma non tutti. Per alcuni potrebbe essere necessario scaricare il file di configurazione per OpenVPN dal sito e lanciarlo manualmente. 😉

Libero Mail… “libera” l’accesso IMAP

Recentemente è avvenuta una svolta storica da parte di Libero, un servizio molto usato in Italia che fornisce anche una casella email gratuita. Infatti da qualche tempo è stato reso utilizzabile il servizio IMAP (e anche quello POP) da qualsiasi connettività anche per le caselle gratuite.

Prima di questa modifica, l’utilizzo di IMAP era una prerogativa esclusiva degli utenti Plus e degli abbonati Infostrada. La pagina di supporto riguardante la configurazione dei client riflette l’aggiornamento:

Le caselle email attivate gratuitamente con la registrazione a Libero sono consultabili tramite programmi di Posta (client) in modalità IMAP4/POP3 con qualsiasi connettività.

Accesso ad una casella gratuita Libero Mail tramite IMAP, usando Thunderbird come client
Accesso ad una casella gratuita Libero Mail tramite IMAP, usando Thunderbird come client

La notizia giunge in controtendenza rispetto al comportamento che l’azienda ha avuto fino a questo momento. Dal 2011, uno degli articoli più letti del mio blog riguardava l’accesso a Libero Mail tramite IMAP aggirando le limitazioni con una casella Gmail intermedia. Inoltre, è notizia di pochi mesi fa che Libero ha ristretto i filtri e consente l’inoltro della propria posta solo verso altre caselle Libero Mail. Anche in tal caso, ho scritto un articolo su come aggirare le limitazioni sull’inoltro.

Insomma, dati i cattivi precedenti, si può dire senz’altro che si tratta di una buona notizia. Questo in particolare anche per chi desidera migrare verso una casella email più moderna, spaziosa e funzionale come Gmail.

Tramite IMAP, infatti, è facilissimo usare un client come Thunderbird per trasferire tutti i propri messaggi da Libero a Gmail (o altre caselle dotate di accesso IMAP). Si tratta solo di trascinare col mouse le email selezionate verso la casella di destinazione desiderata. 🙂

Risolvere i problemi di riproduzione dei file MKV

Recentemente abbiamo acquistato un televisore LED della LG. Per provare la funzionalità di riproduzione USB, ho messo sulla chiavetta alcuni video di trasmissioni televisive.

Ho usato sia dei programmi RAI, che si possono scaricare seguendo le mie istruzioni, sia alcuni episodi dei Cesaroni, scaricati da Video Mediaset con il procedimento di cui vi ho parlato in quest’altro articolo.

Nel primo caso, si trattava di file MP4, e ho verificato che funzionano perfettamente. Posso riprodurre i filmati, usare l’avanzamento veloce (anche fino a 16x), riavvolgere, saltare a un punto preciso, eccetera. Il problema invece è sorto con la fiction salvata da Video Mediaset.

Come ben sapete, quando salvate filmati Silverlight utilizzando ismdownloader, il programma produce in uscita un video in formato Matroska, con estensione MKV. Il televisore lo riproduce, tuttavia i problemi iniziano quando si tenta di usare l’avanzamento veloce.

Nel tentare di superare la velocità 2x, un triste messaggio appare in mezzo allo schermo:

Messaggio di errore del televisore tentando di usare l'avanzamento veloce su un filmato MKV
Messaggio di errore del televisore tentando di usare l’avanzamento veloce su un filmato MKV

Ancor peggio, quando si vuole riavvolgere il filmato, si riceve la stessa risposta:

Funzione al momento non disponibile

Questo è scomodissimo, perché se per qualche motivo non abbiamo capito una frase e la vogliamo sentire nuovamente, non possiamo. Se per sbaglio premiamo stop dopo aver visto mezz’ora di filmato, non siamo in grado di riprendere la riproduzione se non dopo 15 minuti di avanzamento a velocità 2x.

Un problema assai simile succede anche con alcuni software di riproduzione: mentre VLC e Totem riescono a farci vedere il video e ci permettono di saltare in qualsiasi punto (operazione chiamata seek), Mplayer non lo permette.

Ho cercato di trovare una soluzione al problema. Ovviamente, fare la ricodifica dei video è fuori discussione. Non solo per la perdita di qualità, ma anche per il tempo necessario. Alla fine ho trovato una risposta in questo forum, dove viene suggerito l’utilizzo del programma MKVToolNix, in particolare dello strumento mkvmerge.

Questo software consente la ricostruzione del contenitore MKV (operazione definita muxing) senza ricodificare i flussi audio e video. Questo permette di compiere l’operazione in pochi secondi per un intero video (circa 20-30, dipende dalla velocità del computer).

Con un apposito parametro, si può risolvere il problema dell’avanzamento veloce e del seek!

Innanzitutto, provvedete a installare il software necessario. Dovreste trovare il pacchetto di mkvtoolnix nel gestore pacchetti della vostra distribuzione (ad esempio, su Ubuntu potete cercarlo nell’Ubuntu Software Center).

A questo punto, vi basta invocare il programma con il parametro risolutivo, in questo modo:

mkvmerge -o file_corretto.mkv --clusters-in-meta-seek file_originale.mkv

Ovviamente adattate il comando con il nome del filmato di partenza e il nome finale che desiderate. 😉 Nel giro di poco, il software produrrà il video corretto a partire da quello originale, creando una piccola sezione alla fine del file che consente la corretta riproduzione.

Lo stesso video, riprodotto a 8x dopo il procedimento di "riparazione"
Lo stesso video, riprodotto a 8x dopo il procedimento di “riparazione”

Se volete uno script che converta tutti i filmati di una cartella, potete usare quello che ho creato per me:

#!/bin/bash

echo "MKV fix for fast-forward and seek"
echo ""

for i in "$@"; do
    echo "Fixing $i"
    mkvmerge -o "${i}_fix.mkv" --clusters-in-meta-seek "$i"
    mv -f "${i}_fix.mkv" "$i"
done

echo ""
echo "Done!"

Attenzione: questo script sovrascrive i video originali dopo la “riparazione”!

Salvatelo in un file mkv_fix.sh, dategli i permessi di esecuzione, e poi richiamatelo sui file che volete, per esempio così:

mkv_fix.sh *.mkv

Infine, c’è anche la possibilità di usare il parametro di cui vi ho parlato tramite l’interfaccia grafica del programma. Ovviamente tale metodo è più lento e scomodo, perciò non lo spiego, ma potete leggere come si fa in questo topic. 😛

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:

  • Firefox → Greasemonkey
  • Chrome/Chromium → Tampermonkey
  • Internet Explorer → cambiate software e iniziate a usare un browser decente 😛

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

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. 😉

Visualizzare e scrivere le emoji con la tastiera in Linux

Le emoji sono le famose faccine nate originariamente in Giappone parecchi anni fa, e portate più recentemente al successo da applicazioni mobili come Whatsapp, Facebook Messenger e Google Hangouts.

Praticamente chiunque possieda uno smartphone avrà usato almeno una volta la faccina sorridente ☺,  il pollice in su 👍 o, perché no, anche la “cacchetta” 💩. 😛 Tutto ciò è reso possibile dal fatto che questi simboli fanno parte di un vero e proprio standard, ovvero sono contenute nella versione 6.0 dello standard Unicode.

Ciò ha una conseguenza positiva: è stato stabilito un linguaggio universale, esattamente come con le normali lettere dell’alfabeto, e ciò permette a tutti i software e sistemi operativi di poter riconoscere tali simboli.

Ovviamente Linux non è da meno, tuttavia nell’installazione predefinita di Ubuntu e altre distribuzioni non è presente un metodo semplice per scrivere questi simboli. Inoltre, a volte manca anche il font per visualizzarle. Vediamo come porre rimedio a tutto ciò. 🙂

Partiamo dalla visualizzazione. Esiste un carattere chiamato Symbola che contiene tutte le icone. Su Ubuntu si può installare tramite il pacchetto ttf-ancient-fonts, se usate altre distribuzioni verificate voi il nome del pacchetto. 🙂

Fatto ciò, dovreste essere in grado di visualizzare le emoji sulla pagina di Wikipedia (potrebbe richiedere un riavvio del browser). Ora è il momento di abilitare l’inserimento semplificato delle icone, vale a dire la possibilità di digitarle senza copiarle dalla tabella caratteri. Ciò che otterrete alla fine sarà un menu di questo tipo:

Menu di inserimento assistito per le emoji
Menu di inserimento assistito per le emoji

Come vedete nella figura, digitando un pezzettino della descrizione dell’emoji desiderata (in questo caso l’inizio della parola sunglasses), appare un menu che consente di scegliere la faccina voluta: 😎

In molte distribuzioni, avrete notato che sulla taskbar avete un menu a tendina che consente di cambiare la tastiera (per esempio da Italiana a Americana), questo è reso possibile grazie al software IBus. Di seguito vi spiegherò come aggiungere un’altra “lingua” tra quelle disponibili, ovvero UniEmoji.

Innanzitutto bisogna scaricare il codice, magari in una cartella temporanea, e poi scompattarlo. I comandi da dare nel terminale sono i seguenti:

cd /tmp
wget https://github.com/lalomartins/ibus-uniemoji/archive/master.zip
unzip master.zip
cd ibus-uniemoji-master

L’ultimo comando vi fa spostare nella directory corretta.

A questo punto dovete installare il pacchetto checkinstall, che vi consiglio perché permette una eventuale disinstallazione in modo assai pulito. Su Ubuntu basta fare:

sudo apt-get install checkinstall

Ora potete procedere alla compilazione del pacchetto:

sudo checkinstall

Appariranno delle domande. La prima recita Should I create a default set of package docs? [y] e voi dovrete premere semplicemente Invio. La seconda vi invita a inserire una descrizione al cursore >>, premete sempre Invio. La terza vi mostrerà un riepilogo dei dati del pacchetto, tra cui:

[...]
2 - Name: [ ibus-uniemoji ]
3 - Version: [ master ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
[...]

Voi dovete premere 3 per modificare la versione. Quando vi chiede di inserirne una nuova, scrivete semplicemente 1 e premete Invio. Premete nuovamente Invio al successivo riepilogo, e attendete. Presto vedrete un messaggio che inizia per:

Done. The new package has been installed and saved to [...]

Ora è quasi fatta! 🙂 L’icona predefinita di UniEmoji è bruttina, pertanto vi consiglio di rimpiazzarla con un bello smile sorridente. Per fare questo, andremo a modificare un file del programma, col seguente comando:

sudo sed -si "s/\/usr.*svg/\/usr\/share\/icons\/Humanity\/emblems\/48\/emblem-cool.svg/g" /usr/share/ibus/component/uniemoji.xml

A questo punto dovete terminare la sessione, e poi entrare di nuovo col vostro account utente. Cliccate sull’icona della taskbar dove normalmente scegliete la lingua della tastiera e andate su Impostazioni inserimento testo. Quest’ultima è la voce che si trova su Ubuntu, ma immagino che altre distribuzioni abbiano nomi simili, eventualmente guardate nelle preferenze di sistema. 😉

Premete il tastino + per aggiungere un nuovo metodo, e cercate UniEmoji. Cliccate su Aggiungi e verrà inserito nella lista. Vi consiglio di metterlo appena sotto al metodo che usate di solito, poi spiego perché.

Aggiunta di UniEmoji come secondo metodo di input
Aggiunta di UniEmoji come secondo metodo di input

A questo punto avete terminato i passi necessari! 😉

Selezione del metodo di input
Selezione del metodo di input

Quando volete inserire una emoji, vi basta cliccare sul menu a tendina e selezionare UniEmoji. Dopidiché, iniziate a digitare una parola chiave che descrive l’emoji (in inglese) e il menu suggerirà quelle corrispondenti. Potete trovare le descrizioni di tutte le faccine su Emojipedia.

Poche righe sopra vi ho consigliato di inserire UniEmoji al secondo posto. Il motivo è presto detto: IBus permette di cambiare metodo di inserimento tramite la combinazione Windows + Spazio, passando alla successiva. Shift + Windows + Spazio invece permette di tornare alla precedente.

Ciò significa che quando volete inserire una emoji, potete digitare la prima combinazione ed attivare subito UniEmoji. Alla fine, potete premere la seconda combinazione e tornare alla lingua che usate di solito. 🙂