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 _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 {}
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
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
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
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 __init__(self): self.database = os.path.join(config.base_path, config.get("files", "database")) if not os.path.exists(self.database): self.create_database()
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)
#!/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)