diff --git a/backend/download/serializers.py b/backend/download/serializers.py index f34a4ce7..bcaf33a9 100644 --- a/backend/download/serializers.py +++ b/backend/download/serializers.py @@ -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) diff --git a/backend/download/src/queue.py b/backend/download/src/queue.py index 52ae114c..f372c5ea 100644 --- a/backend/download/src/queue.py +++ b/backend/download/src/queue.py @@ -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