Articles plus anciens

Mon serveur sweetBox est installé avec une version minimale de Gutsy Gibbon (Ubuntu 7.10), or le support de cette dernière est fini depuis le 18 avril.

Il est donc temps de penser à l’upgrade.

 

Ayant pas mal bidouillé sur cette machine je ne veux pas faire d’upgrade via apt, mais je préfère faire une ré-installation classique de zéro.

Ensuite se pose le choix de la version à installer, 2 solutions :

  • 8.04 – Hardy Heron : Version LTS (Long Term Support) offre un support jusqu’en Avril 2001
  • 9.04 – Jaunty Jackalope : Version classique offre un suppot jusqu’en Octobre 2010

Donc 6 mois de différence pour le support entre ces 2 versions.

Comme l’indique le titre j’ai choisi la nouveauté de Jaunty, la principale raison provient du temps de boot amélioré, or sur un médiacenter il est toujours frustrant d’attendre que la machine démarre quand on veut regarder un DVD ou écouter de la musique…

 

Par sécurité j’ai effectué toutes les installations d’abord dans une machine virtuelle (Virtual Box) afin de valider tous les manipulations et m’affranchir au maximum de mauvaises surprises.

Au moment où j’écris cet article je n’ai toujours pas ré-installé sweetBox.

 

La réinstallation de sweetBox nécessite une installation minimale d’Ubuntu, pas de Gnome, pas d’Open-Office, etc.

On partira donc du CD alternate de Jaunty qui permet d’installer un système en ligne de commande et d’ajouter ensuite que les paquets nécessaires.

 

Continuer la lecture

Sur sweetBox, j’ai l’utilisateur créé lors de l’installation correspondant à l’utilisateur physique (c’est à dire moi).

Puis  j’ai essayé de créer des utilisateurs « virtuels » servant à lancer des « services »  au sens non informatique du terme (service maintenance, service mediacenter).

Le tout pour essayer de cloisonner les droits (ce que je n’ai pas encore pris le temps de faire).


Bref intialement j’avais créé un utilisateur « down » correspondant aux taches de téléchargements, puis au fur et à mesure j’ai ajouté d’autres taches à cet utilisateur et donc son nom ne représentait plus ce qu’il faisait.


J’ai donc dû le renommer, voici les étapes.

Continuer la lecture

Edit 26/07/2010 : Le logiciel subdl n’étant plus maintenu et le site n’existant plus, les informations ci-dessous ne sont plus correctes, si quelqu’un est intéressé je peux héberger le script




Toujours dans la série de l’automatisation des taches, voici comment faire pour récupérer de façon automatique les sous-titres des différents épisode d’une série.

Le tout évidemment sans aucune intervention ni interface graphique.


Pour cela j’ai utilisé un script python Subdl.


Ce script prend en paramètre le nom du fichier dont on veut trouver les sous-titre, calcul une clé hash identifiant ce fichier et fait une requête sur le site  openSubtitle.

Si plusieurs fichiers de sous-titres sont trouvé pour la langue voulu, subdl télécharge celui qui à la meilleur note.

Subdl renomme aussi le fichier de sous-titres pour lui donner le même nom que le fichier vidéo correspondant.


Installation

Vu qu’il s’agit d’un script l’installation est super simple, il suffit de télécharger l’archive contenant le script :

wget http://www.cubewano.org/subdl/downloads/1.0.2/subdl-1.0.2.tar.gz


Comme on peut le constater cette version date de plus d’un an mais elle fonctionne parfaitement.


On extrait ensuite le script :

tar -xvf subdl-1.0.2.tar.gz


Et voila.


Utilisation

Subdl à besoin de 2 paramètres :

  • la langue pour laquelle on cherche des sous-titres
  • le fichier dont on cherche les sous-titres


On ajoutera un paramètre supplémentaire indiquant le comportement à adopter si le fichier de sous-titres existe déjà (on passe)


Ce qui donne :

python subdl --lang=fre --existing=bypass mon_fichier.avi


Bonus :

Voici une ligne de commande qui lance la recherche des sous-titres sur tous les fichier avi d’un répertoire :

ls *.avi | xargs -t -I {} python ~/subdl/subdl --lang=fre --existing=bypass {} 



Alternative

Il existe un autre outil ligne de commande pour télécharger de façon automatique des sous-titres en utilisant les service de openSubtitle.org, il s’agit de Subdownloader.


Ce dernier est plus complet puisqu’il propose une interface graphique en plus de la ligne de commande, il est disponible sous forme de paquet Debian installant ainsi toutes les dépendances nécessaires.

(Rque : il est aussi disponible sous Windows et Mac !!)


Bref il est plus complet mais aussi beaucoup plus lourd (gros).

Comme je l’ai décrit ici avec Podracer et un petit script maison, il est aisé de mettre en place un système automatique de téléchargement de vos émission de radio ou internet préférées et de les traiter afin que les fichiers mp3 récupéré soient le plus aisément possible exploitable.


Dans le but d’en faire toujours moins, j’ai cherché à automatiser le transfert des fichiers mp3 téléchargés vers le lecteur mp3.


En pré-requis il faut évidemment que le lecteur mp3 soit reconnu comme un disque USB (adieu iPod et autre systèmes à base de MTP). Dans mon cas pas de problème puisqu’il s’agit de transférer les fichiers mp3 ver une carte SD (mon « lecteur »)


Après quelques recherches je me suis orienté vers l’écriture d’une règle udev pour réaliser ce transfert automatique…



Tout d’abord Udev qu’est-ce donc ?

Je vous conseil la lecture de ce long article dont je vais m’inspirer pour rédiger ce post.

Donc en gros udev est le système servant à décrire et monter le périphériques sous linux.


Dans notre exemple udev va nous servir à  :

  1. identifier de façon unique le périphérique USB branché (dans mon cas un lecteur de carte SD 3 en 1 de Kingston)
  2. lancer un scripts qui va se charger de copier les fichiers mp3.


Identification du périphérique USB – écriture de la règle Udev


Il s’agit de la partie la plus « ardue » de la configuration et la partie pour laquelle chacun devra se débrouiller, il s’agit de trouver via udevinfo les informations qui permettront d’identifier de façon unique le périphérique USB dont le branchement déclenchera le transfert des fichiers.

Voici la trame des opérations à réaliser qui vous permettront d’y parvenir :


1 – Brancher le périphérique USB à identifier


2- Trouver le fichier /dev/sdxx correspondant à votre périphérique, pour cela analyser les messages affichés par dmesg lors du branchement du périphérique.

On aura alors quelque chose du genre :

SCSI device sda: 1003600 512-byte hdwr sectors (514 MB)

Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0

usb-storage: device scan complete

Le périphérique est donc accessible sur /dev/sda (ce qui est le cas dans la majorité des cas)


3- Analyser les données udevinfo. Cela se fait en exécutant :

udevinfo -a -p $(udevinfo -q path -n /dev/sda)

Cette commande sort tout un tas de données qu’il faut analyser pour trouver les informations pertinentes.

Vous trouverez ci-dessous le résultat de la commande udevinfo pour sda et sda1 pour mon lecteur de carte Kingston 3 en 1

udevinfo-sda-flashreader-kingston

udevinfo-sda1-flashreader-kingston

Dans mon cas j’ai identifié le périphérique par sa taille, ce qui est limite mais cela fonctionne.

Pour info pour le même lecteur de carte mais avec 2 cartes SD 2Go de marques différentes on a une taille différente dans le résultat du udevinfo (3870587 contre  3841911)


4 – Ecrire la règle udev, on créra le fichier 10-local.rules

sudo vim /etc/udev/rules.d/10-local.rules

Puis on ajoutera :

KERNEL=="sda1", SUBSYSTEM=="block", ATTR{size}=="3841911",  RUN+="/root/transfert.sh"

Toute la première partie de la régle est dépendente de votre périphérique et de l’attribut que vous avez choisi pour l’identifier.

La dernière partie (RUN) est commune, on indique à udev que lorsqu’il détecte le périphérique sda1 ayant une taille de 3841911, il doit exécuter le script transfert.sh dans root.


Script de transfert des fichiers mp3 vers les lecteur


Créer le fichier script transfert.sh

sudo vim /root/transfert.sh


Et y copier ceci :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/sh
 
# paramétrage
# point de montage du périphérique USB
MOUNTPOINT="/mnt/transfertPodcast"
# fichier de log
LOGFILE="/root/transfertPodcast.log"
 
echo "---------- debut ----------" >> $LOGFILE
date >> $LOGFILE
 
# nom du device
echo "devname =" $DEVNAME >> $LOGFILE
 
# si le point de montage n'existe pas on le crée
if (!(test -d $MOUNTPOINT)) then
    echo "creation repertoire" $MOUNTPOINT >> $LOGFILE
    mkdir $MOUNTPOINT;
fi
 
# montage du périphérique USB
mount $DEVNAME $MOUNTPOINT
if [ $? != 0 ]; then
    echo "erreur de montage" $MOUNTPOINT >> $LOGFILE
    exit 1
fi
 
# sauvegarde des anciens podcast
mv $MOUNTPOINT/Podcast/*.mp3 $MOUNTPOINT/Podcast/_save/
 
# déplacement des nouveau podcast vers le périphérique USB
mv /home/mon_user/downloads/podcast/*.mp3 $MOUNTPOINT/Podcast/ >> $LOGFILE
 
# démontage du périphérique USB
umount $MOUNTPOINT
if [ $? != 0 ]; then
    echo "erreur de démontage" >> $LOGFILE
    /usr/bin/beep -f 1200 -n -f 1000 -n -f 1200
    exit 1
fi
 
# c'est fini : musique maestro
/usr/bin/beep -f 1000 -r 2 -n -r 5 -l 10 --new
 
echo "-------- end - ok --------" >> $LOGFILE
echo "" >> $LOGFILE
exit 0

Ce script monte le périphérique USB identifié par la variable d’environnement DEVNAME dans le répertoire paramétré au début du script (MOUNTPOINT).


Les fichiers mp3 présents dans le répertoire Podcast du périphérique USB sont sauvegardés (déplacés) dans un sous répertoire _save

En effet on part de l’hypothèse que l’on garde pas les podcast une fois écoutés et que l’on ne branche notre lecteur mp3 en vue de le « recharger » en podcast que lorsque ceux présents dessus ont tous été écoutés.

On réalise donc une sauvegarde au cas où ce ne serait pas le cas mais c’est optionnel.


Le podcasts présents dans le sous-répertoire downloads/podcast du user réalisant le download sont ensuite transférés (déplacés) sur le périphérique monté.

Il faut bien sûr mettre en cohérence le chemin où l’on va chercher les podcasts avec celui paramétré dans votre script de téléchargement des podcasts.


Le prériphérique est alors démonté et une petite musique à base de beep (sudo aptitude install beep) est jouée


Le tout étant loggué dans fichier paramétré via LOGFILE



Ce script est très largement améliorable mais je ne pas pris le temps de le faire, on pourra citer comme axe d’amélioration :

  • Purger le répertoire _save en se basant sur la date de copie des fichier pour ne garder que la date d-1 (est-ce faisable ?)
  • Déplacement des logs
  • Purge des logs

Un peu de teasing et aussi un pense-bête pour moi.

Voici la liste des points que je souhaite aborder sur ce blog.

 

  • Transfert automatique de fichier sur un support USB (podcast vers un lecteur mp3) : fait
  • Subdownload – Téléchargement automatique des sous-titres : fait
  • Mes extensions Firefox
  • L’organisation de mes disques dur (Windows) – arborescence de répertoires
  • Unison – Synchronisation de disques dur
  • Rsync, Rsnapshot – Sauvegardes
  • Renommage d’un utilisateur linux : fait
  • NFS – partage de fichier linux
  • Freevo – mise en oeuvre d’un médiacenter : fait
  • Ubuntu – installation minimale : fait
  • Ubuntu minimal : outils utilisés
  • Paramétrage Freevo
  • Test de XMBC
  • Sauvegarde automatique des documents Googles Docs
  • Workflow photos numériques (transfert sur disque dur, tag IPTC, sauvegarde)

 

Edit 07/05/2009 : ajout des liens vers les articles « faits » et ajout de nouveaux points