Les deux révisions précédentes
Révision précédente
Prochaine révision
|
Révision précédente
Dernière révision
Les deux révisions suivantes
|
pyqt5_radioweb [2018/05/17 11:27] tyrtamos |
pyqt5_radioweb [2018/05/17 14:26] tyrtamos |
| |
[développé sous Python v3.5 et PyQt5 v5.9 avec Windows 10] | [développé sous Python v3.5 et PyQt5 v5.9 avec Windows 10] |
| |
[en cours de création!] | |
| |
===== Généralités ===== | ===== Généralités ===== |
Python, que certains considèrent encore comme un "langage de script" (!) dispose, grâce à des bibliothèques comme PyQt5, de possibilités importantes dans le domaine multimédia. J'ai eu alors envie d'avoir un lecteur de radios internet pour mon propre usage, et comme ça marche très bien, je vais vous en faire profiter! | Python, que certains considèrent encore comme un "langage de script" (!) dispose, grâce à des bibliothèques comme PyQt5, de possibilités importantes dans le domaine multimédia. J'ai eu alors envie d'avoir un lecteur de radios internet pour mon propre usage, et comme ça marche très bien, je vais vous en faire profiter! |
| |
Je n'ai pas utilisé d'instructions spécifiques à l'un des OS courants (Windows, Linux, MacOS), aussi je pense que ça fonctionnera sur ces 3 OS. Cependant, j'ai fait le développement sous Windows 10, et j'ai pu voir que sous Linux, il pouvait y avoir des subtilités d'installation à résoudre avant que ça marche... Et je n'ai pas essayé sous MacOS. | Je n'ai pas utilisé d'instructions spécifiques à l'un des OS courants (Windows, Linux, MacOS), aussi je pense que ça fonctionnera sur ces 3 OS. Cependant, j'ai fait le développement sous Windows 10, et j'ai pu voir que sous Linux, il pouvait y avoir des subtilités d'installation à résoudre avant que ça marche... Je n'ai pas (encore) essayé sous Mac OS. |
| |
===== Téléchargement ===== | ===== Téléchargement ===== |
| |
Contenu: | Contenu: |
* radiowebmini.py: le lecteur de radio internet minimum | * radiowebmini.py: le lecteur de radio internet minimum |
* radioweb.py: le lecteur de radio internet avec playlist | * radioweb.py: le lecteur de radio internet avec playlist |
* radioweb_tray.py: le même lecteur intégré dans la zone de notification | * radioweb_tray.py: le même lecteur intégré dans la zone de notification |
* icons8-tour-de-radio-50.png et icons8-tour-de-radio-50.ico: les icônes utilisées | * icons8-tour-de-radio-50.png et icons8-tour-de-radio-50.ico: les icônes utilisées |
* radioweb.txt: la liste des radios que j'ai retenues pour mon usage | * radioweb.txt: la liste des radios que j'ai retenues pour mon usage |
| |
| Je n'ai pas mis les scripts pour pyinstaller, mais il est facile de les récupérer ci-dessous par copier-coller. Je n'ai pas mis non plus les exécutables ".exe" qui sont générés par pyinstaller pour être sûr de ne pas diffuser de virus (on n'est plus sûr de rien de nos jours sur ce sujet...). |
| |
===== Un lecteur de radio internet minimum ===== | ===== Un lecteur de radio internet minimum ===== |
L'écoute de la radio internet utilise le module QtMultimedia de PyQt5. | L'écoute de la radio internet utilise le module QtMultimedia de PyQt5. |
| |
Le programme est prévu pour être lancé avec l'url de la radio internet en argument de la ligne de commande. Avec un bureau graphique (Windows, Linux, MacOS), on peut créer une icône sur le bureau, qui lancera le programme avec la radio souhaité en argument. | Le programme est prévu pour être lancé avec l'url (l'adresse web) de la radio internet en argument de la ligne de commande. Avec un bureau graphique (Windows, Linux, MacOS), on peut créer une icône sur le bureau, qui lancera le programme avec la radio souhaitée en argument. |
| |
Bien que ce ne soit pas son but, ce programme accepte sans problème les fichiers audio locaux de type mp3! Dans le code, on regarde si le fichier existe sur disque, et si oui, on utilise QUrl.fromLocalFile(url) au lieu de QUrl(url), ce qui ajoutera %%"file:///"%% au début de l'adresse. Pour tenir compte de Windows, on en profite pour remplacer les éventuels %%'\'%% du chemin disque, par des '/'. | Bien que ce ne soit pas son but, ce programme accepte sans problème les fichiers audio locaux de type mp3! Dans le code, on regarde si le fichier existe sur disque, et si oui, on utilise QUrl.fromLocalFile(url) au lieu de QUrl(url), ce qui ajoutera %%"file:///"%% au début de l'adresse. Pour tenir compte de Windows, on en profite pour remplacer les éventuels %%'\'%% du chemin disque, par des '/'. |
</code> | </code> |
| |
Si ce programme s'appelle "radiowebmini.py", par exemple, il faudra pour écouter l'excellente radio "fréquence 3" faire dans une console (cmd.exe pour Windows): | Si ce programme s'appelle "radiowebmini.py", il faudra pour écouter l'excellente radio "fréquence 3" faire dans une console (cmd.exe pour Windows): |
| |
<code python> | <code python> |
Il faut adapter cette ligne de code selon l'OS. Par exemple, sous Linux, il faut en général utiliser python3 pour avoir l'interpréteur Python version 3.x. etc... | Il faut adapter cette ligne de code selon l'OS. Par exemple, sous Linux, il faut en général utiliser python3 pour avoir l'interpréteur Python version 3.x. etc... |
| |
Au lancement, la radio démarre au bout de quelques secondes (mise en cache), et une petite fenêtre apparait dont la vocation est surtout de permettre l'arrêt du programme (et donc de l'écoute). | Au lancement, la radio démarre au bout de quelques secondes (temps de mise en cache), et une petite fenêtre apparait dont la vocation est de permettre l'arrêt du programme (et donc de l'écoute). |
| |
{{::radiowebmini.jpg?274|}} | {{::radiowebmini.jpg?274|}} |
==== Fichier des radios retenues ==== | ==== Fichier des radios retenues ==== |
| |
Les radios sont dans le fichier "radioweb.txt" (encodé 'utf-8') et chaque ligne désigne une radio avec un format: "nom_radio | url_radio". Le séparateur '|' a été choisi parce qu'il a peu de chance de se retrouver dans un nom de radio ou dans son adresse web. Voilà par exemple mon fichier radioweb.txt avec toutes les radios qui m'intéressent: | Les radios sont dans le fichier "radioweb.txt" (encodé 'utf-8') et chaque ligne désigne une radio avec un format: "nom_radio | url_radio". Le séparateur '|' a été choisi parce qu'il a peu de chance de se retrouver dans un nom de radio ou dans son adresse web. Voilà par exemple mon fichier radioweb.txt avec toutes les radios que j'ai retenues pour mon usage: |
| |
<code> | <code> |
Attention: ces adresses peuvent changer à tout moment! Alors, si une radio ne marche plus, cherchez une autre adresse sur le web, et mettez à jour votre fichier avec un simple éditeur de texte (avec encodage 'utf-8' pour les accents). | Attention: ces adresses peuvent changer à tout moment! Alors, si une radio ne marche plus, cherchez une autre adresse sur le web, et mettez à jour votre fichier avec un simple éditeur de texte (avec encodage 'utf-8' pour les accents). |
| |
Même si ce n'est pas le but du programme, les fichiers "audio" locaux type mp3 sont acceptés avec le même format. On peut par exemple avoir la ligne suivante (cas de Windows: aucun problème pour avoir des espaces dans le chemin ou pour conserver les %%'\'%% qui seront neutralisés dans le code): | Même si ce n'est pas le but du programme, les fichiers "audio" locaux type mp3 sont acceptés avec le même format. On peut par exemple avoir la ligne suivante (cas de Windows: aucun problème pour avoir des espaces ou des caractères accentués dans le chemin, ou pour conserver les %%'\'%% qui seront neutralisés dans le code): |
| |
<code> | <code> |
Il faut, bien sûr, adapter les noms et adresses selon la configuration qu'on a, et ne pas oublier de copier à la main le fichier des radios "radioweb.txt" dans le même répertoire. | Il faut, bien sûr, adapter les noms et adresses selon la configuration qu'on a, et ne pas oublier de copier à la main le fichier des radios "radioweb.txt" dans le même répertoire. |
| |
Comme pyinstaller est multiplateforme, on devrait pouvoir faire quelque chose de similaire sous Linux et sous MacOS, mais je n'ai pas encore essayé. | Comme pyinstaller est multiplateforme, on devrait pouvoir faire quelque chose de similaire sous Linux et sous Mac OS, mais je n'ai pas encore essayé. |
| |
| |
Bonne écoute! Et amusez-vous bien! | Bonne écoute! Et amusez-vous bien! |
| |