59 lines
1.4 KiB
Python
59 lines
1.4 KiB
Python
from pirc522 import RFID
|
|
from glob import glob
|
|
|
|
import atexit
|
|
import os
|
|
import time
|
|
import signal
|
|
import subprocess
|
|
import vlc
|
|
|
|
rdr = RFID()
|
|
util = rdr.util()
|
|
|
|
last_seen = None
|
|
seen_at = 0
|
|
p = None
|
|
|
|
RETRY_TIME = 2
|
|
|
|
#player = subprocess.Popen(["mpg321", "-R", "-"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
player = subprocess.Popen(["mpg321", "-R", "-"], stdin=subprocess.PIPE)
|
|
player.stdin.write("GAIN 100")
|
|
|
|
try:
|
|
while True:
|
|
(error, tag_type) = rdr.request()
|
|
if not error:
|
|
(error, uid) = rdr.anticoll()
|
|
if not error:
|
|
tag_id = ''.join(hex(x)[2:].zfill(2) for x in uid)
|
|
print("Tag: " + tag_id)
|
|
|
|
if tag_id == 'b9506555d9':
|
|
print("Stopping playback.")
|
|
player.stdin.write("STOP\n")
|
|
continue
|
|
|
|
if time.time() > (seen_at + RETRY_TIME):
|
|
last_seen = uid
|
|
seen_at = time.time()
|
|
|
|
if tag_id == 'aa89665510':
|
|
print("Toggling pause.")
|
|
player.stdin.write("PAUSE\n")
|
|
continue
|
|
|
|
file = glob("media/" + tag_id + " - *.mp3")
|
|
if file:
|
|
print("Playing file " + file[0])
|
|
player.stdin.write("STOP\n")
|
|
player.stdin.write("LOAD " + file[0] + "\n")
|
|
|
|
continue
|
|
except (KeyboardInterrupt, SystemExit):
|
|
os.kill(player.pid, signal.SIGTERM)
|
|
|
|
# Calls GPIO cleanup
|
|
rdr.cleanup()
|