Ejemplo n.º 1
0
 def setUpClass(cls):
     library.scraper.getshowinfo = fake_getshowinfo
     library.scraper.getinfodict = fake_getepinfo
     library.scraper.getepisodes = fake_getepisodes_return_A
     cls.show = library.Show(urlid="faketvshowurlid", title="The Fake Koala %s Show" % const.provider)
     cls.episodepath = uni_join(const.libpath, "%s shows" % const.provider, "%s\\" % stringtofile(cls.show.title))
     library.execute(to_update_add=[cls.show])
Ejemplo n.º 2
0
 def setUpClass(cls):
     library.scraper.getepisodes = fake_getepisodes_return_A_B
     cls.show = library.Show(urlid="broadchurch", title="Broadchurch")
     library.execute(to_update_add=[cls.show])
     cls.episodepath = uni_join(const.libpath, "%s shows" % const.provider, "%s\\" % stringtofile(cls.show.title))
     libfiles = [show["file"] for show in rpc("VideoLibrary.GetTVShows", properties=["file"])['tvshows']]
     assert cls.episodepath in libfiles
     library.execute(to_remove=[cls.show])
 def __init__(self, show, seasonnr, episodenr):
     self.showtitle = show.title
     self.seasonnr = int(seasonnr)
     self.episodenr = int(episodenr)
     self.code = "S%02dE%02d" % (seasonnr, episodenr)
     self.path = utils.uni_join(const.libpath, "%s shows" % const.provider,
                                utils.stringtofile(self.showtitle), "Season %s" % self.seasonnr)
     self.htmfilename = "%s %s.htm" % (utils.stringtofile(self.showtitle), self.code)
     self.nfofilename = "%s %s.nfo" % (utils.stringtofile(self.showtitle), self.code)
     self.jsonfilename = "%s %s.json" % (utils.stringtofile(self.showtitle), self.code)
Ejemplo n.º 4
0
    def setup(self):
        playingfile = self.get_playing_file()
        if not playingfile["file"].startswith((utils.uni_join(const.libpath, const.provider),
                                               utils.uni_join(const.addonpath, "resources"))):
            return
        try:
            kodi.log("Start playback setup")

            self.player = Player(stop_event=self.stop_event)

            if kodi.settings["remote"]:
                self.remote = remote.Remote()
                self.remote.run(player=self.player)

            self.player.connect()

            if playingfile["type"] == "episode":
                Thread(target=self.monitor_episodes_progress, args=[playingfile]).start()
            elif playingfile["type"] == "movie":
                Thread(target=self.monitor_movie_progress, args=[playingfile]).start()

            kodi.log("Finished playback setup")

        except self.player.exceptions:
            pass

        except:
            kodi.log("Exception occured during playback\n%s" % traceback.format_exc().decode(sys.getfilesystemencoding()))

        finally:
            self.stop_event.wait()

            kodi.log("Start playback cleanup")
            if self.remote:
                self.remote.close()
            if self.player:
                self.player.disconnect()
            kodi.log("Finish playback cleanup")
Ejemplo n.º 5
0
def library_mode(action):
    if xbmcgui.Window(10000).getProperty("%s running" % const.addonname) == "true":
        if action in ["startup", "schedule"]:
            return
        run = kodi.Dialog.yesno(heading="Running", line1="Koala is running. ",
                                line2="Running multiple instances may cause instablity.", line3="Continue?")
        if not run:
            return
    koalasetup()
    if not is_libpath_added():
        kodi.Dialog.ok(heading="Koala path not in video sources",
                       line1="Koala library paths have not been added to Kodi video sources:",
                       line2=utils.uni_join(const.libpath, "%s shows" % const.provider),
                       line3=utils.uni_join(const.libpath, "%s movies" % const.provider))
        return

    starttime = dt.datetime.now()
    kodi.log("Starting %s" % action)
    xbmcgui.Window(10000).setProperty("%s running" % const.addonname, "true")
    try:
        library.main(action)
    finally:
        xbmcgui.Window(10000).setProperty("%s running" % const.addonname, "false")
        kodi.log("Finished %s in %s" % (action, str(dt.datetime.now() - starttime)))
Ejemplo n.º 6
0
def is_libpath_added():
    sources = kodi.rpc("Files.GetSources", media="video")
    for source in sources.get('sources', []):
        if source['file'].startswith(utils.uni_join(const.libpath, const.provider)):
            return True
    return False
 def __init__(self, title):
     self.title = title
     self.path = utils.uni_join(const.libpath, "%s movies" % const.provider)
     self.htmfilename = "%s.htm" % utils.stringtofile(self.title)
     self.nfofilename = "%s.nfo" % utils.stringtofile(self.title)
     self.jsonfilename = "%s.json" % utils.stringtofile(self.title)
 def __init__(self, urlid, title):
     self.urlid = urlid
     self.title = title
     self.path = utils.uni_join(const.libpath, "%s shows" % const.provider, utils.stringtofile(self.title))
     self.nfofilename = "tvshow.nfo"
Ejemplo n.º 9
0
 def test_add_show_to_kodi_lib(self):
     """Does show.add_update() cause the show to be added to kodi library?"""
     episodepath = uni_join(const.libpath, "%s shows" % const.provider, "%s\\" % stringtofile(self.show.title))
     libfiles = [show["file"] for show in rpc("VideoLibrary.GetTVShows", properties=["file"])['tvshows']]
     self.assertIn(episodepath, libfiles)
Ejemplo n.º 10
0
 def test_movie_with_NFO_added_to_kodi_lib(self):
     """Does movie.add_update() cause the movie to be added to kodi library when .nfo created?"""
     libfiles = [movie["file"] for movie in rpc("VideoLibrary.GetMovies", properties=["file"])['movies']]
     self.assertIn(uni_join(self.movie.path, self.movie.htmfilename), libfiles)
Ejemplo n.º 11
0
 def setUpClass(cls):
     cls.movie = library.Movie(urlid="/program/KOIF47000608/der-untergang", title="Der Untergang")
     library.execute(to_update_add=[cls.movie])
     libfiles = [movie["file"] for movie in rpc("VideoLibrary.GetMovies", properties=["file"])['movies']]
     assert uni_join(cls.movie.path, cls.movie.htmfilename) in libfiles
     library.execute(to_remove=[cls.movie])