55 lines
1.5 KiB
Python
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)
|
|
|