Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
W
WebRadioPi
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Thorfin89
WebRadioPi
Commits
9577a5d6
Commit
9577a5d6
authored
Feb 08, 2023
by
Thorfin89
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Nettoyage du code (encore :-) )
parent
7b7f772e
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
68 additions
and
65 deletions
+68
-65
webradiopi.cfg
config/webradiopi.cfg
+1
-1
next_page.png
icons/next_page.png
+0
-0
previous_page.png
icons/previous_page.png
+0
-0
main.py
main.py
+6
-6
pupitre.py
pupitre.py
+61
-58
No files found.
config/webradiopi.cfg
View file @
9577a5d6
54
60
\ No newline at end of file
\ No newline at end of file
icons/
pagef
.png
→
icons/
next_page
.png
View file @
9577a5d6
File moved
icons/p
ageb
.png
→
icons/p
revious_page
.png
View file @
9577a5d6
File moved
main.py
View file @
9577a5d6
...
@@ -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
.
p
age_back
()
self
.
p
revious_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
...
...
pupitre.py
View file @
9577a5d6
...
@@ -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
=
1
0
)
self
.
btn_mute
.
place
(
width
=
30
,
height
=
32
,
x
=
233
,
y
=
43
0
)
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 no
m
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
p
age_back
(
self
):
# commande de page en arrière
def
p
revious_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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment