Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import gi
- import ipdb
- import evdev
- from itertools import cycle
- gi.require_version('Gst', '1.0')
- from gi.repository import GObject, Gst
- # You should call GObject.threads_init() in your module-scope,
- # right after your imports. Unlike the static bindings, you also need to call
- # Gst.init()
- GObject.threads_init()
- Gst.init(None)
- # Grab user keyboard
- USER_KEYBOARD = evdev.InputDevice('/dev/input/event2')
- with open("radio_stations.txt") as f:
- MUSIC_STREAM_URI = f.readlines()
- # To cycle
- MUSIC_STREAM_URI = cycle(MUSIC_STREAM_URI)
- def change_state_player(Player):
- if Player.get_state(0)[1] == Gst.State.PAUSED:
- Player.set_state(Gst.State.PLAYING)
- else:
- Player.set_state(Gst.State.PAUSED)
- def next_radiostation(Player):
- Player.set_state(Gst.State.READY)
- Player.set_property('uri', next(MUSIC_STREAM_URI))
- Player.set_state(Gst.State.PLAYING)
- # Create a player object
- player = Gst.ElementFactory.make("playbin", "player")
- # Play first radiostation from list
- next_radiostation(player)
- for event in USER_KEYBOARD.read_loop():
- if event.type == evdev.ecodes.EV_KEY:
- event_data = evdev.categorize(event)
- # If user PRESS PLAY/PAUSE button, we PLAY/PAUSE player
- if event_data.scancode == 164 and event_data.keystate == 0x01:
- change_state_player(player)
- # If user PRESS NEXT button
- if event_data.scancode == 163 and event_data.keystate == 0x01:
- next_radiostation(player)
Advertisement
Add Comment
Please, Sign In to add comment