Hello,
je n'ai pas trouvé grand chose sur Bashpodder sur les forums français, voici donc un petit tuto / retour d'expérience...
Contexte : j'ai essayé pas mal de solutions pour gérer le téléchargement quotidien de mes podcasts préférés (essentiellement des émissions de Radio France et d'Europe 1). Mais qu'il s'agisse de Listen, Exaile, Rhythmbox ou encore iPodder (beurk celui-là !), j'ai toujours eu des petits problèmes. Téléchargements vraiment trop lents, infos qui ne semblent pas vouloir se raffraîchir, etc.
Et puis j'ai trouvé
Bashpodder, un logiciel très simple puisqu'il s'agit en fait d'un script qu'on lance en ligne de commande. Il va récupérer les podcasts dont les adresses sont contenues dans un fichier
bp.conf placé dans le même dossier que le script lui-même. Ensuite il suffit d'éditer son crontab (un fichier à remplir, qui spécifie des tâches récurrentes à exécuter automatiquement), pour que Bashpodder se lance à heure fixe tous les jours (mais ça peut aussi être tous les lundis seulement par exemple, Crontab est très souple là-dessus).
On trouve pas mal de versions modifiées du script sur la page
User Contributed du site de l'auteur de Bashpodder, scripts qui proposent diverses modifications.
La version de Bashpodder que je vous propose est une simple "mixture" de plusieurs de ces scripts, avec l'idée de garder tout ça très simple tout en étant un peu plus explicite que le script d'origine.
Personnellement, j'ai paramétré Bashpodder pour qu'il se lance tous les matins de la semaine (du lundi au vendredi donc), à partir de 10h10. Les podcasts téléchargés sont placés dans un sous-dossier à la date du jour, accompagnés d'un fichier
podcasts-2006-11-16.m3u par exemple, ce qui permet de les avoir tous d'un clic dans votre lecteur préféré.
L'installation...
C'est vraiment très simple, puisqu'il n'y a pas à proprement parler d'installation, seulement le script à créer dans un dossier prévu à cet effet. J'ai donc créé un dossier Bashpodder dans /home/greg :
mkdir bashpodder
Ensuite, créez un fichier titré
bashpodder.shell dans ce dossier, à éditer par exemple avec Gedit :
gedit bashpodder.shell
Dans ce nouveau fichier, copiez/collez le code suivant (il s'agit donc du script modifié par mes soins, en mélangeant plusieurs scripts existants - je précise que pour ma part je suis incapable d'écrire une seule ligne de code !) :
#!/bin/bash
# By Linc 10/1/2004
# Find the latest script at http://linc.homeunix.org:8080/scripts/bashpodder
# If you use this and have made improvements or have comments
# drop me an email at linc dot fessenden at gmail dot com
# I'd appreciate it!
#
# This revision by Brian Hefferan 2004/02/06, adding configuration options.
# No warranty. It seems to work for me, I hope it works for you.
# Questions /corrections on the additions by Brian Hefferan can be sent to
# brian at heftone dot com
#default values can be set here. Command-line flags override theses.
verbose=
wget_quiet='-q' #default is -q
wget_continue=
catchup_all=
first_only=
unix2dos=
usetorrents=
sync_disks=
fetchlist='bp.conf'
function usage
{
echo "
Usage: $0 [OPTIONS]
Options are:
-v, --verbose display verbose messages. Also enables wget's continue
option.
--catchup_all write all urls to the log file without downloading the
actual podcasts. This is useful if you want to subscribe
to some podcasts but don't want to download all the back
issues. You can edit the podcast.log file afterwards to
delete any url you still wish to download next time
bashpodder is run.
--first_only grab only the first new enclosed file found in each feed.
The --catchup_all flag won't work with this option. If
you want to download the first file and also permanently
ignore the other files, run bashpodder with this option,
and then run it again with --catchup_all.
-bt --bittorrent launch bittorrent for any .torrent files downloaded.
Bittorrent must be installed for this to work. The
the script and bittorrent process will continue running
in the foreground indefinitely. You can use ctr-c to
kill it when you want to stop participating in the
torrent.
--sync_disks run the "sync" command twice when finished. This helps
makes sure all data is written to disk. Recommended if
data is being written directly to a portable player or
other removable media.
-u, --url_list ignore bp.conf, instead use url(s) provided on the
command line. The urls should point to rss feeds.
If used, this needs to be the last option on the
command line. This can be used to quickly download just
a favorite podcast, or to take a few new podcasts for a
trial spin.
-h, --help display this help message
"
}
if [ -n "$verbose" ]; then wget_quiet='';wget_continue='-c';fi
if test -f urls.temp;then rm urls.temp;fi
# Make script crontab friendly:
cd $(dirname $0)
while [ "$1" != "" ];do
case $1 in
-v|--verbose ) verbose=1
wget_continue='-c'
wget_quiet=''
;;
-u|--url_list ) shift
while [ "$1" != "" ];do
echo "$1" >> urls.temp
shift
done
if test ! -f urls.temp
then
echo "Error: -u or --url_list option specified, but no urls given on command line. quitting."
exit 1;
fi
fetchlist='urls.temp'
;;
--catchup_all ) catchup_all=1
;;
--first_only ) first_only=1
;;
--bittorrent ) usetorrents=1
;;
--sync_disks ) sync_disks=1
;;
-h|--help ) usage
exit
;;
esac
shift
done
# datadir is the directory you want podcasts saved to:
datadir=$(date +%Y-%m-%d)
# Check for and create datadir if necessary:
if test ! -d $datadir
then
mkdir $datadir
fi
if test ! -f bp.conf && test ! -f urls.temp;
then
echo "Sorry no bp.conf found, and no urls in command line. Run $0 -h for usage."
exit
fi
# Read the bp.conf file and wget any url not already in the podcast.log file:
while read podcast
do
# Skip lines beginning with '#' as comment lines - from Rick Slater
if echo $podcast | grep '^#' > /dev/null
then
continue
fi
seenfirst=
if [ -n "$verbose" ]; then echo "fetching rss $podcast...";fi;
for url in $(wget -q "$podcast" -O - | tr '\r' '\n' | tr \' \" | \
sed -n 's/.*url *= *"\([^"]*\)".*/\1/p' )
do
if [ -n "$first_only" ] && [ -n "$seenfirst" ]; then break;fi
echo $url >> temp.log
if [ -n "$catchup_all" ];
then
if [ -n "$verbose" ]; then echo " catching up $url...";fi
elif ! grep "$url" podcast.log > /dev/null ;
then
if [ -n "$verbose" ]; then echo " downloading $url...";fi
wget $wget_continue $wget_quiet -P $datadir "$url"
fi
seenfirst=1
done
done < $fetchlist
if test ! -f temp.log && [ -n "$verbose" ];then echo "nothing to download.";fi
if test -f urls.temp; then rm urls.temp;fi
# Move dynamically created log file to permanent log file:
cat podcast.log >> temp.log
sort temp.log | uniq > podcast.log
rm temp.log
# Use bittorrent to download any files pointed from bittorrent files:
if [ "$usetorrents" ]
then
if ls $datadir/*.torrent 2> /dev/null
then
btlaunchmany.py $datadir
fi
fi
# Create an m3u playlist:
ls -1rc $datadir | grep -v m3u > $datadir/podcast${datadir}.m3u
if [ -n "$unix2dos" ];then unix2dos $datadir/podcast${datadir}.m3u;fi;
if [ -n "$sync_disks" ]
then
if [ -n "$verbose" ]; then echo "running sync..";fi;
sync
if [ -n "$verbose" ]; then echo "running sync again..";fi;
sync
fi
if [ -n "$verbose" ]; then echo "done.";fi;
Sauvegardez le fichier. Ensuite, avec Nautilus en mode graphique, clic-droit sur ce fichier, et dans ses propriétés, onglet "Permissions", cochez l'option "Autoriser l'exécution du ichier comme exécutable".
Passons maintenant au fichier
bp.conf... Je vous file le mien, que j'ai rempli avec les adresses des podcasts de Radio France que j'écoute régulièrement. Libre à vous d'en rajouter autant que vous voulez. Pour qu'un podcast ne soit pas pris en compte, il suffit de rajouter un commentaire (caractère #) devant son adresse.
gedit bp.conf
Copiez/collez ce contenu dans ce nouveau fichier bp.conf...
# France Inter - J'ai mes sources - Colombe Schneck - 30 mn
http://radiofrance-podcast.net/podcast/rss_10243.xml
#
# France Inter - La bande à Bonnaud - 1h19
http://radiofrance-podcast.net/podcast/rss_10219.xml
#
# France Inter - 2000 ANS D'HISTOIRE - 28 mn
http://radiofrance-podcast.net/podcast/rss_14864.xml
#
# France Culture - CONCORDANCE DES TEMPS - 58 mn
http://radiofrance-podcast.net/podcast/rss_16278.xml
#
# France Culture - Continent sciences - 59 mn
http://radiofrance-podcast.net/podcast/rss_16256.xml
#
# France Culture - La nelle fabrique de l'histoire - 54 mn
http://radiofrance-podcast.net/podcast/rss_10076.xml
#
# France Culture - Science et Conscience - Philippe Petit - 59 mn
http://radiofrance-podcast.net/podcast/rss_10200.xml
#
# France Culture - Science publique - Michel Alberganti - 58 mn
http://radiofrance-podcast.net/podcast/rss_10192.xml
#
# France Culture - Les chemins de la connaissance - 29 mn
http://radiofrance-podcast.net/podcast/rss_10194.xml
#
# France Culture - Mauvais Genres -François Angelier - 1h
http://radiofrance-podcast.net/podcast/rss_10070.xml
#
# France Inter - LE MASQUE ET LA PLUME - 49 mn
http://radiofrance-podcast.net/podcast/rss_14007.xml
#
# France Culture - Les vivants et les Dieux - Michel Cazenave - 57 mn
http://radiofrance-podcast.net/podcast/rss_10190.xml
C'est presque terminé ! Il faut enfin créer un fichier qui va s'occuper d'organiser les tags pour chaque podcast récupéré. Ce fichier va s'appeler
parse_enclosure.xsl, et se trouver lui aussi, bien sûr, dans le même dossier. Comme il s'agit du même fichier que l'original, vous pouvez simplement le télécharger
à cette adresse (clic-droit sur le lien puis "enregistrer la cible du lien sous...").
Vous devez donc vous retrouver avec un dossier bashpodder comprenant ces 3 fichiers :
bashpodder.shell,
bp.conf et
parse_enclosure.xsl
Voilà. Votre bashpodder est prêt à l'emploi !
Pour l'utiliser, ouvrez un terminal dans le dossier bashpodder, et lancez la commande suivante :
$ ./bashpodder.shell -v
La commande -v permet d'avoir un retour, dans le terminal, de l'activité de bashpodder. C'est une des améliorations que j'ai honteusement reprise d'un des scripts présents sur le site de l'auteur. Tapez la commande
./bashpodder -h dans la console pour avoir un aperçu des autres paramètres utilisables.
Une autre amélioration : si vous êtes obligé d'arrêter un chargement en cours, et que vous relancez Bashpodder plus tard, il devrait normalement reprendre à l'endroit où il avait été interrompu, au lieu de tout retélécharger à nouveau. Enfin une autre amélioration est la possibilité de placer des lignes de commentaires dans le fichier
bp.conf, plus pratique pour gérer ses abonnements !
Il existe une interface graphique pour gérer bashpodder à la souris, dont on trouve le descriptif
sur cette page, mais personnellement je n'ai pas tenté l'installation car je ne trouve pas que ce soit très utile.
Pour l'utilisation du fichier cron afin d'automatiser le lancement de bashpodder, il faut se faire à la syntaxe particulière de ce fichier, dont vous trouverez un tuto très clair, mais en anglais,
sur cette page. Pour faire simple, vous pouvez prendre exemple sur mon propre fichier :
Pour éditer votre propre fichier (qui, à l'origine, devrait être vierge), tapez dans une console :
crontab -e
C'est normalement l'éditeur nano qui s'ouvre, dans la console, et vous présente un fichier vide. (Pour enregistrer la modification du fichier, taper Ctrl+O puis valider, et pour sortir de nano, taper Ctrl+X).
Pour ma part, j'ai réglé le lancement de bashpodder du lundi au vendredi, à 10h10. Voici donc le contenu de mon crontab :
# m h dom mon dow command
10 10 * * 1-5 /home/greg/bashpodder/bashpodder.shell
La ligne est consituée ainsi : 10
(mn) 10
(heures) *
(du 1er au 31) * (de chaque mois) 1-5
(du 1er au 5ème jour, donc ni dimanche ni samedi), soit, en langage humain : "lancer la commande /home/greg/bashpodder/bashpodder tous les jours de la semaine à 10h10mn".
Et voilà... :-)
@+
Greg