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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
.. -*- mode: rst -*-
.. -*- coding: utf-8 -*-
==========================
Lire ses podcasts avec MPD
==========================
:date: 2024-06-19
:tags: MPD
J’aime beaucoup MPD_. Il s’agit d’une application pour gérer sa musique qui est
conçue pour séparer le lecteur audio de l’interface pour le contrôler. Je
l’utilise à la maison sur un petit rasperry pi zero (voir `mon article sur la
configuration de la carte`_), connecté en wifi, et je peux le contrôler via le
téléphone, sans avoir besoin d’allumer le PC du bureau.
.. image:: {static}/images/buildroot/connexion.jpeg
:alt: Le serveur de son
:align: center
MPD est capable de lire un flux réseau, par exemple une web radio, si on lui
donne l’url, ce qui en fait une solution économe, puisqu’elle permet de se
passer d’un navigateur, et peut être démarrée tout simplement n’importe quel
téléphone. Mais je voulais aller plus loin et lire les podcasts également.
Prenons `une émission diffusée sur FIP
<https://www.radiofrance.fr/fip/podcasts/fip-tape>`_ et dont les épisodes sont
disponibles en podcast :
.. image:: {static}/images/mpd/fip-tape.webp
:alt: Fip-tape
En récupérant l’URL du flux RSS, on peut charger les épisodes dans la playlist
avec la ligne de commande suivante :
.. code:: console
mpc load https://radiofrance-podcast.net/podcast09/rss_24684.xml
::
Playlist Commands
load <file> - Loads <file> as queue. The option
--range may be used to load only a portion of the file
lsplaylists: - Lists available playlists.
playlist [<playlist>] - Lists all songs in <playlist>. If
no <playlist> is specified, lists all songs in the current queue.
rm <file> - Deletes a specific playlist.
save <file> - Saves playlist as <file>.
MPD va lire le flux RSS, charger le titre des épisodes, et les associer avec
les fichiers en ligne pour chacun d’eux. Le problème est qu’il s’agit de la
playlist courante, et il faut répêter cette manipulation à chaque fois que l’on
souhaite écouter l’un des épisodes. Il faut un ordinateur allumé, ouvrir un
terminal, ce qui est loin d’être pratique !
Il existe un moyen de sauvegarder la playlist, avec la commande `save`, mais la
playlist ne contient plus que les fichiers à lire, et le titre du podcast est
perdu. Cela crée une playlist incompréhensible ce qui ne nous aide pas vraiment.
Au lieu de ça, nous allons demander à MPD de nous génerer la playlist au format
m3u_, il s’agit d’un fomat très simple, constitué d’un simple fichier texte. La
commande `playlist` prend en effet un paramètre `--format` qui permet de
spécifier comment la playlist courante doit être affichée :
.. code:: console
$ mpc -f "##EXTINF:0,%title%\n%file%" playlist
#EXTINF:0,La mixtape de Françoise Hardy
https://rf.proxycast.org/9b541821-7758-4634-88ae-b1fbb9f153b5/24684-12.06.2024-ITEMA_23771367-2024Y52935S0164-21.mp3
#EXTINF:0,Tout sur ma mère
https://rf.proxycast.org/f2d90d91-cc4d-4ea5-9e21-50bf138783ba/24684-25.05.2024-ITEMA_23752523-2024Y52935S0146-21.mp3
#EXTINF:0,La mixtape d'Amy Winehouse
https://rf.proxycast.org/fca9204c-caea-4292-b45d-e31b77857329/24684-02.05.2024-ITEMA_23728745-2024Y52935S0123-21.mp3
Ici, nous affichons la sortie sur deux lignes (le `\n` correspond au séparateur
de ligne), sur la première le titre du morceau, et sur la seconde le lien vers
le moreau à jouer. Et cela tombe bien, car MPD est capable de lire les fichiers
M3U_ ! On peut donc enregistrer la sortie de la commande dans un fichier, et
déposer ce fichier dans le répertoire des playlists.
Et comme l’ensemble des commandes peut se faire sans aucune action, on peut
automatiser la mise à jour des fichiers pour détecter les nouveaux épisodes et
retirer ceux qui ne sont plus disponibles.
Cela nous donne le script suivant:
.. code:: bash
#!/bin/sh
# Update the mpd playlist from RSS fields
playlist_directory="/home/playlists"
update_playlist () {
mpc load $2
echo "#EXTM3U" > "${playlist_directory}/Podcast - $1.m3u"
mpc -f "##EXTINF:0,%title%\n%file%" playlist >> "${playlist_directory}/Podcast - $1.m3u"
mpc clear
}
case $(mpc status "%state%") in
paused)
mpc clear
update_playlist "Fip Tape" "https://radiofrance-podcast.net/podcast09/rss_24684.xml"
;;
*)
esac
Et voilà, il ne reste qu’à compléter le fichier avec l’ensemble des podcasts
que l’on souhaite suivre, et le mettre dans une tâche planifiée pour
l’automatiser.
Bonne musique !
.. _MPD: https://www.musicpd.org/
.. _`mon article sur la configuration de la carte`: {filename}2021-11-piaudio.rst
.. _m3u: https://fr.wikipedia.org/wiki/M3U
|