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()
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)