KaruMediaServer/api/karumedia/models.py

55 lines
1.5 KiB
Python

import datetime
from mongoengine import *
class Media(Document):
title = StringField()
slug = StringField(unique=True)
imdb_id = StringField(unique=True)
runtime = IntField()
genres = ListField(StringField())
mpa_rating = StringField()
rating = FloatField()
yt_trailer_code = StringField()
date_added = DateTimeField(default=datetime.datetime.now)
parrent = ReferenceField('self')
season = IntField()
episode = IntField()
release_date = StringField()
type = StringField()
plot_outline = StringField()
plots = ListField(StringField())
year = IntField()
class MediaFile(Document):
url = URLField()
path = StringField()
media = ReferenceField(Media)
mimetype = StringField()
resolution = StringField(choices=('480p', '720p', '1080p', 'native'), default="native")
class MediaPoster(Document):
poster = FileField()
media = ReferenceField(Media)
class Task(Document):
progress = FloatField(default=0)
state = StringField(choices=('starting', 'running', 'done'), default='starting')
creation_time = DateTimeField(default=datetime.datetime.now)
sub_tasks = ListField(ReferenceField('self'), default=list)
meta = {'allow_inheritance': True}
class TaskMetainfoDl(Task):
info_hash = StringField(required=True)
imdb_id = StringField()
class TaskImdbDl(Task):
imdb_id = StringField(required=True)
media = ReferenceField(Media)
class TaskTorrentDl(Task):
info_hash = StringField(required=True)
imdb_id = StringField()
media = ReferenceField(Media)