Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from threading import Thread
- import vlc
- from gi.repository import GObject
- import helpers.search
- class Player(Thread):
- def __init__(self, parent):
- super(Player, self).__init__()
- self.parent = parent
- self.stop = False
- self.init()
- def init(self):
- self.vlcInstance = vlc.Instance("--no-xlib")
- self.player = self.vlcInstance.media_player_new()
- def run(self):
- self.url = helpers.search.get_youtube_streams('lAHmsQSSEv8')
- self.player.set_mrl(self.url['audio'])
- self.player.play()
- self.parent.playback_button.set_image(self.parent.pause_image)
- self.is_player_active = True
- GObject.timeout_add(1000, self.timing)
- def stop_player(self, widget, data=None):
- self.player.stop()
- self.is_player_active = False
- parent.playback_button.set_image(self.play_image)
- self.player.set_position(0.0)
- def on_slider_changed(self, range):
- length = parent.slider.get_value()
- self.player.set_position(length / 100.0)
- def toggle_player_playback(self, widget, data=None):
- if self.is_player_active == False and self.player_paused == False:
- self.player.play()
- parent.playback_button.set_image(self.pause_image)
- self.is_player_active = True
- elif self.is_player_active == True and self.player_paused == True:
- self.player.play()
- parent.playback_button.set_image(self.pause_image)
- self.player_paused = False
- elif self.is_player_active == True and self.player_paused == False:
- self.player.pause()
- parent.playback_button.set_image(self.play_image)
- self.player_paused = True
- else:
- pass
- def timing(self):
- if self.updateFullTime:
- self._m, self._s = divmod(int(self.player.get_length() / 1000), 60)
- self._h, self._m = divmod(self._m, 60)
- self.full_time_human = "%d:%02d:%02d" % (self._h, self._m, self._s)
- self.updateFullTime = False
- m, s = divmod(int(self.player.get_time() / 1000), 60)
- h, m = divmod(m, 60)
- self.con_time_human = "%d:%02d:%02d" % (h, m, s)
- # if stream ended
- if self.full_time_human == self.con_time_human:
- self.player.stop()
- self.is_player_active = False
- self.playback_button.set_image(self.play_image)
- self.player.set_position(0.0)
- length = self.player.get_position()
- parent.track_time.set_markup('<span font="Roboto 24" weight="100">'+self.con_time_human+'</span>')
- parent.slider.handler_block(self.slider_update_signal_id)
- parent.slider.set_value(length * 100.0)
- parent.slider.handler_unblock(self.slider_update_signal_id)
- return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement