예제 #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"
예제 #2
0
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
예제 #3
0
    def __init__(self):
        super(IndexThread, self).__init__()

        self.database = Database()
        self.naming = self._get_naming()
        self.now = False
        self.stop = False
예제 #4
0
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
예제 #5
0
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
예제 #6
0
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
예제 #7
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
예제 #8
0
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]]})
예제 #9
0
def search_media(term):
    return {"media": Database().select_like_media(term)}
예제 #10
0
def get_media(media_id):
    return Database().select_media(media_id)