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
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 :
#### Doc python-vlc :
- https://www.olivieraubert.net/vlc/python-ctypes/doc/vlc.MediaPlayer-class.html
......@@ -14,7 +29,10 @@ Pour toute information : thorfin89@free.fr
- https://www.youtube.com/watch?v=n1ucrkly2nc
#### 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 :
- http://tkinter.fdex.eu/index.html
......
......@@ -2,11 +2,11 @@
# Fichier : main.py
# Auteur : Daniel SAZERAT (thorfin89@free.fr)
# import vlc > sudo pip3 install python-vlc
# import ----------------------------------
import csv
from rw_pupitre import Pupitre
# installer le paquet python-vlc : sudo pip3 install python-vlc
from vlc import Instance
......@@ -32,19 +32,32 @@ class Radio(Pupitre):
# on récupère la valeur du potentiomètre de volume
vol_audio = int(vol_potar)
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.write(vol_potar) # le niveau du volume est enregistré
sauvegarde.write(vol_potar)
sauvegarde.close()
def radio_mute(self): # coupure du son
self.player.audio_set_volume(0)
def radio_sound(self): # rétablissement du son
lecture = open("webradiopi.cfg", "r") # on charge configuration sauvegardée
volume_init = int(lecture.read())
lecture.close()
config_file = open("webradiopi.cfg", "r") # on charge configuration sauvegardée
volume_init = int(config_file.read())
config_file.close()
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.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 @@
import tkinter as tk
from tkinter import ttk, Scale, HORIZONTAL, CENTER, LEFT, RIGHT, TOP
global mute
mute = False
mute = False # le son n'est pas coupé au démarrage
# classes ---------------------------------
......@@ -31,9 +30,6 @@ class Pupitre:
self.zones()
def boucle(self):
self.root.mainloop()
# noinspection PyTypeChecker
def zones(self):
# fenêtre Haute : Titre / Menu > dim 800x80
......@@ -48,13 +44,15 @@ class Pupitre:
menu = tk.Frame(self.root, width="300", height="400", bg="#D9D9D9")
menu.pack(side=RIGHT, expand='True')
# Position d'origine du menu
x_menu = 0
y_menu = 240
# définition d'un style commun à tous les bouton
style = ttk.Style()
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.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")
......@@ -67,9 +65,11 @@ class Pupitre:
btn_stop.place(width=30, height=30, x=x_menu + 225, y=y_menu + 0)
# 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()
lecture.close()
# - affichage du potentiomètre de volume
vol_potar = Scale(menu, from_=0, to=100, tickinterval=20, orient=HORIZONTAL, length=200, label="Volume",
command=self.volume)
vol_potar.set(volume_init)
......@@ -80,17 +80,24 @@ class Pupitre:
style="BW.TLabel")
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.place(width=300, height=16, x=x_menu + 0, y=y_menu + 140)
def switch_sound(self):
# bascule on/off du son
global mute
if not 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
else:
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
def boucle(self):
self.radios_display()
self.root.mainloop()
43
\ No newline at end of file
100
\ 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