codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#!/usr/bin/python from __future__ import print_function from functools import partial import RPi.GPIO as GPIO import time import mpd import sys #GPIO, Taster T_PREV = 7 T_NEXT = 13 T_PLAY = 15 MPD_HOST = "localhost" MPD_PORT = 6600 MPD_PASSWORD = False # optional password to connect to MPD sys.setdefaultencoding("utf-8") GPIO.setmode(GPIO.BOARD) GPIO.setup(T_PREV, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(T_NEXT, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(T_PLAY, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) dictionary={} #dictionary['song_title']=' ' dictionary['Volume']=70 dictionary['pause']=0 def interrupt_event(client, pin): if GPIO.input(T_NEXT): client.next() print("next") elif GPIO.input(T_PREV): client.previous() print("prev") elif GPIO.input(T_PLAY): if dictionary['pause'] == 1: dictionary['pause']=0 client.pause(0) print("resume") else: dictionary['pause']=1 client.pause(1) print("pause") def connectMPD(client): try: client.timeout=10 client.idletimeout=None client.connect(MPD_HOST, MPD_PORT) except mpd.ConnectionError, err: if "Already connected" in err: print(err) return True, None else: return False, err if MPD_PASSWORD: try: client.password=MPD_PASSWORD except mpd.CommandError, err: disconnectMPD(client) return False, err return True, None def disconnectMPD(client): try: client.close() client.disconnect() except mpd.ConnectionError: pass def get_songtitle(client): try: PlayCurrent = client.currentsong() except mpd.ConnectionError, e: print('Connection Error: ' + str(e)) connected = connectMPD(client) PlayCurrent = client.currentsong() try: title_name = PlayCurrent['title'] except: title_name = None #dictionary['song_title']=title_name return title_name def get_station(client): try: PlayCurrent = client.currentsong() except mpd.ConnectionError, e: print('Connection Error: ' + str(e)) connected = connectMPD(client) PlayCurrent = client.currentsong() try: station_name = PlayCurrent['name'] except: station_name = None if not station_name: try: station_name = PlayCurrent['album'] except: station_name = None if not station_name: station_name = None return station_name def scroll(client): title = get_songtitle(client).decode('utf-8', errors='ignore') #sender = get_station(client).decode('utf-8', errors='ignore') if title and len(title) > 16: for i in range (0, len(title)): lcd(1, title[i:(i+15)]) time.sleep(0.4) if __name__ == '__main__': try: client = mpd.MPDClient() connected = connectMPD(client) client.setvol(dictionary['Volume']) GPIO.add_event_detect(T_PREV, GPIO.RISING, callback=partial(interrupt_event, client), bouncetime=200) GPIO.add_event_detect(T_NEXT, GPIO.RISING, callback=partial(interrupt_event, client), bouncetime=200) GPIO.add_event_detect(T_PLAY, GPIO.RISING, callback=partial(interrupt_event, client), bouncetime=200) print("Ready!") while True: scroll(client) except (KeyboardInterrupt, SystemExit): print("\nQuit\n") GPIO.cleanup()
Private
[
?
]
Run code
Submit