Radiotray-ng [Réglé]
Comment récupérer le nom des pistes
Logiciels / Musique MAO Synthèse vocale

DéBé Membre non connecté
-
- Voir le profil du membre DéBé
- Inscrit le : 30/01/2010
- Groupes :
Reprise du message précédent
Voilà un exemple de ligne générée dans les logs :Citation :
[2020-12-08 19:16:17.845710] [0x00007f8bbd482a40] [debug] (notification.cpp:63) - notify: Kerosene, Miranda Lambert, radiotray-ng-notification
Dans
Citation :
est-ce que je dois remplacer portion par le mot placé juste devant le titre du morceau, à savoir derniermorceau="$(echo "${derniereligne}" | sed -e 's|^.*portion||' )"
Citation :
notify:
?
Finistère - Matériel : Desktop :Mga 9 x86-64 sur SSD 120 Go Plasma5 - Intel I5-6500 3,2 Ghz /Ram 8 Go --Lenovo T 410 Mga 9 x86-64 Plasma 5 Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire.” Albert Einstein

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Code BASH :
derniermorceau="$(echo "${derniereligne}" | sed -e 's|^.* - notify: \(.*\), radiotray-ng-notification\.*$|\1|' )"
L'expression est :
s remplacer |ce qu'on cherche|remplace|options (ici aucune option)
^ début
.* tout et n'importe quoi
- notify: un motif
\( \) un groupe qu'on peut réutiliser
radiotray-ng-notification\. Un autre motif
$ fin
\1 le premier groupe
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

DéBé Membre non connecté
-
- Voir le profil du membre DéBé
- Inscrit le : 30/01/2010
- Groupes :
Caché :
#!/bin/bash
cd /home/${USER}/.config/radiotray-ng/logs
# Nom du fichier log le plus récent
dernierfichier=$(ls -Art | tail -n 1 )
# On récupère la dernière ligne dans ---un fichier--- une variable
derniereligne="$(echo "${dernierfichier}" | tail -1)"
# on prend le texte après le ---91e caractère et on l'envoie dans un nouveau fichier--- motif "portion", autrement dit, on remplace ce qu'il y a tout ce qu'il y a avant et portion inclu par rien (du début ^, tout les caractères .* jusqu'à portion, on remplace par du vide entre les symbole ||) .
derniermorceau="$(echo "${derniereligne}" | sed -e 's|^.* - notify: \(.*\), radiotray-ng-notification\.*$|\1|' )"
#en début de ligne, il nous reste 2 champs séparés par une virgule ---qu'on affiche à l'écran---
TITRE="$(echo "${derniereligne}" | cut -d ',' -f 1 )"
ARTIST="$(echo "${derniereligne}" | cut -d ',' -f 2 )"
echo -e "\n" # ajout d'une ligne vide
echo "Titre : ${TITRE}"
echo "Interprète : ${ARTIST}"
cd /home/${USER}/.config/radiotray-ng/logs
# Nom du fichier log le plus récent
dernierfichier=$(ls -Art | tail -n 1 )
# On récupère la dernière ligne dans ---un fichier--- une variable
derniereligne="$(echo "${dernierfichier}" | tail -1)"
# on prend le texte après le ---91e caractère et on l'envoie dans un nouveau fichier--- motif "portion", autrement dit, on remplace ce qu'il y a tout ce qu'il y a avant et portion inclu par rien (du début ^, tout les caractères .* jusqu'à portion, on remplace par du vide entre les symbole ||) .
derniermorceau="$(echo "${derniereligne}" | sed -e 's|^.* - notify: \(.*\), radiotray-ng-notification\.*$|\1|' )"
#en début de ligne, il nous reste 2 champs séparés par une virgule ---qu'on affiche à l'écran---
TITRE="$(echo "${derniereligne}" | cut -d ',' -f 1 )"
ARTIST="$(echo "${derniereligne}" | cut -d ',' -f 2 )"
echo -e "\n" # ajout d'une ligne vide
echo "Titre : ${TITRE}"
echo "Interprète : ${ARTIST}"
Mais je n'obtiens en sortie que
Citation :
sh scriptRadioTray2.sh
Titre : radiotray-ng-00022.log
Interprète : radiotray-ng-00022.log
Titre : radiotray-ng-00022.log
Interprète : radiotray-ng-00022.log
Finistère - Matériel : Desktop :Mga 9 x86-64 sur SSD 120 Go Plasma5 - Intel I5-6500 3,2 Ghz /Ram 8 Go --Lenovo T 410 Mga 9 x86-64 Plasma 5 Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire.” Albert Einstein

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
cette ligne
> derniereligne="$(echo "${dernierfichier}" | tail -1)"
Veut-on vraiment afficher le nom du fichier ? Ou on veut afficher son contenu avec cat ?
Remplace echo par cat :
> derniereligne="$(cat "${dernierfichier}" | tail -1)"
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

DéBé Membre non connecté
-
- Voir le profil du membre DéBé
- Inscrit le : 30/01/2010
- Groupes :
mais il faut aussi remplacer "derniereligne" par "derniermorceau" dans
Code BASH :
TITRE="$(echo "${derniereligne}" | cut -d ',' -f 1 )" ARTIST="$(echo "${derniereligne}" | cut -d ',' -f 2 )"
Code BASH :
sh scriptRadioTray2.sh
Titre : Rose Garden
Interprète : Lynn Anderson
Le script complet :
Code BASH :
#!/bin/bash cd /home/${USER}/.config/radiotray-ng/logs # Nom du fichier log le plus récent dernierfichier=$(ls -Art | tail -n 1 ) # On récupère la dernière ligne dans ---un fichier--- une variable derniereligne="$(cat "${dernierfichier}" | tail -1)" # on prend le texte après le ---91e caractère et on l'envoie dans un nouveau fichier--- motif "portion", autrement dit, on remplace ce qu'il y a tout ce qu'il y a avant et portion inclu par rien (du début ^, tout les caractères .* jusqu'à portion, on remplace par du vide entre les symbole ||) . derniermorceau="$(echo "${derniereligne}" | sed -e 's|^.* - notify: \(.*\), radiotray-ng-notification\.*$|\1|' )" #en début de ligne, il nous reste 2 champs séparés par une virgule ---qu'on affiche à l'écran--- TITRE="$(echo "${derniermorceau}" | cut -d ',' -f 1 )" ARTIST="$(echo "${derniermorceau}" | cut -d ',' -f 2 )" echo -e "\n" # ajout d'une ligne vide echo "Titre : ${TITRE}" echo "Interprète : ${ARTIST}"
Merci beaucoup pour ton aide....
Édité par DéBé Le 09/12/2020 à 14h01
Finistère - Matériel : Desktop :Mga 9 x86-64 sur SSD 120 Go Plasma5 - Intel I5-6500 3,2 Ghz /Ram 8 Go --Lenovo T 410 Mga 9 x86-64 Plasma 5 Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire.” Albert Einstein

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
Voici ma contribution.
C'est un script Python qui écoute DBus et qui sort sur la console le titre et l'interprète, sans fin. Il faut faire python3 radio_scribe.py pour le lancer dans une console et Ctrl-C pour l'arrêter.
Code PYTHON :
#!/bin/python3 from gi.repository import GLib as glib import dbus from dbus.mainloop.glib import DBusGMainLoop def notifications(bus, message): args = message.get_args_list() if args[0] == "radiotray-ng": print( f"Interprète : {args[4]} Titre : {args[3]}") DBusGMainLoop(set_as_default=True) bus = dbus.SessionBus() bus.add_match_string_non_blocking("eavesdrop=true, interface='org.freedesktop.Notifications', member='Notify'") bus.add_message_filter(notifications) mainloop = glib.MainLoop() mainloop.run()
à enregistrer sous le nom radio_scribe.py.
Libre de droits.
PS1: Il n'y a pas besoin d'activer les logs dans ce cas.
PS2: Les informations récupérées pourraient être utilisées pour marquer les enregistrements, mais je ne sais pas sous quel format ni où ils sont faits.
[Edit] : changement de l'ordre.
Édité par Papoteur Le 09/12/2020 à 22h52
Yves

DéBé Membre non connecté
-
- Voir le profil du membre DéBé
- Inscrit le : 30/01/2010
- Groupes :
Papoteur :
Voici ma contribution.
Merci pour ce petit programme.
Il fonctionne très bien :
Code BASH :
~$ python3 radio_scribe.py
Interprète : Treat My Daughter kindly Titre : Wolfe Tones
Interprète : Still In Love With You Titre : Travis Tritt
Interprète : Good Ol' Boys Titre : Waylon Jennings
J'ai juste interverti titre et interprète.
Ça me permet d' aborder python , mais c'est un peu costaud pour moi....
Pour ce qui est de récupérer ces données (que ce soit en bash ou en python) pour les intégrer dans Audacity ça me parait bien compliqué , je crois que je me contenterai de le faire manuellement .....

Édité par DéBé Le 09/12/2020 à 19h40
Finistère - Matériel : Desktop :Mga 9 x86-64 sur SSD 120 Go Plasma5 - Intel I5-6500 3,2 Ghz /Ram 8 Go --Lenovo T 410 Mga 9 x86-64 Plasma 5 Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire.” Albert Einstein

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
Je n'étais pas sûr de l'ordre des champs, j'ai fait un peu au hasard, mauvaise pioche

Yves

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
#!/bin/python3
Puis le rendre exécutable avec chmod +x
Ainsi, il se lance directement sans avoir a taper python3 devant.
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

arte-naki Membre non connecté
-
- Voir le profil du membre arte-naki
- Inscrit le : 03/11/2020
Jybz :
#!/bin/python3
#!/bin/python3
Code :
#!/usr/bin/env python3
ceci est préférable car un tel code utilise youtube-dl et des scripts de github. Dans Mageia /bin fait référence à /usr/bin pour autant que je me souvienne (puisque /bin est obsolète).
Édité par arte-naki Le 09/12/2020 à 23h44

DéBé Membre non connecté
-
- Voir le profil du membre DéBé
- Inscrit le : 30/01/2010
- Groupes :

Finistère - Matériel : Desktop :Mga 9 x86-64 sur SSD 120 Go Plasma5 - Intel I5-6500 3,2 Ghz /Ram 8 Go --Lenovo T 410 Mga 9 x86-64 Plasma 5 Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire.” Albert Einstein

arte-naki Membre non connecté
-
- Voir le profil du membre arte-naki
- Inscrit le : 03/11/2020
Il se reconnecte lorsque la connexion est interrompue, divise les fichiers par balises (Artiste - Titre). Vous devez spécifier l'URL directe de la station de radio, extraite des signets. Cependant, toutes les stations de radio ne transmettent pas des balises dans le flux http, bien que cela soit standardisé. Si aucune balises n'est passée, il n'y aura pas de fractionnement et tout sera enregistré dans un seul fichier.
Par exemple:

Code :
sudo urpmi streamripper
man streamripper
unset http_proxy && streamripper http://listen.181fm.com/181-greatoldies_128k.mp3 -a -o never -t -q 00 -i -m 10 -u Mozilla
Audacious player affiche les balises des flux http, vous pouvez y écouter la radio.
Code :
sudo urpmi audacious
Édité par arte-naki Le 11/12/2020 à 05h39

arte-naki Membre non connecté
-
- Voir le profil du membre arte-naki
- Inscrit le : 03/11/2020

Mais d'abord, vous devez installer urpmi streamripper et activer le plugin dans Exaile, et copier toutes les URL des signets radiotray-ng.
Code :
sudo urpmi exaile streamripper


DéBé Membre non connecté
-
- Voir le profil du membre DéBé
- Inscrit le : 30/01/2010
- Groupes :
merci pour ta proposition.
J'ai installé exaile et streamripper. Ça fonctionne très bien en lecture ....
Mais pas moyen d'enregistrer :
Code BASH :
INFO : Loading Exaile 4.0.0rc3... INFO : Using Python 2.7.17 INFO : Using PyGObject 3.32.1 INFO : Loading settings... INFO : Using Locale fr_FR UTF-8 INFO : Using Mutagen 1.42.0 INFO : Using GStreamer 1.16.0 INFO : Reconfiguring crossfading INFO : Crossfade: disabled INFO : Using GTK+ 3.24.8 INFO : Loading plugins... INFO : Loading collection... INFO : Loading devices... INFO : Connected to udisks2 INFO : Loading interface... INFO : Loading main window... INFO : Connecting main window events... INFO : Loading panels... INFO : Connecting panel events... INFO : Done loading main window... INFO : Playing http://ice6.somafm.com/bootliquor-320-mp3 WARNING : Error seeking to specified offset INFO : Buffering complete Traceback (most recent call last): File "/usr/share/exaile/plugins/streamripper/__init__.py", line 139, in toggle_button_callback if self.toggle_record(True): # couldn't record stream File "/usr/share/exaile/plugins/streamripper/__init__.py", line 55, in toggle_record options.append(player.PLAYER._pipe.get_property('uri')) AttributeError: 'ExailePlayer' object has no attribute '_pipe'
Édité par DéBé Le 11/12/2020 à 11h38
Finistère - Matériel : Desktop :Mga 9 x86-64 sur SSD 120 Go Plasma5 - Intel I5-6500 3,2 Ghz /Ram 8 Go --Lenovo T 410 Mga 9 x86-64 Plasma 5 Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire.” Albert Einstein

arte-naki Membre non connecté
-
- Voir le profil du membre arte-naki
- Inscrit le : 03/11/2020
J'ai la même erreur sauf "Error seeking to specified offset".
Commande de la console
Code :
streamripper http://ice6.somafm.com/bootliquor-320-mp3
fonctionne pour vous?
Que montrent les commandes? (dans cet ordre)
Code :
env | grep proxy
unset http_proxy
env | grep proxy
J'ai trouvé une solution. Vous devez désactiver le proxy dans dconf-editor > system > proxy > mode:none et vous reconnecter (ou redémarrer). Mais je ne l'ai pas encore testé. Je n'ai pas redémarré mon ordinateur depuis une semaine.

DéBé Membre non connecté
-
- Voir le profil du membre DéBé
- Inscrit le : 30/01/2010
- Groupes :
arte-naki :
Bonjour
J'ai la même erreur sauf "Error seeking to specified offset".
Commande de la console
fonctionne pour vous?
J'ai la même erreur sauf "Error seeking to specified offset".
Commande de la console
Code :
streamripper http://ice6.somafm.com/bootliquor-320-mp3
fonctionne pour vous?
Oui ça fonctionne, un dossier créé au nom de la station, et les morceaux sont sauvegardés avec interprète et titre
Code BASH :
streamripper http://ice6.somafm.com/bootliquor-320-mp3 Connecting... stream: Boot Liquor: Americana roots music for Cowhands, Cowpokes and Cowtippers. [SomaFM] server name: SHOUTcast/Linux v1.9.5 declared bitrate: 320 meta interval: 16000 [skipping... ] Montana Tunesmith - Copenhagen, Jim Beam And Me [ 814kb] [ripping... ] David Childers and the Overmountain Men - Smoke An [ 6,00M] ^Cipping... ] Ray Wylie Hubbard - Drunken Poet's Dream [ 8,84M]
Citation :
Que montrent les commandes? (dans cet ordre)
ces commandes ne retournent rien.Que montrent les commandes? (dans cet ordre)
Code :
env | grep proxy
unset http_proxy
env | grep proxy
Citation :
J'ai trouvé une solution. Vous devez désactiver le proxy dans dconf-editor > system > proxy > mode:none et vous reconnecter (ou redémarrer). Mais je ne l'ai pas encore testé. Je n'ai pas redémarré mon ordinateur depuis une semaine.
J'ai trouvé une solution. Vous devez désactiver le proxy dans dconf-editor > system > proxy > mode:none et vous reconnecter (ou redémarrer). Mais je ne l'ai pas encore testé. Je n'ai pas redémarré mon ordinateur depuis une semaine.
Désolé, dconf-editor n'est pas reconnu comme commande sur mon système.
PS, je suis sous Lxqt.
Édité par DéBé Le 11/12/2020 à 15h50
Finistère - Matériel : Desktop :Mga 9 x86-64 sur SSD 120 Go Plasma5 - Intel I5-6500 3,2 Ghz /Ram 8 Go --Lenovo T 410 Mga 9 x86-64 Plasma 5 Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire.” Albert Einstein
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie