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_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 browse(): categories = config.getlist("browse", "categories") continue_ = retrieve.get_continue_media() return flask.render_template("browse.html", page="browse", categories=categories, continue_=continue_)
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 find_media(self, category, path, expressions): media = [] deep = False if category in config.getlist("index", "deep"): deep = True if category in config.getlist("index", "audio_categories"): allowed_formats = config.getlist("index", "audio_formats") else: allowed_formats = config.getlist("index", "video_formats") for root, directories, files in os.walk(unicode(path)): data = {} paths = [] data["category"] = category for f in files: if f.startswith("."): continue sub_data = {} sub_paths = [] sub_data["category"] = category f = os.path.join(root, f) short_path = f.replace("%s/" % os.path.dirname(path), "", 1) paths.append(short_path) sub_paths.append(short_path) extension = os.path.splitext(os.path.basename(f))[-1].replace(".", "", 1) if extension not in allowed_formats: continue if not deep and data.get("extension"): continue data["extension"] = extension sub_data["extension"] = extension match_path = os.path.splitext(short_path)[0] for expression in expressions: matches = expression.match(match_path) if matches: break if not matches: log.error("Failed to expression match %s", match_path) continue result = getattr(categories, "parse_%s" % category.lower())(matches) data.update(result) sub_data.update(result) try: modified = int(os.stat(f).st_mtime) except Exception: modified = 0 data["modified"] = modified sub_data["modified"] = modified if not sub_paths or not sub_data.get("name_one"): continue sub_data["paths"] = sub_paths if deep: media.append(sub_data) if not paths or not data.get("name_one"): continue data["paths"] = paths if not deep: media.append(data) return media
def find_media(self, category, path, expressions): media = [] deep = False if category in config.getlist("index", "deep"): deep = True if category in config.getlist("index", "audio_categories"): allowed_formats = config.getlist("index", "audio_formats") else: allowed_formats = config.getlist("index", "video_formats") for root, directories, files in os.walk(unicode(path)): data = {} paths = [] data["category"] = category for f in files: if f.startswith("."): continue sub_data = {} sub_paths = [] sub_data["category"] = category f = os.path.join(root, f) short_path = f.replace("%s/" % os.path.dirname(path), "", 1) paths.append(short_path) sub_paths.append(short_path) extension = os.path.splitext(os.path.basename(f))[-1].replace( ".", "", 1) if extension not in allowed_formats: continue if not deep and data.get("extension"): continue data["extension"] = extension sub_data["extension"] = extension match_path = os.path.splitext(short_path)[0] for expression in expressions: matches = expression.match(match_path) if matches: break if not matches: log.error("Failed to expression match %s", match_path) continue result = getattr(categories, "parse_%s" % category.lower())(matches) data.update(result) sub_data.update(result) try: modified = int(os.stat(f).st_mtime) except Exception: modified = 0 data["modified"] = modified sub_data["modified"] = modified if not sub_paths or not sub_data.get("name_one"): continue sub_data["paths"] = sub_paths if deep: media.append(sub_data) if not paths or not data.get("name_one"): continue data["paths"] = paths if not deep: media.append(data) return media