@@ -5,12 +5,12 @@ from decimal import Decimal from io import BytesIO from typing import Any -import filetype import requests from django.core.files import File from messages.models import Message from ml_model.exceptions import FileNotProvided +from ml_model.services.FileService import ImageFileProcessor, ImageFileValidator from ml_model.services.base import SimpleService from ml_model.tasks import replicate_run @@ -50,10 +50,10 @@ class Wan(SimpleService): raise InsufficientBalance(balance, cost) if not input_message.file: raise FileNotProvided('Image') - kind = filetype.guess(input_message.file.read(20)) - mime = kind.mime if kind else 'application/octet-stream' - input_message.file.seek(0) - image = f'data:{mime};base64,{base64.b64encode(input_message.file.read()).decode("utf-8")}' + image_processor = ImageFileProcessor(input_message.file) + kind = image_processor.get_kind(image_processor.get_bytes(50)) + ImageFileValidator.validate_kind(kind, image_processor.EXTENSIONS) + image = f'data:{kind.mime};base64,{base64.b64encode(image_processor.get_bytes()).decode("utf-8")}' input_message.file.close() callback_data = dict( {