-
Notifications
You must be signed in to change notification settings - Fork 0
/
radioControl.py
106 lines (88 loc) · 4.03 KB
/
radioControl.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import subprocess
from streams import Streams
class RadioControl():
def __init__(self):
''' Constructor. '''
self.statusThread = None
self.piFaceThread = None
self.stationIdx = 0
self.streams = Streams()
def getNextListItem(self):
if self.stationIdx >= len(self.streams.get()) - 1:
self.stationIdx = 0
else:
self.stationIdx += 1
return self.streams.get()[self.stationIdx]
def getPrevListItem(self):
if self.stationIdx == 0:
self.stationIdx = len(self.streams.get()) - 1
else:
self.stationIdx -= 1
return self.streams.get()[self.stationIdx]
def getCurrentListItem(self):
return self.streams.get()[self.stationIdx]
def nextOnList(self):
if not self.getCurrentListItem()['isRadio']:
print('Next track...')
self.piFaceThread.enableBacklight()
subprocess.Popen(['mocp', '-f'])
def prevOnList(self):
if not self.getCurrentListItem()['isRadio']:
print('Prev track...')
self.piFaceThread.enableBacklight()
subprocess.Popen(['mocp', '-r'])
def play_pause(self, event=None):
self.piFaceThread.enableBacklight()
if self.statusThread.playbackState == 'PLAY':
self.pause()
if self.statusThread.playbackState == 'PAUSE' or self.statusThread.playbackState == 'STOP':
self.play()
def play(self, event=None):
print('Playing...')
if self.statusThread.playbackState == 'PAUSE':
subprocess.Popen(['mocp', '--unpause'], shell=False)
else:
self.startNewListPlayBack(self.getCurrentListItem()['stream'])
self.piFaceThread.settings.set({'stationIdx': self.stationIdx, 'state': 'PLAY'})
def stop(self, event=None):
print('Stopping...')
subprocess.Popen(['mocp', '--stop'], shell=False)
self.piFaceThread.settings.set({'stationIdx': self.stationIdx, 'state': 'STOP'})
def pause(self, event=None):
print('Pausing...')
subprocess.Popen(['mocp', '--pause'], shell=False)
self.piFaceThread.settings.set({'stationIdx': self.stationIdx, 'state': 'PAUSE'})
def retry_playback(self, event=None):
self.piFaceThread.enableBacklight()
print('Retry playback...')
subprocess.Popen(['mocp', '--stop'], shell=False)
subprocess.Popen(['mocp', '--clear'], shell=False)
self.startNewListPlayBack(self.getCurrentListItem()['stream'])
def next(self, event=None):
self.piFaceThread.enableBacklight()
nextListItem = self.getNextListItem()
print('Next... ' + nextListItem['name'])
subprocess.Popen(['mocp', '--stop'], shell=False)
subprocess.Popen(['mocp', '--clear'], shell=False)
self.startNewListPlayBack(nextListItem['stream'])
self.piFaceThread.settings.set({'stationIdx': self.stationIdx, 'state': 'PLAY'})
self.piFaceThread.writeSecondLine("Loading...")
def previous(self, event=None):
self.piFaceThread.enableBacklight()
prevListItem = self.getPrevListItem()
print('Previous... ' + prevListItem['name'])
subprocess.Popen(['mocp', '--stop'], shell=False)
subprocess.Popen(['mocp', '--clear'], shell=False)
self.startNewListPlayBack(prevListItem['stream'])
self.piFaceThread.settings.set({'stationIdx': self.stationIdx, 'state': 'PLAY'})
self.piFaceThread.writeSecondLine("Loading...")
def volumeUp(self, event=None):
self.piFaceThread.enableBacklight()
subprocess.Popen(['amixer', 'set', 'PCM', '1000+'], shell=False)
self.piFaceThread.writeSecondLine("Volume up...")
def volumeDown(self, event=None):
self.piFaceThread.enableBacklight()
subprocess.Popen(['amixer', 'set', 'PCM', '1000-'], shell=False)
self.piFaceThread.writeSecondLine("Volume down...")
def startNewListPlayBack(self, listItem):
subprocess.Popen(['mocp', '-a', listItem, '-c', '-p', '-o', 'shuffle,repeat'])