mirror of
https://github.com/meeb/tubesync.git
synced 2025-06-24 14:06:36 +00:00
Update __init__.py
This commit is contained in:
parent
ea4733f725
commit
5c987f1d58
@ -21,20 +21,21 @@ from common.logger import log
|
||||
from common.errors import NoFormatException
|
||||
from common.utils import ( clean_filename, clean_emoji,
|
||||
django_queryset_generator as qs_gen, )
|
||||
from .youtube import ( get_media_info as get_youtube_media_info,
|
||||
from ..youtube import ( get_media_info as get_youtube_media_info,
|
||||
download_media as download_youtube_media,
|
||||
get_channel_image_info as get_youtube_channel_image_info)
|
||||
from .utils import (seconds_to_timestr, parse_media_format, filter_response,
|
||||
from ..utils import (seconds_to_timestr, parse_media_format, filter_response,
|
||||
write_text_file, mkdir_p, directory_and_stem, glob_quote,
|
||||
multi_key_sort)
|
||||
from .matching import ( get_best_combined_format, get_best_audio_format,
|
||||
from ..matching import ( get_best_combined_format, get_best_audio_format,
|
||||
get_best_video_format)
|
||||
from .fields import CommaSepChoiceField
|
||||
from .choices import ( Val, CapChoices, Fallback, FileExtension,
|
||||
from ..fields import CommaSepChoiceField
|
||||
from ..choices import ( Val, CapChoices, Fallback, FileExtension,
|
||||
FilterSeconds, IndexSchedule, MediaServerType,
|
||||
MediaState, SourceResolution, SourceResolutionInteger,
|
||||
SponsorBlock_Category, YouTube_AudioCodec,
|
||||
YouTube_SourceType, YouTube_VideoCodec)
|
||||
from .media_server import MediaServer
|
||||
|
||||
media_file_storage = FileSystemStorage(location=str(settings.DOWNLOAD_ROOT), base_url='/media-data/')
|
||||
_srctype_dict = lambda n: dict(zip( YouTube_SourceType.values, (n,) * len(YouTube_SourceType.values) ))
|
||||
@ -1998,91 +1999,3 @@ class MetadataFormat(models.Model):
|
||||
self.site,
|
||||
self.value.get('format') or self.value.get('format_id'),
|
||||
)
|
||||
|
||||
|
||||
class MediaServer(models.Model):
|
||||
'''
|
||||
A remote media server, such as a Plex server.
|
||||
'''
|
||||
|
||||
ICONS = {
|
||||
Val(MediaServerType.JELLYFIN): '<i class="fas fa-server"></i>',
|
||||
Val(MediaServerType.PLEX): '<i class="fas fa-server"></i>',
|
||||
}
|
||||
HANDLERS = MediaServerType.handlers_dict()
|
||||
|
||||
server_type = models.CharField(
|
||||
_('server type'),
|
||||
max_length=1,
|
||||
db_index=True,
|
||||
choices=MediaServerType.choices,
|
||||
default=MediaServerType.PLEX,
|
||||
help_text=_('Server type')
|
||||
)
|
||||
host = models.CharField(
|
||||
_('host'),
|
||||
db_index=True,
|
||||
max_length=200,
|
||||
help_text=_('Hostname or IP address of the media server')
|
||||
)
|
||||
port = models.PositiveIntegerField(
|
||||
_('port'),
|
||||
db_index=True,
|
||||
help_text=_('Port number of the media server')
|
||||
)
|
||||
use_https = models.BooleanField(
|
||||
_('use https'),
|
||||
default=False,
|
||||
help_text=_('Connect to the media server over HTTPS')
|
||||
)
|
||||
verify_https = models.BooleanField(
|
||||
_('verify https'),
|
||||
default=True,
|
||||
help_text=_('If connecting over HTTPS, verify the SSL certificate is valid')
|
||||
)
|
||||
options = models.TextField(
|
||||
_('options'),
|
||||
blank=False, # valid JSON only
|
||||
null=True,
|
||||
help_text=_('JSON encoded options for the media server')
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.get_server_type_display()} server at {self.url}'
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Media Server')
|
||||
verbose_name_plural = _('Media Servers')
|
||||
unique_together = (
|
||||
('host', 'port'),
|
||||
)
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
scheme = 'https' if self.use_https else 'http'
|
||||
return f'{scheme}://{self.host.strip()}:{self.port}'
|
||||
|
||||
@property
|
||||
def icon(self):
|
||||
return self.ICONS.get(self.server_type)
|
||||
|
||||
@property
|
||||
def handler(self):
|
||||
handler_class = self.HANDLERS.get(self.server_type)
|
||||
return handler_class(self)
|
||||
|
||||
@property
|
||||
def loaded_options(self):
|
||||
try:
|
||||
return json.loads(self.options)
|
||||
except Exception as e:
|
||||
return {}
|
||||
|
||||
def validate(self):
|
||||
return self.handler.validate()
|
||||
|
||||
def update(self):
|
||||
return self.handler.update()
|
||||
|
||||
def get_help_html(self):
|
||||
return self.handler.HELP
|
||||
|
Loading…
Reference in New Issue
Block a user