コード例 #1
0
ファイル: retrieve.py プロジェクト: ssmart88/Medusa
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
コード例 #2
0
ファイル: control.py プロジェクト: ssmart88/Medusa
    def _call_api(self, bits):
        """
        Make a request to the Head's API.
        """

        url = "http://%s:%s/medusa/%s/%s" % (config.get("head", "host"),
                                      config.get("ports", "head"),
                                      config.get("head", "api_base"),
                                      "/".join(str(b) for b in bits))

        try:
            return requests.get(url).json()

        except Exception as excp:
            log.error("API call to %s failed: %s", url, excp)

            return {}
コード例 #3
0
ファイル: index.py プロジェクト: ssmart88/Medusa
    def _get_naming(self):
        naming_path = os.path.join(config.base_path,
                                   config.get("files", "naming"))

        with open(naming_path, "r") as file_:
            naming = json.load(file_)

        return naming
コード例 #4
0
ファイル: database.py プロジェクト: ssmart88/Medusa
    def _sanitise(value):
        encoding = config.get("head", "encoding")

        if isinstance(value, list):
            return "|%s" % "|".join(v.encode(encoding) for v in value)

        elif isinstance(value, str):
            return value.encode(encoding)

        return value
コード例 #5
0
ファイル: database.py プロジェクト: ssmart88/Medusa
    def _dictionary_factory(cursor, row):
        result = {}

        for index, column in enumerate(cursor.description):
            value = row[index]

            try:
                value = value.decode(config.get("head", "encoding"))

            except Exception:
                pass

            if isinstance(value, unicode):
                if value.startswith("|"):
                    value = value.split("|")[1:]

            result[column[0]] = value

        return result
コード例 #6
0
    def _dictionary_factory(cursor, row):
        result = {}

        for index, column in enumerate(cursor.description):
            value = row[index]

            try:
                value = value.decode(config.get("head", "encoding"))

            except Exception:
                pass

            if isinstance(value, unicode):
                if value.startswith("|"):
                    value = value.split("|")[1:]

            result[column[0]] = value

        return result
コード例 #7
0
ファイル: retrieve.py プロジェクト: feitianyiren/Medusa-11
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
ファイル: database.py プロジェクト: ssmart88/Medusa
    def __init__(self):
        self.database = os.path.join(config.base_path,
                                     config.get("files", "database"))

        if not os.path.exists(self.database):
            self.create_database()
コード例 #9
0
    def __init__(self):
        self.database = os.path.join(config.base_path,
                                     config.get("files", "database"))

        if not os.path.exists(self.database):
            self.create_database()
コード例 #10
0
ファイル: head.py プロジェクト: feitianyiren/Medusa-11
import os

import flask

from lib.head.api import api
from lib.head.index import Index
from lib.head.proxy import Proxy
from lib.medusa.communicate import Communicate
from lib.medusa.config import config
from lib.medusa.log import log
from lib.view.pages import pages

#------------------------------------------------------------------------------

PATH = os.path.join(os.path.dirname(os.path.realpath(__file__)), "lib/view")
API_BASE = config.get("head", "api_base")
URL_BASE = config.get("head", "url_base")

#------------------------------------------------------------------------------

Index()

Communicate(proxy=Proxy)

#------------------------------------------------------------------------------

app = flask.Flask(__name__,
                  template_folder="%s/templates" % PATH,
                  static_folder="%s/static" % PATH,
                  static_url_path="/%s/static" % URL_BASE)
コード例 #11
0
ファイル: log.py プロジェクト: ssmart88/Medusa
#!/usr/bin/env python

"""
Log to a file.
"""

import logging as log

from lib.medusa.config import config

#------------------------------------------------------------------------------

FORMAT = "%(asctime)s %(levelname)s %(filename)s %(message)s"

#------------------------------------------------------------------------------

log.basicConfig(filename=config.get("files", "log"),
                format=FORMAT,
                level=log.WARN)