Example #1
0
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"
Example #2
0
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
Example #3
0
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"
Example #4
0
def browse():
    categories = config.getlist("browse", "categories")
    continue_ = retrieve.get_continue_media()

    return flask.render_template("browse.html",
                                 page="browse",
                                 categories=categories,
                                 continue_=continue_)
Example #5
0
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
Example #6
0
    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
Example #7
0
    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