Commit 9577a5d6 authored by Thorfin89's avatar Thorfin89

Nettoyage du code (encore :-) )

parent 7b7f772e
54
\ No newline at end of file
60
\ No newline at end of file
......@@ -3,7 +3,7 @@
# Auteur : Daniel SAZERAT (thorfin89@free.fr)
# import ----------------------------------
from vlc import Instance
import vlc
''' installer le paquet python-vlc :
$ sudo pip3 install python-vlc
installer aussi l'application VLC '''
......@@ -15,7 +15,7 @@ from pupitre import Pupitre # gestion de l'interface sous Tkinter
class Radio(Pupitre):
def __init__(self):
super().__init__() # constructeur de la classe parente
self.instance = Instance()
self.instance = vlc.Instance()
self.player = self.instance.media_player_new()
def radio_flux(self, flux):
......@@ -56,13 +56,13 @@ class Radio(Pupitre):
config_file.close()
self.player.audio_set_volume(volume_init)
def radio_forward(self): # passe à la radio suivante
def next_radio(self): # passe à la radio suivante
self.num_radio_selected += 1
# changement de page automatique
if self.num_radio_selected % 20 == 0 and self.num_radio_selected < self.nb_radios:
# si le numéro est un multiple de 20 et qu'on n'est pas au bout de la liste
self.page_forward()
self.next_page()
if self.num_radio_selected == self.nb_radios: # si on arrive à la fin de la liste
self.num_radio_selected = 0
......@@ -71,14 +71,14 @@ class Radio(Pupitre):
self.radio_selected(self.num_radio_selected)
def radio_back(self): # passe à la radio précédente
def previous_radio(self): # passe à la radio précédente
self.num_radio_selected -= 1
print(self.num_radio_selected)
# changement de page automatique
if (
self.num_radio_selected + 1) % 20 == 0 and self.num_radio_selected != -1: # si le numéro est un multiple de 20
self.page_back()
self.previous_page()
if self.num_radio_selected == -1:
self.num_radio_selected = self.nb_radios - 1
......
......@@ -5,9 +5,9 @@
# import ----------------------------------
import tkinter as tk
from tkinter import ttk, Scale, HORIZONTAL
from PIL import Image, ImageTk
import csv
from vlc import Meta
import vlc
from PIL import Image, ImageTk
mute = False # le son n'est pas coupé au démarrage
radio_on = False # mémorise le fait d'écouter une radio ou pas
......@@ -39,30 +39,10 @@ class Pupitre:
self.root.attributes('-fullscreen', False) # < à basculer sur False pour les tests sur PC
self.root.config(bg=bg_color)
# logos des boutons
self.icon_back = tk.PhotoImage(file="./icons/back.png")
self.icon_play = tk.PhotoImage(file="./icons/play.png")
self.icon_pause = tk.PhotoImage(file="./icons/pause.png")
self.icon_stop = tk.PhotoImage(file="./icons/stop.png")
self.icon_forward = tk.PhotoImage(file="./icons/forward.png")
self.icon_sound = tk.PhotoImage(file="./icons/sound_up.png")
self.icon_mute = tk.PhotoImage(file="./icons/mute.png")
self.icon_pageb = tk.PhotoImage(file="./icons/pageb.png")
self.icon_pagef = tk.PhotoImage(file="./icons/pagef.png")
self.zones() # affichage des 3 zones
self.mosaique() # affichage d'une mosaïque de logos des radios
self.boutons() # affichage des boutons
self.menu_droite() # affichage de la radio choisie
self.radio_name() # affichage de l'info sur l'application
self.num_radio_selected = 0
def zones(self):
# ==== ZONES DE WIDGETS ==========================================
# fenêtre contenant la mosaïque de logos des radios > dim 500x400
self.zone_mosaique = tk.Frame(self.root, bg="lightgray")
self.zone_mosaique.place(width="500", height="400", x=10, y=10)
self.logos = tk.Frame(self.root, bg="lightgray")
self.logos.place(width="500", height="400", x=10, y=10)
# fenêtre d'affichage de la radio en cours de lecture et des boutons de commande > dim 300x400
self.menu = tk.Frame(self.root, bg=bg_color)
......@@ -72,19 +52,41 @@ class Pupitre:
self.bandeau = tk.Frame(self.root, bg=bg_color)
self.bandeau.place(width="510", height="60", x=0, y=420)
def boutons(self):
# ==== FONCTIONS =================================================
self.mosaique() # affichage d'une mosaïque de logos des radios
self.right_panel() # affichage de la radio choisie
self.radio_name() # affichage de l'info sur l'application
self.num_radio_selected = 0
# ==== BOUTONS ===================================================
# Logos des boutons
self.icon_play = tk.PhotoImage(file="./icons/play.png")
self.icon_pause = tk.PhotoImage(file="./icons/pause.png")
self.icon_stop = tk.PhotoImage(file="./icons/stop.png")
self.icon_previous_radio = tk.PhotoImage(file="./icons/back.png")
self.icon_next_radio = tk.PhotoImage(file="./icons/forward.png")
self.icon_previous_page = tk.PhotoImage(file="icons/previous_page.png")
self.icon_next_page = tk.PhotoImage(file="icons/next_page.png")
self.icon_sound = tk.PhotoImage(file="./icons/sound_up.png")
self.icon_mute = tk.PhotoImage(file="./icons/mute.png")
# définition d'un style commun à tous les boutons
style = ttk.Style()
style.configure("BW.TLabel", foreground="black", background=bg_color)
# bouton page arrière
btn_pageb = ttk.Button(self.bandeau, image=self.icon_pageb, command=self.page_back, style="BW.TLabel")
btn_pageb.place(width=40, height=32, x=40, y=10)
# bouton page précédente
btn_previous_page = ttk.Button(self.bandeau, image=self.icon_previous_page,
command=self.previous_page, style="BW.TLabel")
btn_previous_page.place(width=40, height=32, x=40, y=10)
# boutons radio arrière
btn_back = ttk.Button(self.bandeau, image=self.icon_back, command=self.radio_back, style="BW.TLabel")
btn_back.place(width=48, height=32, x=105, y=10)
# boutons radio précédente
btn_previous_radio = ttk.Button(self.bandeau, image=self.icon_previous_radio,
command=self.previous_radio, style="BW.TLabel")
btn_previous_radio.place(width=48, height=32, x=105, y=10)
# bouton pause
btn_play = ttk.Button(self.bandeau, image=self.icon_pause, command=self.radio_pause, style="BW.TLabel")
......@@ -98,21 +100,26 @@ class Pupitre:
btn_stop = ttk.Button(self.bandeau, image=self.icon_stop, command=self.radio_stop, style="BW.TLabel")
btn_stop.place(width=32, height=32, x=304, y=10)
# bouton radio avant
btn_forward = ttk.Button(self.bandeau, image=self.icon_forward, command=self.radio_forward, style="BW.TLabel")
btn_forward.place(width=48, height=32, x=367, y=10)
# bouton radio suivante
btn_next_radio = ttk.Button(self.bandeau, image=self.icon_next_radio, command=self.next_radio,
style="BW.TLabel")
btn_next_radio.place(width=48, height=32, x=367, y=10)
# bouton page avant
btn_pagef = ttk.Button(self.bandeau, image=self.icon_pagef, command=self.page_forward, style="BW.TLabel")
btn_pagef.place(width=40, height=32, x=440, y=10)
# bouton page suivante
btn_next_page = ttk.Button(self.bandeau, image=self.icon_next_page, command=self.next_page, style="BW.TLabel")
btn_next_page.place(width=40, height=32, x=440, y=10)
def menu_droite(self):
self.btn_mute = ttk.Button(self.menu, image=self.icon_sound, text="Mute", command=self.switch_sound,
style="BW.TLabel")
self.btn_mute.place(width=30, height=32, x=233, y=430)
def right_panel(self):
# affiche du logo de la radio sélectionnée >>> placer ici l'icone de la radio en 200x200
# affiche du logo de la radio sélectionnée
self.lbl_radio_logo = ttk.Label(self.menu, background=bg_color_light)
self.lbl_radio_logo.place(width=225, height=225, x=33, y=33)
# affiche le noù de la radio
# affiche le nom de la radio
self.lbl_radio_name = tk.Label(self.menu)
self.lbl_radio_name.place(width=270, height=30, x=10, y=270)
self.lbl_radio_name.config(font=('Helvetica', 16), bg=bg_color, fg="white")
......@@ -123,11 +130,10 @@ class Pupitre:
self.lbl_radio_info.config(font=('Helvetica', 10), anchor="n", bg=bg_color, fg="white", wraplength=240)
# potentiomètre de volume
# - on charge la configuration du volume sauvegardée
lecture = open("config/webradiopi.cfg", "r")
lecture = open("config/webradiopi.cfg", "r") # on charge la configuration du volume sauvegardée
volume_init = lecture.read()
lecture.close()
# - affichage du potentiomètre de volume
vol_potar = Scale(self.menu, from_=0, to=100, tickinterval=20, orient=HORIZONTAL,
length=190, label="Volume", command=self.volume,
bg=bg_color, fg="white", highlightthickness=0)
......@@ -135,9 +141,6 @@ class Pupitre:
vol_potar.place(x=30, y=400)
# boutons de coupure et rétablissement du son
self.btn_mute = ttk.Button(self.menu, image=self.icon_sound, text="Mute", command=self.switch_sound,
style="BW.TLabel")
self.btn_mute.place(width=30, height=32, x=233, y=430)
def mosaique(self): # récupération de la liste des radios (+infos) et affichage de la mosaïque de logos
......@@ -165,7 +168,7 @@ class Pupitre:
self.logo[num_case] = ImageTk.PhotoImage(img)
# création du bouton avec le logo de la radio
btn_logo = tk.Button(self.zone_mosaique, image=self.logo[num_case])
btn_logo = tk.Button(self.logos, image=self.logo[num_case])
# utilisation d'une fonction 'lambda' indexée sur la position du logo
btn_logo.config(command=lambda flux=radios_list[num_radio]['Url'],
......@@ -212,14 +215,14 @@ class Pupitre:
self.btn_mute.config(image=self.icon_sound) # affichage "logo sound on"
mute = False
def page_back(self): # commande de page en arrière
def previous_page(self): # commande de page en arrière
self.current_page -= 1
if self.current_page < 0: # Quand tente de remonter avant la première page (page 0)
self.current_page = self.nb_pages # on boucle sur la dernière
self.mosaique()
def page_forward(self): # commande page en avant
def next_page(self): # commande page en avant
self.current_page += 1
if self.current_page > self.nb_pages: # quand on avance au-delà de la dernière page
self.current_page = 0 # on revient à la première
......@@ -233,21 +236,21 @@ class Pupitre:
def radio_info(self):
if self.radio_on: # si on a une radio en cours d'écoute
flux_info = self.media.get_meta(Meta.NowPlaying) # on récupère l'info sur le titre actuel
if self.radio_on: # si on a une radio en cours d'écoute
flux_info = self.media.get_meta(vlc.Meta.NowPlaying) # on récupère l'info sur le titre actuel
if flux_info: # si on a bien une information sur le titre
if flux_info: # si on a bien une information sur le titre
longueur = len(flux_info)
if flux_info[0:4] == ". - ": # nettoyage boom 99.7
flux_info = flux_info[4:longueur-3]
if flux_info[0:4] == ". - ": # nettoyage boom 99.7
flux_info = flux_info[4:longueur - 3]
flux_info = flux_info.replace("~", " ") # nettoyage des tildes
flux_info = flux_info.replace("~", " ") # nettoyage des tildes
flux_info = flux_info.replace(" - ", "\n") # remplacer par des retours à la ligne
self.lbl_radio_info.config(text=flux_info) # afficher les infos sous le titre de la radio
self.lbl_radio_info.config(text=flux_info) # afficher les infos sous le titre de la radio
self.root.after(1000, self.radio_info) # relance la fonction 'now_playing_info' toutes les 1s
self.root.after(1000, self.radio_info) # relance la fonction 'now_playing_info' toutes les 1s
def boucle(self): # boucle principale de tkinter
self.root.mainloop()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment