mirror of
https://codeberg.org/mclemens/theonebuttonaudiobookplayer.git
synced 2024-09-07 20:24:21 -04:00
init
This commit is contained in:
commit
bf5cadf4e3
130
tobabp.py
Normal file
130
tobabp.py
Normal file
@ -0,0 +1,130 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright (C) 2012 Michael Clemens
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import RPi.GPIO as GPIO
|
||||
import os
|
||||
import pyudev
|
||||
|
||||
from mpd import (MPDClient, CommandError)
|
||||
from socket import error as SocketError
|
||||
from time import sleep
|
||||
|
||||
# Configure MPD connection settings
|
||||
HOST = 'localhost'
|
||||
PORT = '6600'
|
||||
CON_ID = {'host':HOST, 'port':PORT}
|
||||
|
||||
# Configure IO ports
|
||||
BUTTON = 17
|
||||
LED = 24
|
||||
GPIO.setmode(GPIO.BCM)
|
||||
GPIO.setup(BUTTON, GPIO.IN)
|
||||
GPIO.setup(LED, GPIO.OUT)
|
||||
|
||||
## Some functions
|
||||
def mpdConnect(client, con_id):
|
||||
"""
|
||||
Simple wrapper to connect MPD.
|
||||
"""
|
||||
try:
|
||||
client.connect(**con_id)
|
||||
except SocketError:
|
||||
return False
|
||||
return True
|
||||
|
||||
def loadMusic(client, con_id, device):
|
||||
os.system("mount "+device+" /music/usb")
|
||||
os.system("/etc/init.d/mpd stop")
|
||||
os.system("rm /music/mp3/*")
|
||||
os.system("cp /music/usb/* /music/mp3/")
|
||||
os.system("umount /music/usb")
|
||||
os.system("rm /music/mpd/tag_cache")
|
||||
os.system("/etc/init.d/mpd start")
|
||||
os.system("mpc clear")
|
||||
os.system("mpc ls | mpc add")
|
||||
os.system("/etc/init.d/mpd restart")
|
||||
|
||||
def flashLED(speed, time):
|
||||
for x in range(0, time):
|
||||
GPIO.output(LED, GPIO.LOW)
|
||||
sleep(speed)
|
||||
GPIO.output(LED, GPIO.HIGH)
|
||||
sleep(speed)
|
||||
|
||||
def updateLED(client):
|
||||
# adjust LED to actual state
|
||||
if client.status()["state"] == "play":
|
||||
GPIO.output(LED, GPIO.LOW)
|
||||
else:
|
||||
GPIO.output(LED, GPIO.HIGH)
|
||||
|
||||
def checkForUSBDevice(name):
|
||||
res = ""
|
||||
context = pyudev.Context()
|
||||
for device in context.list_devices(subsystem='block', DEVTYPE='partition'):
|
||||
if device.get('ID_FS_LABEL') == name:
|
||||
res = device.device_node
|
||||
return res
|
||||
|
||||
def main():
|
||||
## MPD object instance
|
||||
client = MPDClient()
|
||||
mpdConnect(client, CON_ID)
|
||||
|
||||
status = client.status()
|
||||
print status
|
||||
|
||||
timebuttonisstillpressed = 0
|
||||
|
||||
flashLED(0.1, 5)
|
||||
updateLED(client)
|
||||
|
||||
while True:
|
||||
device = checkForUSBDevice("1GB") # 1GB is the name of my thumb drive
|
||||
if device != "":
|
||||
# USB thumb drive has been inserted, new music will be copied
|
||||
flashLED(0.1, 5)
|
||||
client.disconnect()
|
||||
loadMusic(client, CON_ID, device)
|
||||
mpdConnect(client, CON_ID)
|
||||
print client.status()
|
||||
flashLED(0.1, 5)
|
||||
# wait until thumb drive is umplugged again
|
||||
while checkForUSBDevice("1GB") == device:
|
||||
sleep(1.0)
|
||||
flashLED(0.1, 5)
|
||||
if GPIO.input(BUTTON) == True:
|
||||
if timebuttonisstillpressed == 0:
|
||||
# button has been pressed, pause or unpause now
|
||||
if client.status()["state"] == "stop":
|
||||
client.play()
|
||||
else:
|
||||
client.pause()
|
||||
updateLED(client)
|
||||
elif timebuttonisstillpressed > 4:
|
||||
# go back one track if button is pressed > 4 secs
|
||||
client.previous()
|
||||
flashLED(0.1, 5)
|
||||
timebuttonisstillpressed = 0
|
||||
timebuttonisstillpressed = timebuttonisstillpressed + 0.1
|
||||
else:
|
||||
timebuttonisstillpressed = 0
|
||||
|
||||
sleep(0.1)
|
||||
|
||||
# Script starts here
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in New Issue
Block a user