mirror of
https://github.com/meeb/tubesync.git
synced 2025-06-25 14:36:34 +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.errors import NoFormatException
|
||||||
from common.utils import ( clean_filename, clean_emoji,
|
from common.utils import ( clean_filename, clean_emoji,
|
||||||
django_queryset_generator as qs_gen, )
|
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,
|
download_media as download_youtube_media,
|
||||||
get_channel_image_info as get_youtube_channel_image_info)
|
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,
|
write_text_file, mkdir_p, directory_and_stem, glob_quote,
|
||||||
multi_key_sort)
|
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)
|
get_best_video_format)
|
||||||
from .fields import CommaSepChoiceField
|
from ..fields import CommaSepChoiceField
|
||||||
from .choices import ( Val, CapChoices, Fallback, FileExtension,
|
from ..choices import ( Val, CapChoices, Fallback, FileExtension,
|
||||||
FilterSeconds, IndexSchedule, MediaServerType,
|
FilterSeconds, IndexSchedule, MediaServerType,
|
||||||
MediaState, SourceResolution, SourceResolutionInteger,
|
MediaState, SourceResolution, SourceResolutionInteger,
|
||||||
SponsorBlock_Category, YouTube_AudioCodec,
|
SponsorBlock_Category, YouTube_AudioCodec,
|
||||||
YouTube_SourceType, YouTube_VideoCodec)
|
YouTube_SourceType, YouTube_VideoCodec)
|
||||||
|
from .media_server import MediaServer
|
||||||
|
|
||||||
media_file_storage = FileSystemStorage(location=str(settings.DOWNLOAD_ROOT), base_url='/media-data/')
|
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) ))
|
_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.site,
|
||||||
self.value.get('format') or self.value.get('format_id'),
|
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