-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
53 lines (38 loc) · 1.74 KB
/
main.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
import logging
import playerctl
from playerctl.items import main_page_items, player_page_items
from ulauncher.api.client.Extension import Extension
from ulauncher.api.client.EventListener import EventListener
from ulauncher.api.shared.event import KeywordQueryEvent, ItemEnterEvent
from ulauncher.api.shared.action.RenderResultListAction import RenderResultListAction
logger = logging.getLogger(__name__)
class PlayerctlExtension(Extension):
def __init__(self):
super(PlayerctlExtension, self).__init__()
self.subscribe(KeywordQueryEvent, KeywordQueryEventListener())
self.subscribe(ItemEnterEvent, ItemEnterEventListener())
class KeywordQueryEventListener(EventListener):
def on_event(self, event, extension):
items = []
keyword = event.get_keyword()
extension.logger.debug(f'log preference {extension.preferences}')
if keyword == extension.preferences['playerctl_kw']:
items = main_page_items()
elif keyword == extension.preferences['playerctl_def_kw']:
items = player_page_items(extension.preferences['playerctl_def_player'])
return RenderResultListAction(items)
class ItemEnterEventListener(EventListener):
def on_event(self, event, extension):
data = event.get_data()
player = data.get('name')
action = data.get('action')
if action == 'player_page':
return RenderResultListAction(player_page_items(player))
elif action == 'play-pause':
playerctl.play_pause(player)
elif action == 'next':
playerctl.next_song(player)
elif action == 'previous':
playerctl.previous_song(player)
if __name__ == '__main__':
PlayerctlExtension().run()