My Own Memory Hole

Partage Samba / CIFS depuis NAS D-Link DNS-320

Un déménagement m'ayant amené à réinstaller l'ensemble de mon « système multimédia » constitué d'un NAS et d'un Raspberry Pi, je me suis trouvé une nouvelle fois à avoir le plus grand mal à mettre en place le partage des partitions de mon NAS vers l'ensemble de mes terminaux... et impossible de réutiliser de manière satisfaisante le montage NFS et ses options que j'utilisais jusqu'alors.
Je me suis rabattu alors vers une solution de partage unique via le protocole CIFS proposé par défaut par le NAS.

On commence par créer un nouvel utilisateur dans la section Management > Account Management à qui l'on donne les droits de lecture et d'écriture si les partages ont déjà été défini dans Management > Network Shares ; sinon, les permissions seront définies lors de la création des partages.

Ensuite, on crée, sur les clients un fichier ~/.nascredentials qui va contenir les identifiants de connexion de cet utilisateur :

username=USER
password=PASSWORD

On fait en sorte que seul le propriétaire de ce fichier puisse le lire et l'écrire :

$ chmod 600 ~/.nascredentials

On crée des points de montage pour les partages du NAS :

$ mkdir ~/NAS ~/NAS_DOWN

Enfin, on édite le fichier /etc/fstab (en spécifiant bien l'emplacement du fichier .nascredentials) :

//192.168.1.42/Contents /home/bbrice/NAS        cifs    _netdev,vers=1.0,credentials=/home/bbrice/.nascredentials,rw,iocharset=utf8 0 0
//192.168.1.42/torrent /home/bbrice/NAS_DOWN    cifs    _netdev,vers=1.0,credentials=/home/bbrice/.nascredentials,rw,iocharset=utf8 0 0

Puis on monte nos partitions :

$ sudo mount -a

Par contre, il est sans doute nécessaire d'installer le paquet cifs-utils :

$ sudo apt install cifs-utils

Transmission sur NAS D-Link DNS-320 avec fun_plug

Si je gère toujours mes téléchargements de torrents sur mon NAS « augmenté » de fun_plug, je n'utilise plus rTorrent en daemon mais Transmission. Plusieurs raisons à ce changement : la plus importantes étant la non disponibilité de certaines dépendances du fait de la disparition de plusieurs dépôts pour fun_plug ; et puis, rTorrent présentait certaines limitations, notamment l'absence de file d'attente...

Installation

L'installation de Transmission ne peut se faire par le biais de slacker, l'outil de gestion de paquets de fun_plug, encore une fois pour des questions de dépendances non satisfaites...
Il faut commencer par installer Optware, qui fournit de nombreux logiciels :

$ wget http://wolf-u.li/u/233 -O /ffp/start/optware.sh
$ chmod a+x /ffp/start/optware.sh
$ /ffp/start/optware.sh start

L'on dispose alors de la commande ipkg 

# ipkg update
# ipkg list
# ipkg list transmission
# ipkg install transmission

Préparation

On commence par créer les répertoires de téléchargement et de configuration&nbp;:

# mkdir -p /mnt/HD/HD_b2/torrent/{.transmission,complete,incomplete}

Ensuite, pour bénéficier du script de lancement de transmission-daemon, nous installons puis désinstallons dans la foulée via slacker le paquet transmission :

# slacker -a transmission
# slacker -r transmission

Puis on édite le fichier /ffp/start/transmission.sh en modifiant les chemins des exécutables (qui se trouvent dans /opt/bin) et des fichiers de configuration de Transmission :

# nano /ffp/start/transmission.sh 

Voici mon script :

#!/ffp/bin/sh

# PROVIDE: Transmission

. /ffp/etc/ffp.subr

TRANSMISSION_HOME=/mnt/HD/HD_b2/torrent/.transmission

name="transmission-daemon"
command="/opt/bin/$name"
start_cmd="transmission_start"
stop_cmd="transmission_stop"
status_cmd="transmission_status"
user=root
su_cmd="/ffp/bin/su"

transmission_start()
{
   if [ ! -d ${TRANSMISSION_HOME} ]; then
      $su_cmd $user -c "mkdir ${TRANSMISSION_HOME}"
   fi
   echo "Starting $name"
      $su_cmd $user -c "$command -g ${TRANSMISSION_HOME} -e ${TRANSMISSION_HOME}/$name.log"
}

transmission_stop()
{
   echo "Stopping $name"
      /ffp/bin/killall -SIGINT $name
}

transmission_status()
{
   _pids=$(pidof $name)
   if test -n "$_pids"; then
      echo "$name is running, pid:"
      pidof $name
   else
      echo "$name not running"
   fi
}

run_rc_command "$1"

On le rend exécutable :

# chmod a+x /ffp/start/transmission.sh

Premier lancement

Afin de générer le fichier de configuration, il convient de lancer une première fois transmission-daemon avec les arguments suivants :

  • -g : le chemin vers le répertoire de configuration et autres fichiers générés par Transmission ;
  • -w : le répertoire où seront stockés les fichiers téléchargés ;
  • -T : je n'ai pas besoin d'authentification puisque je me limite à mon réseau local (option -a).
# /opt/bin/transmission-daemon -f -g /mnt/HD/HD_b2/torrent/.transmission -w /mnt/HD/HD_b2/torrent/complete -T -a 127.0.0.1,192.168.1.*

On peut interrompre le daemon (Ctrl+C) puis éditer le fichier de configuration qui a été créé :

# nano /mnt/HD/HD_b2/torrent/.transmission/settings.json 

Ensuite, on peut lancer Transmission simplement avec :

# /ffp/start/transmission.sh

Références :

Window tilling / Split screen sous Openbox-LXDE

Il est particulièrement simple sous LXDE de configurer des raccourcis clavier permettant de redimensionner et de positionner les fenêtres, permettant ainsi d'afficher simultanément plusieurs applications.

Pour cela, il suffit d'éditer le fichier ~/.config/openbox/lxde-rc.xml et d'ajouter dans la section <keyboard> ce qui suit :

    <keybind key="C-W-Up">        # FullScreen
      <action name="Maximize"/>
    </keybind>
    <keybind key="C-W-Down">        # MiddleScreen
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo"><x>center</x><y>center</y><width>50%</width><height>50%</height></action>
    </keybind>

    <keybind key="C-W-Left">        # HalfLeftScreen
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo"><x>0</x><y>0</y><height>100%</height><width>50%</width></action>
    </keybind>
    <keybind key="C-W-Right">        # HalfRightScreen
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo"><x>-0</x><y>0</y><height>100%</height><width>50%</width></action>
    </keybind>

    <keybind key="C-W-1">        # UpperQuarterLeft
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo"><x>0</x><y>0</y><height>50%</height><width>50%</width></action>
    </keybind>

    <keybind key="C-W-2">        # LowerQuarterLeft
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo"><x>0</x><y>-0</y><height>50%</height><width>50%</width></action>
    </keybind>

    <keybind key="C-W-3">        # LowerQuarterRight
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo"><x>-0</x><y>-0</y><height>50%</height><width>50%</width></action>
    </keybind>

    <keybind key="C-W-4">        # UpperQuarterRight
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo"><x>-0</x><y>0</y><height>50%</height><width>50%</width></action>
    </keybind>

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.

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