예제 #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
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
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)