| from rest_framework import serializers | |
| class TranscriptionRequestSerializer(serializers.Serializer): | |
| url = serializers.URLField(required=False, allow_null=True) | |
| media = serializers.FileField(required=False, allow_null=True) | |
| def validate(self, attrs): | |
| url = attrs.get('url') | |
| media = attrs.get('media') | |
| if not url and not media: | |
| raise serializers.ValidationError("Either 'url' or 'media' must be provided.") | |
| return attrs | |
| def validate_media(self, file): | |
| if file is None: | |
| return file | |
| allowed_types = ['audio/', 'video/'] | |
| content_type = getattr(file, 'content_type', '') | |
| if not any(content_type.startswith(t) for t in allowed_types): | |
| raise serializers.ValidationError("Only audio or video files are allowed.") | |
| return file | |
| class ClassificationRequestSerializer(serializers.Serializer): | |
| claim = serializers.CharField() | |