From b690a3d45e479231ce91f3a5e52571fb2df76fe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Je=CC=81re=CC=81mie=20DUCASTEL?= Date: Sat, 2 Jan 2021 00:12:19 +0100 Subject: [PATCH] test + vumetre pixel rudimentaire --- README.md | 10 +++- folderplayer.py | 6 +++ test.py | 125 +++++++++++++++++++++++++++++++----------------- 3 files changed, 97 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index cedc40d..577ed6e 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Projet / roadmap : - Possibilité de basculer entre radio / fichiers mp3 ? - [lib phat beat](https://pypi.org/project/phatbeat/) + 2. téléchargement d'une playlist deezer - compte + profil deezer comme source de musique via [deezer-python](https://github.com/browniebroke/deezer-python) et/ou [pydeezer](https://github.com/Chr1st-oo/pydeezer) @@ -20,7 +21,14 @@ Projet / roadmap : 3. interface web ? - serveur / interface web permettant de piloter le lecteur + les téléchargements +## roadmap bis ? -A regarder ? +1. lecture de playlists locales (fichiers .m3u), possibilité de basculer d'une playlist à la suivante avec le bouton on/off ? +2. construction de playlist de fichiers locaux par scan d'un dossier +3. interface web pour construire des playlists, depuis fichier local et/ou deezer etc ? + +## A regarder ? - https://pad.p2p.legal/s/rec-machine +- [creation de playlist .m3u avec python](https://github.com/TaylorMonacelli/python-create-m3u-playlist-from-directory/blob/master/main.py) +- diff --git a/folderplayer.py b/folderplayer.py index e16e9bc..e0770ff 100644 --- a/folderplayer.py +++ b/folderplayer.py @@ -31,6 +31,12 @@ class FolderPlayer: def pause(self): self.list_player.pause() + def play_pause(self): + if self.list_player.is_playing(): + self.pause() + else: + self.play() + def next(self): self.list_player.next() self.display_title() diff --git a/test.py b/test.py index ed3e5a3..0db328c 100644 --- a/test.py +++ b/test.py @@ -1,47 +1,86 @@ -import os, random, vlc, phatbeat, time, signal +import phatbeat, signal +from folderplayer import FolderPlayer + +player = FolderPlayer("/home/jducastel/music") + +def show_volume(volume): + phatbeat.clear() + level = round(volume*8/100); print(f"level {level}") + for i in range(0,8): # resetting + if level > i: + phatbeat.set_pixel(7-i, 128,128,128,channel=0) + phatbeat.set_pixel(7-i, 128,128,128,channel=1) + phatbeat.show() + +@phatbeat.on(phatbeat.BTN_FASTFWD) +def fast_forward(pin): + global player + player.next() -class VLCdriver(): - - def __init__(self): - self.files = [] - self.vlc_instance = vlc.Instance() - self.vlc_player = self.vlc_instance.media_player_new() - self.is_playing = False - - def load_folder(self, folder): - # get list of files in music_dir - self.files = [ os.path.join(folder, f) for f in os.listdir(folder) if os.path.isfile(os.path.join(folder,f)) and f.endswith('.mp3') ] - print(f"loaded {folder}") - - def play_file(self, path): - print(f"playing {path}") - self.media = self.vlc_instance.media_new(path) - self.vlc_player.set_media(self.media) - self.vlc_player.play() - self.is_playing = True - - def play_random(self): - path = random.choice(self.files) - self.play_file(path) - - @phatbeat.on(phatbeat.BTN_FASTFWD) - def fast_forward(pin): - self.play_random() - time.sleep(1) - - @phatbeat.on(phatbeat.BTN_PLAYPAUSE) - def play_pause(pin): - if self.is_playing: - self.player.stop() - self.is_playing = False - else: - self.player.play() - self.is_playing = True - time.sleep(1) +# @phatbeat.hold(phatbeat.BTN_FASTFWD, hold_time=2) +# def hold_fast_forward(pin): +# print("FF Held") -d = VLCdriver() -d.load_folder('/home/jducastel/music/') -d.play_random() -signal.pause() +@phatbeat.on(phatbeat.BTN_PLAYPAUSE) +def play_pause(pin): + global player + player.play_pause() + + +# @phatbeat.hold(phatbeat.BTN_PLAYPAUSE, hold_time=2) +# def hold_play_pause(pin): +# print("PP Held") + + +@phatbeat.on(phatbeat.BTN_VOLUP) +def volume_up(pin): + global player + player.volume_up(12) + show_volume(player.get_volume()) + +# @phatbeat.hold(phatbeat.BTN_VOLUP) +# def hold_volume_up(pin): +# print("VU Held") + + +@phatbeat.on(phatbeat.BTN_VOLDN) +def volume_down(pin): + global player + player.volume_down(12) + show_volume(player.get_volume()) + +# @phatbeat.hold(phatbeat.BTN_VOLDN) +# def hold_volume_down(pin): +# print("VD Held") + + +@phatbeat.on(phatbeat.BTN_REWIND) +def rewind(pin): + global player + player.previous() + + +# @phatbeat.hold(phatbeat.BTN_REWIND) +# def hold_rewind(btn): +# print("RR Held") + + +# @phatbeat.on(phatbeat.BTN_ONOFF) +# def onoff(pin): +# print("OO Pressed") +# +# +# @phatbeat.hold(phatbeat.BTN_ONOFF) +# def hold_onoff(pin): +# print("OO Held") + +try: + player.play() + player.set_volume(24) + show_volume(player.get_volume()) + signal.pause() +except KeyboardInterrupt: + print("bye !") + exit()