My Own Memory Hole
Blog♯console

My Own Tmux Cheat Sheet

Il s'agit ici pour moi de réunir en un lien unique, clairement identifiable — pour moi du moins — un certain nombre de ressources consacrées à Tmux, collant le plus possible à mes besoins et à mon usage de ce « multiplexeur de terminaux ».

Installation et préparation de base

Tmux est disponible dans les dépôts et il suffit pour l'installer d'un :

sudo apt install tmux

Ensuite, on récupère et on place dans notre /home les fichiers de configuration proposé par Gregory Pakosz sur GitHub :

cd /home/$USER
git clone https://github.com/gpakosz/.tmux.git
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local .

Pour profiter pleinement du copier-coller, il convient d'installer le paquet xclip.

Configuration personnelle

...

Raccourcis claviers

Ctrl+b " : partager le panneau horizontalement
Ctrl+b % : partager le panneau verticalement
Ctrl+b c : créer un nouveau panneau
Ctrl+b x : détruire le panneau actif

Ctrl+b m : (dés)activer le mode souris

Téléchargez les torrents de YIFY / YTS en ligne de commande

Grâce à un petit utilitaire en Python, yifi, initialement écrit par vitamin c / akhilmaskerie, il est possible de découvrir les dernières releases proposées par YIFY / YTS, de faire des recherches et surtout de télécharger les fichiers .torrent ou .magnet pour les télécharger ensuite avec votre client Bittorent préféré (dans mon cas désormais, transmission-daemon tourne sur mon NAS en remplacement de rtorrent).

J'ai forké son dépôt afin de faire un peu de ménage, de renommer l'ensemble de yifi en yify et surtout de permettre de retrouver l'identifiant IMDB des films, afin de faciliter la recherche des sous-titres avec le module NodeJS getsubtitle.

Pour l'installer :

sudo pip3 install git+https://github.com/bricebou/yify

Nous avons désormais accès à la commande yify qui renvoie les dernières sorties :

$ yify
16500 Ordinary Love
16499 Jimmy P.
16497 American Masters Jimi Hendrix: Hear My Train a Comin'
16496 Fantastic Return to Oz
16495 Batman: Return of the Caped Crusaders
16494 Cardcaptor Sakura: The Movie
16492 Detroit Driller Killer
16490 Let's Kill Grandpa This Christmas
16489 All the Queen's Horses
16488 Lone Wolf and Cub: Baby Cart to Hades
16487 Depth Charge
16486 Mysterious Island
16484 That's the Way of the World
16483 Timerider: The Adventure of Lyle Swann
16482 Shackleton's Captain
16481 Seven Stages to Achieve Eternal Bliss
16479 Ghost Town
16478 The Winner
16476 DWB: Dating While Black
16475 Touched by Grace

Pour avoir plus d'informations sur un film :

$ yify -id 16497 --details
title : American Masters Jimi Hendrix: Hear My Train a Comin' (2013)
year : 2013
rating : 7.7
runtime : 0 min
lang : English
genres : Biography,Documentary
mpa : 
quality : ['720p']
descr :  Jimi Hendrix was the greatest single rock star of it's era and
      remains so today. No one before or since has come [... snap ...]
imdb_id : tt3181314

Pour télécharger le torrent ou le magnet (lien copié dans un fichier) :

$ yify -id 16497 --torrent
$ yify -id 16497 --magnet

Ensuite, si vous utiliser transmission-daemon accompagné de transmission-remote, il vous suffit de fournir à ce dernier le fichier .torrent :

$ transmission-remote 192.168.1.21:8091 -a 16497.torrent

ou le contenu du fichier .magnet :

$ transmission-remote 192.168.1.21:8091 -a `cat 16497.magnet`

ou :

$ cat 16497.magnet | xargs transmission-remote 192.168.1.21:8091 -a 

Téléchargez vos sous-titres en ligne de commande

addic7ed-cli

Des deux alternatives repérées en 2014 pour télécharger ses sous-titres depuis le site addic7ed.com, celle de Michael Baudino (addic7ed-ruby) n'est plus maintenue.
Celle qui avait notre préférence, addic7ed-cli de Benoit Zugmeyer, disponible sur GitHub, reste quant à elle un tant soit peu maintenue.

Pour installer addic7ed-cli, le plus simple reste de commencer par installer l'utilitaire Pip ainsi que la librairie libxslt-dev :

$ sudo apt install python3-pip libxslt-dev

Une fois cela fait, lancez la commande :

$ sudo pip3 install https://github.com/BenoitZugmeyer/addic7ed-cli/archive/master.zip

Vous pouvez dès lors utilisez cet utilitaire avec la commande addic7ed :

$ addic7ed -l french The.Walking.Dead.S05E01.720p.HDTV.x264-KILLERS.mkv

Pour en savoir plus :

$ addic7ed --help

subdl

Pour télécharger des sous-titres depuis opensubtitles.org, le script proposé par akexakex et disponible sur GitHub est toujours aussi simple, efficace et rapide.

Pour l'installer :

$ sudo pip3 install git+https://github.com/alexanderwink/subdl

La commande subdl est dès lors disponible :

$ subdl -h

Personnellement, je me suis créé un alias Bash avec identification auprès d'opensubtitles.org et l'argument de la langue notamment :

$ nano ~/.bash_alias
alias sos='subdl --username USERNAME --password "PASSWORD" --interactive --lang=fre'

Subliminal

Très complet, mais aussi plus lourd et plus lent – du moins sur mon Raspberry Pi 2... – Subliminal permet de chercher des sous-titres depuis de nombreux sites, dont addic7ed.com et opensubtitles.org.

Pour l'installer :

sudo pip3 install subliminal

Pour télécharger des sous-titres :

subliminal download -l fr The.Big.Bang.Theory.S05E18.HDTV.x264-LOL.mp4

L'on peut aussi spécifier les "providers" auxquels on souhaite limiter la recherche, ainsi que l'encodage du fichier .srt ainsi que son format (avec ou sans suffixe de langue – sans, dans mon cas, sinon omxplayer ne prend pas en compte le sous-titre).
Je me suis donc créé un alias afin de m'en faciliter l'usage :

$ nano ~/.bash_alias
alias psubliminal='subliminal download -p addic7ed -p opensubtitles -l fr -e UTF-8 -s'

getsubtitle

Si comme moi vous êtes un utilisateur régulier de YIFY / YTS – dont l'accès est rendu possible en changeant ses serveurs DNS –, et dont on peut télécharger les fichiers .torrent en ligne de commande, vous pourriez vouloir récupérer les sous-titres depuis le site yifysubtitles.com.

Pour cela, on peut utiliser le module pour NodeJS getsubtitle :

$ sudo npm install -g getsubtitle

L'idéal dans son utilisation est de lui fournir l'identifiant IMDB du film dont on recherche les sous-titres, par exemple :

$ getsubtitle tt0054756

Pour connaître cet identifiant IMDB, il convient d'utiliser le petit utilitaire yify, que j'ai forké justement pour récupérer cette donnée.

Réencoder des fichiers en UTF-8

Régulièrement, les sous-titres (téléchargés en ligne de commande) ne sont pas pris en compte par omxplayer que j'utilise sur mon Raspberry Pi ; la raison ? Ils ne sont tout simplement pas en UTF-8...

J'ai longtemps utilisé la commande recode mais depuis une réinstallation complète d'une Raspbian Buster sur mon Raspberry Pi 2, et d'une modification du montage des disques de mon NAS, je rencontre des problèmes de permissions...

Du coup, grâce à deux contributions d'une même conversation (celles de Pierre Fabier et d'un inconnu), j'ai produit un petit script.

Si ce n'est pas déjà fait, on crée un répertoire bin/ dans notre home :

$ mkdir ~/bin

puis on y crée notre script :

$ nano ~/bin/toutf8

dans lequel on insère :

#!/bin/bash
# Find the current encoding of the file
encoding=$(uchardet "$1")

if [ ! "UTF-8" == "${encoding}" ]
  then
  # Encodings differ, we have to encode
    echo "recoding from ${encoding} to UTF-8 file : $1"
    vim +'set nobomb | set fenc=utf8 | x' "$1"
else
    echo "Already utf8 encoding"
fi

On le rend exécutable :

$ chmod +x ~/bin/toutf8

Pour le faire fonctionner, il convient bien d'avoir installé les paquets uchardet (plus fiable que la commande file -i qui renvoie régulièrement des unknown-8bit impossible à passer en argument de recode ou à traiter par ce script) et bien sûr vim :

$ sudo apt install uchardet vim

Ensuite, où que vous vous trouviez, vous pourrez appeler le script simplement :

$ toutf8 nom_du_fichier

Un petit script pour écouter la radio depuis un terminal

Afin de faciliter l'écoute de certaines radio en streaming, et surtout sans utiliser un navigateur web, de plus en plus gourmand en ressources, j'utilise désormais un petit script bash qui utilise mplayer.

$ mkdir /home/$USER/bin
$ touch /home/$USER/bin/radio
$ chmod +x /home/$USER/bin/radio
$ nano /home/$USER/bin/radio
#!/bin/bash

usage ()
{
    echo '*****************************************************'
    echo '******************** Radio **************************'
    echo '*****************************************************'
    echo '  - beaub     : BeaubFM, radio associative de Limoges'
    echo '  - culture   : France Culture'
    echo '  - info      : France Info'
    echo '  - inter     : France Inter'
    echo '*****************************************************'
}

case $1 in
    beaub )         mplayer http://beaubfm2.ice.infomaniak.ch/beaubfm2-96.mp3
                    ;;
    culture )       mplayer http://direct.franceculture.fr/live/franceculture-midfi.mp3
                    ;;
    info )          mplayer http://direct.franceinfo.fr/live/franceinfo-midfi.mp3
                    ;;
    inter )         mplayer http://direct.franceinter.fr/live/franceinter-midfi.mp3
                    ;;
    -h | --help )   usage
                    exit
                    ;;
    * )             usage
                    exit 1
esac

Ensuite, il suffit de choisir sa radio et de lancer la commande suivante (par exemple) :

$ radio culture

Auto-complétion des stations

On crée le fichier radio-completion.bash :

$ nano /home/$USER/bin/radio-completion.bash

dans lequel on colle les deux lignes suivantes :

#/usr/bin/env bash
complete -W "beaub culture info inter" radio

lancez la commande suivante :

$ source /home/$USER/bin/radio-completion.bash

Et vous devriez avoir les stations qui vous sont proposées lorsque vous pressez la touche Tab à la suite de la commande radio et au fur et à mesure de votre saisie.

mpdscribble : conserver les morceaux scrobblés dans un log

Par défaut, il semblerait que mpdscribble ne conserve pas dans un log les morceaux scrobblés (sauf lorsque l'on n'a pas de connexion au service de scrobbling de LastFM).
Il est évidemment possible de garder la trace localement de tout ce que MPD lit, simplement en modifiant le fichier de configuration /etc/mpdscribble.conf. Cependant, il faut bien garder à l'esprit qu'un tel fichier de log ne fait que grossir, posant d'éventuels problèmes sur le long terme. Ce n'est donc pas forcément une bonne idée...

Mais pour ce faire, il suffit donc de modifier le fichier de configuration /etc/mpdscribble.conf :

$ sudo nano /etc/mpdscribble.conf

et de décommentez les dernières lignes du fichier, pour obtenir ceci :

[file]
file = /var/log/mpdscribble/log

Puis on crée le répertoire /var/log/mpdscribble et on lui donne pour propriétaire l'"utilisateur" mpdscribble :

$ sudo mkdir /var/log/mpdscribble && sudo chown mpdscribble /var/log/mpdscribble

On relance le service mpdscribble :

$ sudo service mpdscribble restart

Pour vérifier que tout fonctionne, on lance la lecture et à la fin de la lecture de la première piste, vous devriez la voir apparaître dans le log que l'on affiche ainsi :

$ tail -f /var/log/mpdscribble/log