Vediamo come convertire un video flv di Youtube in mp3 usando ffmpeg.
Per prima cosa dobbiamo ottenere l’URL esatto del video per poter scaricare l’flv.
Per far cio` ci serve un token che cambia nel tempo ma che possiamo ottenere dal file video_info; scarichiamolo:
http://www.youtube.com/get_video_info?video_id=VugK063j0Zo
Questo file contiene una serie di valori in stile parametri http. A noi serve quello con chiave token: nell’esempio token=vjVQa1PpcFNk6LFs5OQXj-teHu8POPhx7isbKGtGbOc%3D.
A questo punto abbiamo tutto il necessario per generare l’url per il download diretto del video flv:
http://www.youtube.com/get_video?video_id=VIDEOID&t=TOKEN
nell’esempio:
http://www.youtube.com/get_video?video_id=VugK063j0Zo&t=vjVQa1PpcFNk6LFs5OQXj-teHu8POPhx7isbKGtGbOc%3D
Bene, ora possiamo con ffmpeg ottenere direttamente l’audio del video in formato mp3 con il seguente comando:
ffmpeg -i 'URL DIRETTO DEL VIDEO' -acodec libmp3lame -ac 2 -ab 128kb -vn -y file_output.mp3
Nell’esempio
ffmpeg -i 'http://www.youtube.com/get_video?video_id=VugK063j0Zo&t=vjVQa1PpcFMpsZHHpcVB1lB6w_EvoJYGbZTNi4KQ2g4%3D' -acodec libmp3lame -ac 2 -ab 128kb -vn -y magically_magical.mp3
It’s magical…
Vediamo come creare una repository apt. Per far cio` usiamo l’utiliti reprepro:
sudo apt-get install reprepro
ora creiamo una directory di lavoro e il file di configurazione:
mkdir -p repository/conf
nano repository/conf/distributions
Il file distributions sara` una cosa del genere:
Origin: Company name
Label: Pioz's debian repository
Suite: stable
Codename: debian
SignWith: default
Architectures: i386 amd64 source
Components: main non-free contrib
Description: This repository include my programs
Bene a questo punto generiamo la repo con il seguente comando da dentro la cartella repository appena creata:
reprepro includedeb debian pacchetto1.deb pacchetto2.deb ...
Se avete una chiave privata verra` usata per garantire la repository. Bene adesso mettete online la cartella repository e siamo OK.
Per seguiamo i seguenti passi:
-
Aggiungiamo la chiave pubblica ad apt
echo key.pub | sudo apt-key add -
-
Aggiungiamo il repo al file
/etc/apt/sources.listdeb http://www.pioz.it/repository debian main
-
Aggiorniamo
sudo apt-get update
-
Installiamo qualche programma
sudo apt-get install pacchetto1.deb
gimdb e` un programma che ti permette di esplorare l’Internet Movie DataBase di Amazon. E` scritto in Ruby e usa la libreria grafica GTK. gimdb scarica le informazioni dei film che richiedi e le salva in un database sqlite3 locale.
Puoi creare utenti e salvare per ognuno di loro i film da vedere, i film visti e i film preferiti. gimdb puo` anche lavorare in modalita` offline cercando i film solamente nel database locale.

gimdb potrebbe essere utile se non sai che film guardare e non trovi piu` la lista dei film da guardare che avevi stilato tanto tempo fa…
Dipendenze
- ruby
- activerecord
- sqlite3-ruby
- nokogiri
- libgnome2 (sudo apt-get install libgnome2-ruby)
- libglade2 (sudo apt-get install libglade2-ruby)
Installazione
sudo apt-get install libgnome2-ruby
sudo apt-get install libglade2-ruby
sudo gem install gimdb
Ad ogni modo informazioni piu` dettagliate disponibili nella homepage del progetto: http://github.com/pioz/gimdb
Con questo trick riuscirete a scrillare le pagine usando il trackpad del vostro Thinkpad tenendo premuto il tasto centrale.
Create il nuovo file /usr/lib/X11/xorg.conf.d/20-thinkpad.conf e incollateci il seguente:
Section "InputClass"
Identifier "Trackpoint Wheel Emulation"
MatchProduct "TrackPoint"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "2"
Option "Emulate3Buttons" "false"
Option "XAxisMapping" "6 7"
Option "YAxisMapping" "4 5"
EndSection
Ora riavviate X.
Ahime` come si sa` le Gtk::Label non supportano il wrapping dinamico su resize.
Vabbe`, estendiamo Gtk::Label e iimplementiamo il wrap dinamico.
Ecco la classe in Ruby:
require 'gtk2'
class WrapLabel < Gtk::Label
def initialize(s = '')
super()
self.wrap = true
self.wrap_mode = Pango::WRAP_WORD_CHAR
self.set_alignment(0.0, 0.0)
self.text = s
self.signal_connect_after('size-allocate') do |w, a|
lw_old, lh_old = self.layout.size
if lw_old / Pango::SCALE != a.width
self.layout.set_width(a.width * Pango::SCALE)
lw, lh = self.layout.size
self.set_size_request(-1, lh / Pango::SCALE) if lh_old != lh
end
end
end
end
end