117 lines
3.8 KiB
Python
117 lines
3.8 KiB
Python
"""channel serializers"""
|
|
|
|
# pylint: disable=abstract-method
|
|
|
|
from common.serializers import PaginationSerializer, ValidateUnknownFieldsMixin
|
|
from rest_framework import serializers
|
|
from video.src.constants import VideoTypeEnum
|
|
|
|
|
|
class ChannelOverwriteSerializer(
|
|
ValidateUnknownFieldsMixin, serializers.Serializer
|
|
):
|
|
"""serialize channel overwrites"""
|
|
|
|
download_format = serializers.CharField(required=False, allow_null=True)
|
|
autodelete_days = serializers.IntegerField(required=False, allow_null=True)
|
|
index_playlists = serializers.BooleanField(required=False, allow_null=True)
|
|
integrate_sponsorblock = serializers.BooleanField(
|
|
required=False, allow_null=True
|
|
)
|
|
subscriptions_channel_size = serializers.IntegerField(
|
|
required=False, allow_null=True
|
|
)
|
|
subscriptions_live_channel_size = serializers.IntegerField(
|
|
required=False, allow_null=True
|
|
)
|
|
subscriptions_shorts_channel_size = serializers.IntegerField(
|
|
required=False, allow_null=True
|
|
)
|
|
|
|
|
|
class ChannelSerializer(serializers.Serializer):
|
|
"""serialize channel"""
|
|
|
|
channel_id = serializers.CharField()
|
|
channel_active = serializers.BooleanField()
|
|
channel_banner_url = serializers.CharField(allow_null=True, required=False)
|
|
channel_thumb_url = serializers.CharField(allow_null=True, required=False)
|
|
channel_tvart_url = serializers.CharField(allow_null=True, required=False)
|
|
channel_description = serializers.CharField(
|
|
allow_null=True, required=False
|
|
)
|
|
channel_last_refresh = serializers.CharField()
|
|
channel_name = serializers.CharField()
|
|
channel_overwrites = ChannelOverwriteSerializer(required=False)
|
|
channel_subs = serializers.IntegerField()
|
|
channel_subscribed = serializers.BooleanField()
|
|
channel_tags = serializers.ListField(
|
|
child=serializers.CharField(), required=False
|
|
)
|
|
channel_tabs = serializers.ListField(
|
|
child=serializers.ChoiceField(VideoTypeEnum.values_known())
|
|
)
|
|
channel_media_size = serializers.IntegerField(required=False)
|
|
channel_video_count = serializers.IntegerField(required=False)
|
|
channel_media_duration = serializers.IntegerField(required=False)
|
|
_index = serializers.CharField(required=False)
|
|
_score = serializers.IntegerField(required=False)
|
|
|
|
|
|
class ChannelListSerializer(serializers.Serializer):
|
|
"""serialize channel list"""
|
|
|
|
data = ChannelSerializer(many=True)
|
|
paginate = PaginationSerializer()
|
|
|
|
|
|
class ChannelListQuerySerializer(serializers.Serializer):
|
|
"""serialize list query"""
|
|
|
|
filter = serializers.ChoiceField(
|
|
choices=["subscribed", "unsubscribed"], required=False
|
|
)
|
|
page = serializers.IntegerField(required=False)
|
|
view = serializers.ChoiceField(
|
|
choices=["list", "grid", "table"], required=False
|
|
)
|
|
sort = serializers.ChoiceField(
|
|
choices=[
|
|
"name",
|
|
"subscribers",
|
|
"video_count",
|
|
"duration",
|
|
"media_size",
|
|
"last_refresh",
|
|
],
|
|
required=False,
|
|
default="name",
|
|
)
|
|
order = serializers.ChoiceField(
|
|
choices=["asc", "desc"], required=False, default="asc"
|
|
)
|
|
|
|
|
|
class ChannelUpdateSerializer(serializers.Serializer):
|
|
"""update channel"""
|
|
|
|
channel_subscribed = serializers.BooleanField(required=False)
|
|
channel_overwrites = ChannelOverwriteSerializer(required=False)
|
|
|
|
|
|
class ChannelNavSerializer(serializers.Serializer):
|
|
"""serialize channel navigation"""
|
|
|
|
has_pending = serializers.BooleanField()
|
|
has_ignored = serializers.BooleanField()
|
|
has_playlists = serializers.BooleanField()
|
|
has_videos = serializers.BooleanField()
|
|
has_streams = serializers.BooleanField()
|
|
has_shorts = serializers.BooleanField()
|
|
|
|
|
|
class ChannelSearchQuerySerializer(serializers.Serializer):
|
|
"""serialize query parameters for searching"""
|
|
|
|
q = serializers.CharField()
|