Esempio n. 1
0
    def process_something(self):
        # Three possible loops:
        # 1. Recent items, can run several times per day, after every library update, and only for small updates
        # 2. Unprocessed items, at least once every UNPROCESSED_DAYS and after larger library updates
        #  - this contains only new items that were missed in the recent loops, maybe in a shared database
        # 3. All items, once every ALLITEMS_DAYS ( or / 4, if filesystem only)
        #  - adds new artwork for old items missing artwork
        lastdate = addon.get_setting("lastalldate")
        if lastdate == "0":
            self.process_allitems()
            self.reset_recent()
            return
        days = ALLITEMS_DAYS
        if self.only_filesystem:
            days /= 4
        needall = lastdate < str(datetime_now() - timedelta(days=days))
        if needall:
            needunprocessed = False
        else:
            needunprocessed = self.toomany_recentitems
            if not needunprocessed:
                lastdate = addon.get_setting("lastunprocesseddate")
                needunprocessed = lastdate < str(datetime_now() - timedelta(days=UNPROCESSED_DAYS))
        if needunprocessed:
            self.process_allitems(True)
            self.reset_recent()
            return

        self.process_recentitems()
        if not self.abortRequested() and needall:
            self.process_allitems()
Esempio n. 2
0
    def process_allitems(self, excludeprocessed=False):
        currentdate = str(datetime_now())
        items = quickjson.get_movies(properties=movie_properties)
        if excludeprocessed:
            items = [movie for movie in items if movie["movieid"] not in self.processed.movie]
        serieslist = quickjson.get_tvshows(properties=tvshow_properties)
        if self.abortRequested():
            return
        autoaddepisodes = addon.get_setting("autoaddepisodes_list") if addon.get_setting("episode.fanart") else ()
        for series in serieslist:
            if not excludeprocessed or series["season"] > self.processed.tvshow.get(series["tvshowid"]):
                items.append(series)
            if series["imdbnumber"] in autoaddepisodes:
                episodes = quickjson.get_episodes(series["tvshowid"], "dateadded", properties=episode_properties)
                for episode in episodes:
                    if not excludeprocessed or episode["episodeid"] not in self.processed.episode:
                        items.append(episode)
            if self.abortRequested():
                return

        processed = self.processor.process_medialist(items)
        if excludeprocessed:
            self.processed.extend(processed)
        else:
            self.processed.set(processed)
            addon.set_setting("lastalldate", currentdate)
        self.processed.save()
        if not self.abortRequested():
            addon.set_setting("lastunprocesseddate", currentdate)