Advertisement
Guest User

Untitled

a guest
Jun 9th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.52 KB | None | 0 0
  1. from threading import Thread
  2. import vlc
  3. from gi.repository import GObject
  4. import helpers.search
  5.  
  6. class Player(Thread):
  7.     def __init__(self, parent):
  8.         super(Player, self).__init__()
  9.         self.parent = parent
  10.         self.stop = False
  11.         self.init()
  12.  
  13.     def init(self):
  14.         self.vlcInstance = vlc.Instance("--no-xlib")
  15.         self.player = self.vlcInstance.media_player_new()
  16.  
  17.     def run(self):
  18.         self.url = helpers.search.get_youtube_streams('lAHmsQSSEv8')    
  19.         self.player.set_mrl(self.url['audio'])
  20.         self.player.play()
  21.  
  22.         self.parent.playback_button.set_image(self.parent.pause_image)
  23.         self.is_player_active = True
  24.  
  25.         GObject.timeout_add(1000, self.timing)
  26.  
  27.     def stop_player(self, widget, data=None):
  28.         self.player.stop()
  29.         self.is_player_active = False
  30.         parent.playback_button.set_image(self.play_image)
  31.         self.player.set_position(0.0)
  32.  
  33.     def on_slider_changed(self, range):
  34.         length = parent.slider.get_value()
  35.         self.player.set_position(length / 100.0)
  36.        
  37.     def toggle_player_playback(self, widget, data=None):
  38.         if self.is_player_active == False and self.player_paused == False:
  39.             self.player.play()
  40.             parent.playback_button.set_image(self.pause_image)
  41.             self.is_player_active = True
  42.  
  43.         elif self.is_player_active == True and self.player_paused == True:
  44.             self.player.play()
  45.             parent.playback_button.set_image(self.pause_image)
  46.             self.player_paused = False
  47.  
  48.         elif self.is_player_active == True and self.player_paused == False:
  49.             self.player.pause()
  50.             parent.playback_button.set_image(self.play_image)
  51.             self.player_paused = True
  52.         else:
  53.             pass
  54.        
  55.  
  56.     def timing(self):        
  57.         if self.updateFullTime:
  58.             self._m, self._s = divmod(int(self.player.get_length() / 1000), 60)
  59.             self._h, self._m = divmod(self._m, 60)        
  60.             self.full_time_human = "%d:%02d:%02d" % (self._h, self._m, self._s)
  61.             self.updateFullTime = False
  62.  
  63.         m, s = divmod(int(self.player.get_time() / 1000), 60)
  64.         h, m = divmod(m, 60)
  65.         self.con_time_human = "%d:%02d:%02d" % (h, m, s)
  66.  
  67.         # if stream ended
  68.         if self.full_time_human == self.con_time_human:
  69.             self.player.stop()
  70.             self.is_player_active = False
  71.             self.playback_button.set_image(self.play_image)
  72.             self.player.set_position(0.0)
  73.  
  74.         length = self.player.get_position()        
  75.         parent.track_time.set_markup('<span font="Roboto 24" weight="100">'+self.con_time_human+'</span>')
  76.  
  77.         parent.slider.handler_block(self.slider_update_signal_id)        
  78.         parent.slider.set_value(length * 100.0)
  79.         parent.slider.handler_unblock(self.slider_update_signal_id)
  80.         return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement