/ Playing_Sounds_and_Using_Buttons_with_Raspberry_Pi / simple-jukebox.py
simple-jukebox.py
1 # SPDX-FileCopyrightText: 2018 Mikey Sklar for Adafruit Industries 2 # 3 # SPDX-License-Identifier: MIT 4 5 # This script requires a Raspberry Pi 2, 3 or Zero. Circuit Python must 6 # be installed and it is strongly recommended that you use the latest 7 # release of Raspbian. 8 9 import time 10 from os import listdir 11 import subprocess 12 import board 13 import digitalio 14 15 button1 = digitalio.DigitalInOut(board.D23) 16 button1.direction = digitalio.Direction.INPUT 17 button1.pull = digitalio.Pull.UP 18 19 button2 = digitalio.DigitalInOut(board.D24) 20 button2.direction = digitalio.Direction.INPUT 21 button2.pull = digitalio.Pull.UP 22 23 button3 = digitalio.DigitalInOut(board.D25) 24 button3.direction = digitalio.Direction.INPUT 25 button3.pull = digitalio.Pull.UP 26 27 mp3_files = [ f for f in listdir('.') if f[-4:] == '.mp3' ] 28 29 if not len(mp3_files) > 0: 30 print("No mp3 files found!") 31 32 print('--- Available mp3 files ---') 33 print(mp3_files) 34 print('--- Press button #1 to select mp3, button #2 to play current. ---') 35 36 index = 0 37 while True: 38 if not button1.value: 39 index += 1 40 if index >= len(mp3_files): 41 index = 0 42 print("--- " + mp3_files[index] + " ---") 43 44 if not button2.value: 45 subprocess.Popen(['omxplayer', mp3_files[index]]) 46 print('--- Playing ' + mp3_files[index] + ' ---') 47 print('--- Press button #3 to clear playing mp3s. ---') 48 time.sleep(0.25) 49 50 if not button3.value: 51 subprocess.call(['killall', 'omxplayer']) 52 print('--- Cleared all existing mp3s. ---') 53 54 time.sleep(0.25)