Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/10/2023, à 12:06

Compte supprimé

Améliorer un script python relatif aux radios de FIP

Bonjour,
Ceux qui écoutent les radios de FIP savent que les flux ne contiennent pas les titres et les interprètes des morceaux diffusés.

Sur un autre sujet, un script python a été publié. Il va chercher ces informations dans un fichier json mis a disposition par FIP. L'URL de ce fichier dépend de la variante FIP écoutée (rock, jazz ...) et ce script doit être modifié à la main pour dire quelle variante aller chercher.

Une première piste d'amélioration serait de pouvoir lancer le script en mettant la variante FIP écoutée en argument. Mais comme je ne connais pas grand chose en python, je fais appel à votre aide.
Le script d'origine est ici.

j'ai pu corriger le erreurs les plus évidentes comme le # du début et des parenthèses manquantes. Ensuite j'ai le lancement avec argument et il est bien pris en compte.
Maintenant je ne vois pas comment choisir l'URL de la variante de FIP voulue.
Quand je fais "r = (sys.argv[1])", c'est le nom de l'argument qui est pris, fip ou jazz ou rock) et pas la valeur définie juste avant. Voir avec un tableau, ou un tuple ? .. peut-être.

#!/usr/bin/python3

import sys
import requests
import json
import os
import shlex
import subprocess
import time
print(sys.argv)

s = requests.session()

s.headers["User-Agent"] = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:67.0) Gecko/20100101 Firefox/67.0"

url = (s.get("https://api.radiofrance.fr/livemeta/pull/7"), s.get("https://api.radiofrance.fr/livemeta/pull/64"), s.get("https://api.radiofrance.fr/livemeta/pull/65"))
var = int(sys.argv[1])
r = url[var]

j = json.loads(r.content.decode('utf-8'))
c1 = j["levels"][0]["items"][3]
v1 = j["steps"][c1]

title = v1["title"]
singers = v1["authors"]
album = v1["titreAlbum"]
year = v1["anneeEditionMusique"]
art = v1["visual"]
start = v1["start"]
end = v1["end"]
heuredeb = time.strftime('%H:%M:%S', time.localtime(start))
heurefin = time.strftime('%H:%M:%S', time.localtime(end))


picname = "/tmp/fip_current_art.jpg"
#notify_cmd = "notify-send \"{:s}\" -t 5000 -i \"{:s}\" \"{:s}\n{:s}\n{:d}\n{:s}->{:s}\"".format(title, picname, singers, album, year, heuredeb, heurefin)
notify_cmd = "notify-send \"{:s}\" -t 5000 -i \"{:s}\" \"{:s}\n{:s}\"".format(title, picname, singers, album)
r = s.get(art)

fichier = open("fip.txt", "w")
fichier.write((singers))
fichier.write("\n")
fichier.write((title))
fichier.close()
#with open(picname, "wb") as fd:
#        fd.write(r.content)

        # print(notify_cmd)
#       p = subprocess.check_output(shlex.split(notify_cmd))

#        os.remove(picname)

J'essaye avec un tuple des diverses URL, si je donne à r la valeur 0,1,ou 2 alors ça fonctionne; mais je ne sais pas comment lui donner la valeur de l'argument donné au lancement du script. "python3 fip.py 2"

Dernière modification par Compte supprimé (Le 16/10/2023, à 16:12)

#2 Le 16/10/2023, à 15:29

Compte supprimé

Re : Améliorer un script python relatif aux radios de FIP

Bon, il me manquait à préciser la nature de la variable var comme integer.
Donc ça fonctionne comme cela mais je suis à l'écoute de toute proposition d'amélioration.