Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.13 KB | None | 0 0
  1. show_titles = ['']
  2.  
  3.  
  4. base_url = 'https://www.watchcartoononline.com/anime/'
  5.  
  6.  
  7. chrome_options = Options()
  8. chrome_options.add_argument("--headless")
  9. driver = webdriver.Chrome(chrome_options=chrome_options);
  10.  
  11. # uses random.choice to pick a random episode from a random title in show_titles[]
  12. def get_src_of_rand_video():
  13. _url = base_url+random.choice(show_titles)
  14. uClient = uReq(_url)
  15. page_soup = soup(uClient.read(), "html.parser")
  16. uClient.close()
  17. episodes = page_soup.select("div.cat-eps a.sonra")
  18. link = random.choice(episodes).get('href')
  19. #get video source
  20. driver.get(link)
  21. iframes = driver.find_elements_by_tag_name('iframe')
  22. driver.switch_to.frame(1)
  23. src = driver.find_element_by_id('video-js').find_element_by_tag_name('source').get_attribute('src')
  24. return src
  25.  
  26. class ApplicationWindow(Gtk.Window):
  27. def __init__(self):
  28. Gtk.Window.__init__(self, title="Python-Vlc Media Player")
  29. self.player_paused=False
  30. self.is_player_active = False
  31. self.connect("destroy",Gtk.main_quit)
  32. self.isFullscreen = False
  33.  
  34. def show(self):
  35. self.show_all()
  36.  
  37. def position_changed(self, adj):
  38. self.player.set_position(0.01*self.positioner.get_value())
  39.  
  40. def setup_objects_and_events(self):
  41. self.connect("key-press-event",self._key_press_event)
  42. self.playback_button = Gtk.Button()
  43. self.stop_button = Gtk.Button()
  44. self.update_button = Gtk.Button()
  45. #scale for seeking video position
  46. self.positioner = Gtk.Scale(orientation=Gtk.Orientation.HORIZONTAL,
  47. adjustment=Gtk.Adjustment(0, 0, 100, 1, 5, 0))
  48. self.positioner.set_digits(0)
  49. self.positioner.set_hexpand(True)
  50. self.positioner.set_valign(Gtk.Align.END)
  51. self.positioner.connect("value-changed", self.position_changed)
  52.  
  53. self.play_image = Gtk.Image.new_from_icon_name(
  54. "gtk-media-play",
  55. Gtk.IconSize.MENU
  56. )
  57. self.pause_image = Gtk.Image.new_from_icon_name(
  58. "gtk-media-pause",
  59. Gtk.IconSize.MENU
  60. )
  61. self.stop_image = Gtk.Image.new_from_icon_name(
  62. "gtk-media-stop",
  63. Gtk.IconSize.MENU
  64. )
  65. self.update_image = Gtk.Image.new_from_icon_name(
  66. "gtk-media-update",
  67. Gtk.IconSize.MENU
  68. )
  69. self.playback_button.set_image(self.play_image)
  70. self.stop_button.set_image(self.stop_image)
  71. self.update_button.set_image(self.update_image)
  72.  
  73.  
  74. self.playback_button.connect("clicked", self.toggle_player_playback)
  75. self.stop_button.connect("clicked", self.stop_player)
  76. self.update_button.connect("clicked", self.update)
  77.  
  78. self.draw_area = Gtk.DrawingArea()
  79. self.draw_area.set_size_request(300,300)
  80.  
  81. self.draw_area.connect("realize",self._realized)
  82.  
  83. self.hbox = Gtk.Box(spacing=6)
  84. self.hbox.pack_start(self.playback_button, True, True, 0)
  85. self.hbox.pack_start(self.stop_button, True, True, 0)
  86. self.hbox.pack_start(self.update_button, True, True, 0)
  87. self.vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
  88. self.add(self.vbox)
  89. self.vbox.pack_start(self.draw_area, True, True, 0)
  90. self.vbox.pack_start(self.positioner,True,True,0)
  91. self.vbox.pack_start(self.hbox, False, False, 0)
  92.  
  93. def toggle_player_playback(self, widget, data=None):
  94.  
  95. """
  96. Handler for Player's Playback Button (Play/Pause).
  97. """
  98.  
  99. if self.is_player_active == False and self.player_paused == False:
  100. self.player.play()
  101. self.playback_button.set_image(self.pause_image)
  102. self.is_player_active = True
  103.  
  104. elif self.is_player_active == True and self.player_paused == True:
  105. self.player.play()
  106. self.playback_button.set_image(self.pause_image)
  107. self.player_paused = False
  108.  
  109. elif self.is_player_active == True and self.player_paused == False:
  110. self.player.pause()
  111. self.playback_button.set_image(self.play_image)
  112. self.player_paused = True
  113. else:
  114. pass
  115.  
  116. def _key_press_event(self,widget,event):
  117. keyval = event.keyval
  118. keyval_name = Gdk.keyval_name(keyval)
  119. state = event.state
  120. print(keyval_name)
  121. if keyval_name == 'space':
  122. self.toggle_player_playback(self)
  123. elif keyval_name == 'Tab':
  124. self.update(self)
  125. elif keyval_name == "s":
  126. self.stop_player(self)
  127. elif keyval_name == "Escape":
  128. self.close_window()
  129. elif keyval_name == "f":
  130. self.toggle_fullscreen(self)
  131. elif keyval_name == "Up":
  132. if self.volume < 100:
  133. self.volume +=1
  134. print(self.volume)
  135. self.player.audio_set_volume(self.volume)
  136. elif keyval_name == "Down":
  137. if self.volume > 0:
  138. self.volume -=1
  139. print(self.volume)
  140. self.player.audio_set_volume(self.volume)
  141. else:
  142. return False
  143. return True
  144.  
  145. def update(self,widget, data=None):
  146. self.stop_player(self)
  147. self.src = get_src_of_rand_video()
  148. self.set_my_media(self.player, self.vlcInstance, self.src)
  149. self.player.play()
  150.  
  151. def toggle_fullscreen(self, widget, data=None):
  152. if self.isFullscreen == True:
  153. self.isFullscreen = False
  154. self.hbox.show()
  155. self.set_decorated(True)
  156. self.unmaximize()
  157. self.unfullscreen()
  158.  
  159. elif self.isFullscreen == False:
  160. self.isFullscreen = True
  161. self.set_decorated(False)
  162. self.hbox.hide()
  163. self.maximize()
  164. self.fullscreen()
  165.  
  166. def stop_player(self, widget, data=None):
  167. self.player.stop()
  168. self.is_player_active = False
  169. self.playback_button.set_image(self.play_image)
  170.  
  171. def set_my_media(self, _player, _instance, _source):
  172. _media = _instance.media_new(_source)
  173. _media.get_mrl
  174. _player.set_media(_media)
  175. return _player
  176.  
  177. def _realized(self, widget, data=None):
  178. self.vlcInstance = vlc.Instance("--no-xlib")
  179. self.src = get_src_of_rand_video()
  180.  
  181. self.player = self.vlcInstance.media_player_new()
  182. # uncomment to use vlc in window
  183. win_id = widget.get_window().get_xid()
  184. self.player.set_xwindow(win_id)
  185. self.player.set_fullscreen(True)
  186. self.player = self.set_my_media(self.player, self.vlcInstance, self.src)
  187. self.player.play()
  188. self.playback_button.set_image(self.pause_image)
  189. self.is_player_active = True
  190.  
  191. #not sure if this is a good place for this loop
  192. self.running = True
  193. while self.running:
  194. self.positioner.set_value(self.player.get_position())
  195. time.sleep(1)
  196.  
  197. def close_window():
  198. self.running = False
  199. self.destroy()
  200.  
  201. if __name__ == '__main__':
  202. window = ApplicationWindow()
  203. window.setup_objects_and_events()
  204. window.show()
  205. Gtk.main()
  206. window.player.stop()
  207. window.vlcInstance.release()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement