validate DownloadItemSerializer for video to add to queue

This commit is contained in:
Simon 2025-12-13 15:16:12 +07:00
parent ac97e90047
commit c02ec7e82e
No known key found for this signature in database
GPG Key ID: 2C15AA5E89985DD4
2 changed files with 11 additions and 2 deletions

View File

@ -10,13 +10,15 @@ from video.src.constants import VideoTypeEnum
class DownloadItemSerializer(serializers.Serializer):
"""serialize download item"""
auto_start = serializers.BooleanField()
auto_start = serializers.BooleanField(required=False)
channel_id = serializers.CharField()
channel_indexed = serializers.BooleanField()
channel_name = serializers.CharField()
duration = serializers.CharField()
published = serializers.CharField(allow_null=True)
status = serializers.ChoiceField(choices=["pending", "ignore"])
status = serializers.ChoiceField(
choices=["pending", "ignore"], required=False
)
timestamp = serializers.IntegerField(allow_null=True)
title = serializers.CharField()
vid_thumb_url = serializers.CharField(allow_null=True)

View File

@ -20,6 +20,7 @@ from common.src.helper import (
rand_sleep,
)
from common.src.urlparser import ParsedURLType
from download.serializers import DownloadItemSerializer
from download.src.queue_interact import PendingInteract
from download.src.thumbnails import ThumbManager
from playlist.src.index import YoutubePlaylist
@ -379,6 +380,12 @@ class PendingList(PendingIndex):
"channel_id": video_data["channel_id"],
"channel_indexed": video_data["channel_id"] in self.all_channels,
}
serializer = DownloadItemSerializer(data=to_add)
is_valid = serializer.is_valid()
if not is_valid:
print(f"{youtube_id}: serializer failed: {serializer.errors}")
self._notify_fail(403, youtube_id)
return None
return to_add