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)