def onPlayBackStarted(self): for f in self.on_playback_started: f() try: xbmc.Player().setSubtitles(self.subtitles) except: pass track_event("video", "play", self.display_name)
def onPlayBackStarted(self): for f in self.on_playback_started: f() try: if self.subtitles: xbmc.Player().setSubtitles(self.subtitles) except: pass track_event("video", "play", self.display_name)
def loop(self): from kmediatorrent.utils import SafeDialogProgress has_resolved = False plugin.log.info("Starting torrent2http...") with closing(torrent2http.start( **self.torrent2http_options)) as t2h_instance: t2h = lambda cmd: url_get_json("http://%s/%s" % (t2h_instance.bind_address, cmd), with_immunicity=False) if not self._wait_t2h_startup(t2h): return plugin.log.info("Opening download dialog...") with closing(SafeDialogProgress(delay_create=0)) as dialog: dialog.create(plugin.name) plugin.log.info("Waiting for file resolution...") while not has_resolved: if xbmc.abortRequested or dialog.iscanceled(): return status = t2h("status") self.display_name = status["name"] global buffer_percentage global extension_message global max_buffer_size extension = self.getFileExtension(self.display_name) BUFFERSIZE = self.getBufferSize(extension_message) if status[ "state"] >= 0 and buffer_percentage < 100 and BUFFERSIZE != max_buffer_size and extension_message == "": dialog.update(int(buffer_percentage), *self._get_status_lines(status, "")) #buffering elif status[ "state"] >= 0 and buffer_percentage >= 100 or BUFFERSIZE == max_buffer_size or extension_message != "": dialog.update(int(status["progress"] * 100), *self._get_status_lines( status, extension_message)) #done buffering if status[ "state"] >= 3 and not has_resolved: # Downloading? files = t2h("ls")["files"] progress = float(t2h("status")["progress"]) biggest_file = sorted(files, key=lambda x: x["size"])[-1] biggest_file["name"] = biggest_file["name"].encode( "utf-8") # Estimate the video size using the biggest file size # and the progress (progress is: <pcnt downloaded> / 100.0) bytes_complete = float(biggest_file["size"]) * progress mb_complete = bytes_complete / 1024.0 / 1024.0 buffer_percentage = (mb_complete / float( plugin.get_setting("min_download_size"))) * 100 if buffer_percentage >= 100 and BUFFERSIZE != max_buffer_size: extension_message = self.getExtensionMessage( extension) if extension_message == "File can not fast start. The whole file must download.": BUFFERSIZE = max_buffer_size if mb_complete > BUFFERSIZE or bytes_complete >= biggest_file[ "size"]: extension_message = "" dialog.update( int(status["progress"] * 100), *self._get_status_lines( status, extension_message)) plugin.log.info("Resolving to http://%s/files/%s" % (t2h_instance.bind_address, biggest_file["name"])) has_resolved = True item = { "path": "http://%s/files/%s" % (t2h_instance.bind_address, urllib.quote(biggest_file["name"])), } if not xbmc.getInfoLabel("ListItem.Title"): item["label"] = self.display_name plugin.set_resolved_url(item) break xbmc.sleep(TORRENT2HTTP_POLL) # We are now playing plugin.log.info("Now playing torrent...") last_playing_event = 0 with closing( OverlayText(w=OVERLAY_WIDTH, h=OVERLAY_HEIGHT, alignment=XBFONT_CENTER_X | XBFONT_CENTER_Y)) as overlay: with nested( self.attach(overlay.show, self.on_playback_paused), self.attach(overlay.hide, self.on_playback_resumed, self.on_playback_stopped)): while not xbmc.abortRequested and self.isPlaying(): overlay.text = "\n".join( self._get_status_lines(t2h("status"), extension_message)) now = time.time() if (now - last_playing_event) > PLAYING_EVENT_INTERVAL: track_event("video", "playing", self.display_name) last_playing_event = now xbmc.sleep(TORRENT2HTTP_POLL) plugin.log.info("Closing Torrent player.")
def onPlayBackStopped(self): for f in self.on_playback_stopped: f() track_event("video", "stop", self.display_name)
def onPlayBackPaused(self): for f in self.on_playback_paused: f() track_event("video", "pause", self.display_name)
def loop(self): from kmediatorrent.utils import SafeDialogProgress has_resolved = False plugin.log.info("Starting torrent2http...") with closing(torrent2http.start(**self.torrent2http_options)) as t2h_instance: t2h = lambda cmd: url_get_json("http://%s/%s" % (t2h_instance.bind_address, cmd), with_immunicity=False) if not self._wait_t2h_startup(t2h): return plugin.log.info("Opening download dialog...") with closing(SafeDialogProgress(delay_create=0)) as dialog: dialog.create(plugin.name) plugin.log.info("Waiting for file resolution...") while not has_resolved: if xbmc.abortRequested or dialog.iscanceled(): return status = t2h("status") self.display_name = status["name"] global buffer_percentage global extension_message global max_buffer_size extension = self.getFileExtension(self.display_name) BUFFERSIZE = self.getBufferSize(extension_message) if status["state"] >= 0 and buffer_percentage < 100 and BUFFERSIZE != max_buffer_size and extension_message == "": dialog.update(int(buffer_percentage), *self._get_status_lines(status, "")) #buffering elif status["state"] >= 0 and buffer_percentage >= 100 or BUFFERSIZE == max_buffer_size or extension_message != "": dialog.update(int(status["progress"] * 100), *self._get_status_lines(status, extension_message))#done buffering if status["state"] >= 3 and not has_resolved: # Downloading? files = t2h("ls")["files"] progress = float(t2h("status")["progress"]) biggest_file = sorted(files, key=lambda x: x["size"])[-1] biggest_file["name"] = biggest_file["name"].encode("utf-8") # Estimate the video size using the biggest file size # and the progress (progress is: <pcnt downloaded> / 100.0) bytes_complete = float(biggest_file["size"]) * progress mb_complete = bytes_complete / 1024.0 / 1024.0 buffer_percentage = (mb_complete / float(plugin.get_setting("min_download_size"))) * 100 if buffer_percentage >= 100 and BUFFERSIZE != max_buffer_size: extension_message = self.getExtensionMessage(extension) if extension_message == "File can not fast start. The whole file must download.": BUFFERSIZE = max_buffer_size if mb_complete > BUFFERSIZE or bytes_complete >= biggest_file["size"]: extension_message = "" dialog.update(int(status["progress"] * 100), *self._get_status_lines(status, extension_message)) plugin.log.info("Resolving to http://%s/files/%s" % (t2h_instance.bind_address, biggest_file["name"])) has_resolved = True item = { "path": "http://%s/files/%s" % (t2h_instance.bind_address, urllib.quote(biggest_file["name"])), } if not xbmc.getInfoLabel("ListItem.Title"): item["label"] = self.display_name plugin.set_resolved_url(item) break xbmc.sleep(TORRENT2HTTP_POLL) # We are now playing plugin.log.info("Now playing torrent...") last_playing_event = 0 with closing(OverlayText(w=OVERLAY_WIDTH, h=OVERLAY_HEIGHT, alignment=XBFONT_CENTER_X | XBFONT_CENTER_Y)) as overlay: with nested(self.attach(overlay.show, self.on_playback_paused), self.attach(overlay.hide, self.on_playback_resumed, self.on_playback_stopped)): while not xbmc.abortRequested and self.isPlaying(): overlay.text = "\n".join(self._get_status_lines(t2h("status"), extension_message)) now = time.time() if (now - last_playing_event) > PLAYING_EVENT_INTERVAL: track_event("video", "playing", self.display_name) last_playing_event = now xbmc.sleep(TORRENT2HTTP_POLL) plugin.log.info("Closing Torrent player.")