def update_viewed(media_id, elapsed=None, delete=False): try: database = Database() try: info = database.select_media(int(media_id)) except Exception: info = {} if info.get("category") in config.getlist("viewed", "no_history"): return "0" if elapsed: database.update_viewed(media_id, elapsed) elif delete: database.delete_viewed(media_id) else: database.insert_viewed(media_id) return "0" except Exception as excp: log.error("Update viewed failed: %s", excp) return "1"
def get_continue_media(): database = Database() viewed = database.select_viewed() for item in viewed: try: media_id = int(item.get("id")) info = database.select_media(media_id) except Exception: continue if not info: return info["id"] = media_id info["elapsed"] = int(item.get("elapsed") or 0) category = info.get("category").lower() if category in ["film", "television"]: if info["elapsed"] > 0: return info if category == "television": previous, next = get_nearby_episodes(media_id) if next: info = database.select_media(next) info["id"] = next info["elapsed"] = 0 return info
def __init__(self): super(IndexThread, self).__init__() self.database = Database() self.naming = self._get_naming() self.now = False self.stop = False
def get_continue_media_by_show(show): media_id = Database().select_latest_viewed_by_show(show) if not media_id: return previous, next = get_nearby_episodes(int(media_id)) return next
def get_viewed_items(): items = OrderedDict() for i in enumerate(Database().select_viewed()): media_id = i[1]["id"] name = None if media_id.isdigit(): data = Database().select_media(int(media_id)) if data: name = categories.format_media_name(data) else: name = media_id if name: items[media_id] = {"name_one": name} return items
def get_nearby_episodes(media_id): episodes = Database().select_category("television") index = episodes.keys().index(media_id) previous = episodes.keys()[index - 1] next = episodes.keys()[index + 1] show = episodes[media_id]["name_one"] if episodes[previous]["name_one"] != show: previous = None if episodes[next]["name_one"] != show: next = None return previous, next
def get_new_items(): path = config.get("browse", "downloads") video_formats = config.getlist("index", "video_formats") items = OrderedDict() files = [] for root, directories, files_ in os.walk(unicode(path)): for f in files_: extension = os.path.splitext(f)[-1].lstrip(".") if extension in video_formats: modified = os.path.getmtime(os.path.join(root, f)) files.append((modified, f, None)) for item in Database().select_new(): files.append( (item["modified"], categories.format_media_name(item), item["id"])) for i in enumerate(sorted(files, reverse=True)): items[i[0]] = {"name_one": i[1][-2], "id": i[1][-1]} return items
def queue_tracks(snake, value): """ Queue up the remaining tracks of an album. """ # If we get no tracks, this probably wasn't an album. tracks = Database().select_next_tracks(value) if tracks: queue_up = False for track in tracks: track_id = track["id"] if not queue_up: # Don't begin queuing until we have passed the user selected # track. # if track_id == int(value): queue_up = True continue Communicate().send([snake], {"action": ["queue", [track_id]]})
def search_media(term): return {"media": Database().select_like_media(term)}
def get_media(media_id): return Database().select_media(media_id)