Commit 6fe78d84 authored by Thorfin89's avatar Thorfin89

Importation des données des radios au format CSV

parent 56417da9
...@@ -4,6 +4,21 @@ Lecteur de radios internet ...@@ -4,6 +4,21 @@ Lecteur de radios internet
Pour toute information : thorfin89@free.fr Pour toute information : thorfin89@free.fr
### Importation des radios au format CSV :
```python
def radios_display(self): # récupération de la liste des radios (+infos)
with open("./data/radios.csv", 'r', encoding='utf8') as radios_file:
radios_list = csv.DictReader(radios_file)
radios_list = [dict(ligne) for ligne in radios_list] # transforme en liste de dictionnaires
# print(radios_dico)
nb_radios = (len(radios_list)) # détermine le nombre de radios (dictionnaires)
print(radios_list[3]['Nom']) # extrait le nom de la 4ème radio
for c in range(nb_radios): # affiche la liste des 14 radios
print(radios_list[c]['Nom'])
```
### SOURCES : ### SOURCES :
#### Doc python-vlc : #### Doc python-vlc :
- https://www.olivieraubert.net/vlc/python-ctypes/doc/vlc.MediaPlayer-class.html - https://www.olivieraubert.net/vlc/python-ctypes/doc/vlc.MediaPlayer-class.html
...@@ -14,7 +29,10 @@ Pour toute information : thorfin89@free.fr ...@@ -14,7 +29,10 @@ Pour toute information : thorfin89@free.fr
- https://www.youtube.com/watch?v=n1ucrkly2nc - https://www.youtube.com/watch?v=n1ucrkly2nc
#### Afficher les informations sur la radio #### Afficher les informations sur la radio
https://github.com/oaubert/python-vlc/issues/72 - https://github.com/oaubert/python-vlc/issues/72
#### Fichiers csv
- https://www.youtube.com/watch?v=sgUSSa7N9ec
#### Doc tkinter : #### Doc tkinter :
- http://tkinter.fdex.eu/index.html - http://tkinter.fdex.eu/index.html
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
# Fichier : main.py # Fichier : main.py
# Auteur : Daniel SAZERAT (thorfin89@free.fr) # Auteur : Daniel SAZERAT (thorfin89@free.fr)
# import vlc > sudo pip3 install python-vlc
# import ---------------------------------- # import ----------------------------------
import csv
from rw_pupitre import Pupitre from rw_pupitre import Pupitre
# installer le paquet python-vlc : sudo pip3 install python-vlc
from vlc import Instance from vlc import Instance
...@@ -32,19 +32,32 @@ class Radio(Pupitre): ...@@ -32,19 +32,32 @@ class Radio(Pupitre):
# on récupère la valeur du potentiomètre de volume # on récupère la valeur du potentiomètre de volume
vol_audio = int(vol_potar) vol_audio = int(vol_potar)
self.player.audio_set_volume(vol_audio) self.player.audio_set_volume(vol_audio)
# le niveau du volume est enregistré dans webrafio.cfg
# pour le le reprendre au prochain lancement de l'application
sauvegarde = open("webradiopi.cfg", "w") sauvegarde = open("webradiopi.cfg", "w")
sauvegarde.write(vol_potar) # le niveau du volume est enregistré sauvegarde.write(vol_potar)
sauvegarde.close() sauvegarde.close()
def radio_mute(self): # coupure du son def radio_mute(self): # coupure du son
self.player.audio_set_volume(0) self.player.audio_set_volume(0)
def radio_sound(self): # rétablissement du son def radio_sound(self): # rétablissement du son
lecture = open("webradiopi.cfg", "r") # on charge configuration sauvegardée config_file = open("webradiopi.cfg", "r") # on charge configuration sauvegardée
volume_init = int(lecture.read()) volume_init = int(config_file.read())
lecture.close() config_file.close()
self.player.audio_set_volume(volume_init) self.player.audio_set_volume(volume_init)
def radios_display(self): # récupération de la liste des radios (+infos)
with open("./data/radios.csv", 'r', encoding='utf8') as radios_file:
radios_list = csv.DictReader(radios_file)
radios_list = [dict(ligne) for ligne in radios_list] # transforme en liste de dictionnaires
# print(radios_dico)
nb_radios = (len(radios_list)) # détermine le nombre de radios (dictionnaires)
print(radios_list[3]['Nom']) # extrait le nom de la 4ème radio
for c in range(nb_radios): # affiche la liste des 14 radios
print(radios_list[c]['Nom'])
app = Radio() # instancie l'application app = Radio() # instancie l'application
app.boucle() app.boucle()
from time import sleep
from vlc import EventType, Media, MediaPlayer, MediaParseFlag, Meta
def _media_cb(event, *unused):
# XXX callback ... never called
print(event)
p = MediaPlayer()
# cmd1 = "sout=file/ts:%s" % outfile
media = Media("http://live.leanstream.co/CJOTFM-MP3") # , cmd1)
# media.get_mrl()
p.set_media(media)
p.play()
e = p.event_manager()
e.event_attach(EventType.MediaMetaChanged, _media_cb, media)
e.event_attach(EventType.MediaParsedChanged, _media_cb, media)
# define the meta data to show
meta = {Meta.Album: None,
Meta.Genre: None,
Meta.NowPlaying: None}
while True: # loop forever
# XXX using MediaParseFlag.local is not any different
media.parse_with_options(MediaParseFlag.network, 2) # 2 sec timeout
# XXX media.get_parsed_status() always returns .skipped
for k in meta.keys():
v = media.get_meta(k)
if v != meta[k]:
# print("{} - {}".format(k, v))
print("{}".format(v))
meta[k] = v
sleep(2)
...@@ -6,8 +6,7 @@ ...@@ -6,8 +6,7 @@
import tkinter as tk import tkinter as tk
from tkinter import ttk, Scale, HORIZONTAL, CENTER, LEFT, RIGHT, TOP from tkinter import ttk, Scale, HORIZONTAL, CENTER, LEFT, RIGHT, TOP
global mute mute = False # le son n'est pas coupé au démarrage
mute = False
# classes --------------------------------- # classes ---------------------------------
...@@ -31,9 +30,6 @@ class Pupitre: ...@@ -31,9 +30,6 @@ class Pupitre:
self.zones() self.zones()
def boucle(self):
self.root.mainloop()
# noinspection PyTypeChecker # noinspection PyTypeChecker
def zones(self): def zones(self):
# fenêtre Haute : Titre / Menu > dim 800x80 # fenêtre Haute : Titre / Menu > dim 800x80
...@@ -48,13 +44,15 @@ class Pupitre: ...@@ -48,13 +44,15 @@ class Pupitre:
menu = tk.Frame(self.root, width="300", height="400", bg="#D9D9D9") menu = tk.Frame(self.root, width="300", height="400", bg="#D9D9D9")
menu.pack(side=RIGHT, expand='True') menu.pack(side=RIGHT, expand='True')
# Position d'origine du menu
x_menu = 0 x_menu = 0
y_menu = 240 y_menu = 240
# définition d'un style commun à tous les bouton
style = ttk.Style() style = ttk.Style()
style.configure("BW.TLabel", foreground="black", background="#D9D9D9") style.configure("BW.TLabel", foreground="black", background="#D9D9D9")
# boutons de commande # affichage des boutons de commande : back, pause, play, stop, forward
btn_play = ttk.Button(menu, image=self.icon_back, text="Back", command=None, style="BW.TLabel") btn_play = ttk.Button(menu, image=self.icon_back, text="Back", command=None, style="BW.TLabel")
btn_play.place(width=30, height=30, x=x_menu + 45, y=y_menu + 0) btn_play.place(width=30, height=30, x=x_menu + 45, y=y_menu + 0)
btn_play = ttk.Button(menu, image=self.icon_pause, text="Pause", command=self.radio_pause, style="BW.TLabel") btn_play = ttk.Button(menu, image=self.icon_pause, text="Pause", command=self.radio_pause, style="BW.TLabel")
...@@ -67,9 +65,11 @@ class Pupitre: ...@@ -67,9 +65,11 @@ class Pupitre:
btn_stop.place(width=30, height=30, x=x_menu + 225, y=y_menu + 0) btn_stop.place(width=30, height=30, x=x_menu + 225, y=y_menu + 0)
# potentiomètre de volume # potentiomètre de volume
lecture = open("webradiopi.cfg", "r") # on charge configuration sauvegardée # - on charge la configuration du volume sauvegardée
lecture = open("webradiopi.cfg", "r")
volume_init = lecture.read() volume_init = lecture.read()
lecture.close() lecture.close()
# - affichage du potentiomètre de volume
vol_potar = Scale(menu, from_=0, to=100, tickinterval=20, orient=HORIZONTAL, length=200, label="Volume", vol_potar = Scale(menu, from_=0, to=100, tickinterval=20, orient=HORIZONTAL, length=200, label="Volume",
command=self.volume) command=self.volume)
vol_potar.set(volume_init) vol_potar.set(volume_init)
...@@ -80,17 +80,24 @@ class Pupitre: ...@@ -80,17 +80,24 @@ class Pupitre:
style="BW.TLabel") style="BW.TLabel")
self.btn_mute.place(width=30, height=30, x=x_menu + 245, y=y_menu + 70) self.btn_mute.place(width=30, height=30, x=x_menu + 245, y=y_menu + 70)
# info appli # affichage de l'info sur l'application dans le bas
lbl_info = ttk.Label(menu, text="WebRadioPi © Thorfin89", anchor=CENTER) lbl_info = ttk.Label(menu, text="WebRadioPi © Thorfin89", anchor=CENTER)
lbl_info.place(width=300, height=16, x=x_menu + 0, y=y_menu + 140) lbl_info.place(width=300, height=16, x=x_menu + 0, y=y_menu + 140)
def switch_sound(self): def switch_sound(self):
# bascule on/off du son
global mute global mute
if not mute: if not mute:
self.radio_mute() self.radio_mute()
self.btn_mute.config(image=self.icon_mute) self.btn_mute.config(image=self.icon_mute) # affichage "logo sound off"
mute = True mute = True
else: else:
self.radio_sound() self.radio_sound()
self.btn_mute.config(image=self.icon_sound) self.btn_mute.config(image=self.icon_sound) # affichage "logo sound on"
mute = False mute = False
def boucle(self):
self.radios_display()
self.root.mainloop()
43 100
\ No newline at end of file \ No newline at end of file
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