mirror of
https://git.vectorsigma.ru/public/tubearchivist.git
synced 2026-08-04 20:19:30 +00:00
112 lines
3.6 KiB
Python
112 lines
3.6 KiB
Python
"""channel serializers"""
|
|
|
|
# pylint: disable=abstract-method
|
|
|
|
from common.serializers import PaginationSerializer
|
|
from rest_framework import serializers
|
|
|
|
|
|
class ChannelOverwriteSerializer(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
|
|
)
|
|
|
|
def to_internal_value(self, data):
|
|
"""Override this method to detect unknown fields."""
|
|
allowed_fields = set(self.fields.keys())
|
|
input_fields = set(data.keys())
|
|
|
|
unknown_fields = input_fields - allowed_fields
|
|
|
|
if unknown_fields:
|
|
raise serializers.ValidationError(
|
|
{"error": f"Unknown fields: {', '.join(unknown_fields)}"}
|
|
)
|
|
|
|
return super().to_internal_value(data)
|
|
|
|
|
|
class ChannelSerializer(serializers.Serializer):
|
|
"""serialize channel"""
|
|
|
|
channel_id = serializers.CharField()
|
|
channel_active = serializers.BooleanField()
|
|
channel_banner_url = serializers.CharField()
|
|
channel_thumb_url = serializers.CharField()
|
|
channel_tvart_url = serializers.CharField()
|
|
channel_description = serializers.CharField()
|
|
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())
|
|
channel_views = serializers.IntegerField()
|
|
_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"], required=False)
|
|
|
|
|
|
class ChannelUpdateSerializer(serializers.Serializer):
|
|
"""update channel"""
|
|
|
|
channel_subscribed = serializers.BooleanField(required=False)
|
|
channel_overwrites = ChannelOverwriteSerializer(required=False)
|
|
|
|
|
|
class ChannelAggBucketSerializer(serializers.Serializer):
|
|
"""serialize channel agg bucket"""
|
|
|
|
value = serializers.IntegerField()
|
|
value_str = serializers.CharField(required=False)
|
|
|
|
|
|
class ChannelAggSerializer(serializers.Serializer):
|
|
"""serialize channel aggregation"""
|
|
|
|
total_items = ChannelAggBucketSerializer()
|
|
total_size = ChannelAggBucketSerializer()
|
|
total_duration = ChannelAggBucketSerializer()
|
|
|
|
|
|
class ChannelNavSerializer(serializers.Serializer):
|
|
"""serialize channel navigation"""
|
|
|
|
has_pending = 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()
|