Commit 9577a5d6 authored by Thorfin89's avatar Thorfin89

Nettoyage du code (encore :-) )

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