Valider 6fe78d84 rédigé par Thorfin89's avatar Thorfin89
Parcourir les fichiers

Importation des données des radios au format CSV

parent 56417da9
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+19 −1
Numéro de ligne d'origine Ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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
- 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
+19 −6
Numéro de ligne d'origine Ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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):
        # 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()

poub.py

0 → 100644
+36 −0
Numéro de ligne d'origine Ligne d'origine Numéro de ligne de diff Ligne de diff
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)
+17 −10
Numéro de ligne d'origine Ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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:


        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:
        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:
        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:
                                   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()
+1 −1
Numéro de ligne d'origine Ligne d'origine Numéro de ligne de diff Ligne de diff
43
100
 No newline at end of file
 No newline at end of file