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
38496142
Commit
38496142
authored
Feb 06, 2023
by
Thorfin89
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Info OK - reste à soigner l'apparence
parent
76688c27
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
39 additions
and
13 deletions
+39
-13
solutions.md
docs/solutions.md
+0
-2
main.py
main.py
+9
-4
info_now_playing.py
poub/info_now_playing.py
+3
-5
pupitre.py
pupitre.py
+26
-1
webradiopi.cfg
webradiopi.cfg
+1
-1
No files found.
docs/solutions.md
View file @
38496142
...
@@ -161,8 +161,6 @@ radio_flux = Media("http://live.leanstream.co/CJOTFM-MP3") # on définit le flu
...
@@ -161,8 +161,6 @@ radio_flux = Media("http://live.leanstream.co/CJOTFM-MP3") # on définit le flu
player
.
set_media
(
radio_flux
)
# on charge le flux
player
.
set_media
(
radio_flux
)
# on charge le flux
player
.
play
()
# on lance l'écoute de la radio
player
.
play
()
# on lance l'écoute de la radio
info_flux
=
player
.
event_manager
()
# on récupère l'information du flux
memo_info
=
""
# pour mémoriser le titre
memo_info
=
""
# pour mémoriser le titre
while
True
:
# boucle principale
while
True
:
# boucle principale
...
...
main.py
View file @
38496142
...
@@ -4,12 +4,13 @@
...
@@ -4,12 +4,13 @@
# import ----------------------------------
# import ----------------------------------
from
vlc
import
Instance
from
vlc
import
Instance
from
vlc
import
Media
,
MediaPlayer
,
Meta
''' 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 '''
from
pupitre
import
Pupitre
# gestion de l'interface sous Tkinter
from
pupitre
import
Pupitre
# gestion de l'interface sous Tkinter
# classes ---------------------------------
# classes ---------------------------------
...
@@ -21,11 +22,13 @@ class Radio(Pupitre):
...
@@ -21,11 +22,13 @@ class Radio(Pupitre):
def
radio_flux
(
self
,
flux
):
def
radio_flux
(
self
,
flux
):
print
(
flux
)
print
(
flux
)
media
=
self
.
instance
.
media_new
(
flux
)
self
.
media
=
self
.
instance
.
media_new
(
flux
)
self
.
player
.
set_media
(
media
)
self
.
player
.
set_media
(
self
.
media
)
self
.
radio_play
()
self
.
radio_play
()
self
.
now_playing_info
()
def
radio_play
(
self
):
def
radio_play
(
self
):
self
.
radio_on
=
True
self
.
player
.
play
()
self
.
player
.
play
()
def
radio_pause
(
self
):
def
radio_pause
(
self
):
...
@@ -33,6 +36,7 @@ class Radio(Pupitre):
...
@@ -33,6 +36,7 @@ class Radio(Pupitre):
def
flux_stop
(
self
):
def
flux_stop
(
self
):
self
.
player
.
stop
()
self
.
player
.
stop
()
self
.
radio_on
=
False
def
volume
(
self
,
vol_potar
):
def
volume
(
self
,
vol_potar
):
# on récupère la valeur du potentiomètre de volume
# on récupère la valeur du potentiomètre de volume
...
@@ -74,7 +78,8 @@ class Radio(Pupitre):
...
@@ -74,7 +78,8 @@ class Radio(Pupitre):
print
(
self
.
num_radio_selected
)
print
(
self
.
num_radio_selected
)
# changement de page automatique
# 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
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
.
page_back
()
if
self
.
num_radio_selected
==
-
1
:
if
self
.
num_radio_selected
==
-
1
:
...
...
poub/info_now_playing.py
View file @
38496142
...
@@ -2,17 +2,15 @@ from time import sleep
...
@@ -2,17 +2,15 @@ from time import sleep
from
vlc
import
Media
,
MediaPlayer
,
Meta
from
vlc
import
Media
,
MediaPlayer
,
Meta
player
=
MediaPlayer
()
player
=
MediaPlayer
()
radio_flux
=
Media
(
"http://live.leanstream.co/CJOTFM-MP3"
)
# on définit le flux
media
=
Media
(
"http://live.leanstream.co/CJOTFM-MP3"
)
# on définit le flux
player
.
set_media
(
radio_flux
)
# on charge le flux
player
.
set_media
(
media
)
# on charge le flux
player
.
play
()
# on lance l'écoute de la radio
player
.
play
()
# on lance l'écoute de la radio
info_flux
=
player
.
event_manager
()
# on récupère l'information du flux
memo_info
=
""
# pour mémoriser le titre
memo_info
=
""
# pour mémoriser le titre
while
True
:
# boucle principale
while
True
:
# boucle principale
flux_info
=
radio_flux
.
get_meta
(
Meta
.
NowPlaying
)
# on récupère l'info sur le titre actuel
flux_info
=
media
.
get_meta
(
Meta
.
NowPlaying
)
# on récupère l'info sur le titre actuel
if
flux_info
and
flux_info
!=
memo_info
:
# si le titre donné et est différent de celui mémorisé
if
flux_info
and
flux_info
!=
memo_info
:
# si le titre donné et est différent de celui mémorisé
info_display
=
flux_info
[
4
:
len
(
flux_info
)
-
3
]
# on 'nettoie' le titre (caractères au début et à la fin)
info_display
=
flux_info
[
4
:
len
(
flux_info
)
-
3
]
# on 'nettoie' le titre (caractères au début et à la fin)
...
...
pupitre.py
View file @
38496142
...
@@ -7,9 +7,11 @@ import tkinter as tk
...
@@ -7,9 +7,11 @@ import tkinter as tk
from
tkinter
import
ttk
,
Scale
,
HORIZONTAL
from
tkinter
import
ttk
,
Scale
,
HORIZONTAL
from
PIL
import
Image
,
ImageTk
from
PIL
import
Image
,
ImageTk
import
csv
import
csv
from
vlc
import
Media
,
MediaPlayer
,
Meta
mute
=
False
# le son n'est pas coupé au démarrage
mute
=
False
# le son n'est pas coupé au démarrage
bg_color
,
bg_color_light
=
"#206080"
,
"#2F6F8F"
# couleur de fond
radio_on
=
False
# mémorise le fait d'écouter une radio ou pas
bg_color
,
bg_color_light
=
"#206080"
,
"#2F6F8F"
# couleur de fond
# Chargement du fichier CSV contenant les informations : Nom, Pays, Type, Url, Logo
# Chargement du fichier CSV contenant les informations : Nom, Pays, Type, Url, Logo
with
open
(
"./data/radios.csv"
,
'r'
,
encoding
=
'utf-8-sig'
)
as
radios_file
:
with
open
(
"./data/radios.csv"
,
'r'
,
encoding
=
'utf-8-sig'
)
as
radios_file
:
...
@@ -110,6 +112,10 @@ class Pupitre:
...
@@ -110,6 +112,10 @@ class Pupitre:
self
.
lbl_radio_selected
=
ttk
.
Label
(
self
.
menu
,
background
=
bg_color_light
)
self
.
lbl_radio_selected
=
ttk
.
Label
(
self
.
menu
,
background
=
bg_color_light
)
self
.
lbl_radio_selected
.
place
(
width
=
225
,
height
=
225
,
x
=
33
,
y
=
33
)
self
.
lbl_radio_selected
.
place
(
width
=
225
,
height
=
225
,
x
=
33
,
y
=
33
)
# affiche les infos sur le titre en cours d'écoute
self
.
now_playing
=
ttk
.
Label
(
self
.
menu
,
background
=
bg_color_light
)
self
.
now_playing
.
place
(
width
=
240
,
height
=
100
,
x
=
30
,
y
=
300
)
# potentiomètre de volume
# potentiomètre de volume
# - on charge la configuration du volume sauvegardée
# - on charge la configuration du volume sauvegardée
lecture
=
open
(
"webradiopi.cfg"
,
"r"
)
lecture
=
open
(
"webradiopi.cfg"
,
"r"
)
...
@@ -220,5 +226,24 @@ class Pupitre:
...
@@ -220,5 +226,24 @@ class Pupitre:
self
.
lbl_info_radio
.
place
(
width
=
270
,
height
=
30
,
x
=
10
,
y
=
270
)
self
.
lbl_info_radio
.
place
(
width
=
270
,
height
=
30
,
x
=
10
,
y
=
270
)
self
.
lbl_info_radio
.
config
(
bg
=
bg_color
)
self
.
lbl_info_radio
.
config
(
bg
=
bg_color
)
def
now_playing_info
(
self
):
if
self
.
radio_on
:
flux_info
=
self
.
media
.
get_meta
(
Meta
.
NowPlaying
)
# on récupère l'info sur le titre actuel
if
flux_info
:
# on 'nettoie' le titre (caractères au début et à la fin)
info_display
=
flux_info
[
4
:
len
(
flux_info
)
-
3
]
if
info_display
[
0
:
3
]
==
" - "
:
# si l'info commence par un tiret (pub, commentaire...)
info
=
"** "
+
info_display
[
3
:]
+
" **"
else
:
info
=
info_display
self
.
now_playing
.
config
(
text
=
info
)
self
.
root
.
after
(
2000
,
self
.
now_playing_info
)
def
boucle
(
self
):
# boucle principale de tkinter
def
boucle
(
self
):
# boucle principale de tkinter
# self.root.after(2000, self.now_playing_info)
self
.
root
.
mainloop
()
self
.
root
.
mainloop
()
webradiopi.cfg
View file @
38496142
38
42
\ No newline at end of file
\ No newline at end of file
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