tubearchivist/backend/stats/serializers.py
2025-02-14 15:40:50 +07:00

111 lines
3.6 KiB
Python

"""serializers for stats"""
# pylint: disable=abstract-method
from rest_framework import serializers
class VideoStatsItemSerializer(serializers.Serializer):
"""serialize video stats item"""
doc_count = serializers.IntegerField()
media_size = serializers.IntegerField()
duration = serializers.IntegerField()
duration_str = serializers.CharField()
class VideoStatsSerializer(serializers.Serializer):
"""serialize video stats"""
doc_count = serializers.IntegerField()
media_size = serializers.IntegerField()
duration = serializers.IntegerField()
duration_str = serializers.CharField()
type_videos = VideoStatsItemSerializer(allow_null=True)
type_shorts = VideoStatsItemSerializer(allow_null=True)
type_streams = VideoStatsItemSerializer(allow_null=True)
active_true = VideoStatsItemSerializer(allow_null=True)
active_false = VideoStatsItemSerializer(allow_null=True)
class ChannelStatsSerializer(serializers.Serializer):
"""serialize channel stats"""
doc_count = serializers.IntegerField(allow_null=True)
active_true = serializers.IntegerField(allow_null=True)
active_false = serializers.IntegerField(allow_null=True)
subscribed_true = serializers.IntegerField(allow_null=True)
subscribed_false = serializers.IntegerField(allow_null=True)
class PlaylistStatsSerializer(serializers.Serializer):
"""serialize playlists stats"""
doc_count = serializers.IntegerField(allow_null=True)
active_true = serializers.IntegerField(allow_null=True)
active_false = serializers.IntegerField(allow_null=True)
subscribed_false = serializers.IntegerField(allow_null=True)
subscribed_true = serializers.IntegerField(allow_null=True)
class DownloadStatsSerializer(serializers.Serializer):
"""serialize download stats"""
pending = serializers.IntegerField(allow_null=True)
ignore = serializers.IntegerField(allow_null=True)
pending_videos = serializers.IntegerField(allow_null=True)
pending_shorts = serializers.IntegerField(allow_null=True)
pending_streams = serializers.IntegerField(allow_null=True)
class WatchTotalStatsSerializer(serializers.Serializer):
"""serialize total watch stats"""
duration = serializers.IntegerField()
duration_str = serializers.CharField()
items = serializers.IntegerField()
class WatchItemStatsSerializer(serializers.Serializer):
"""serialize watch item stats"""
duration = serializers.IntegerField()
duration_str = serializers.CharField()
progress = serializers.FloatField()
items = serializers.IntegerField()
class WatchStatsSerializer(serializers.Serializer):
"""serialize watch stats"""
total = WatchTotalStatsSerializer(allow_null=True)
unwatched = WatchItemStatsSerializer(allow_null=True)
watched = WatchItemStatsSerializer(allow_null=True)
class DownloadHistItemSerializer(serializers.Serializer):
"""serialize download hist item"""
date = serializers.CharField()
count = serializers.IntegerField()
media_size = serializers.IntegerField()
class BiggestChannelQuerySerializer(serializers.Serializer):
"""serialize biggest channel query"""
order = serializers.ChoiceField(
choices=["doc_count", "duration", "media_size"], default="doc_count"
)
class BiggestChannelItemSerializer(serializers.Serializer):
"""serialize biggest channel item"""
id = serializers.CharField()
name = serializers.CharField()
doc_count = serializers.IntegerField()
duration = serializers.IntegerField()
duration_str = serializers.CharField()
media_size = serializers.IntegerField()