Добавил новый загрузчик c YouTube
This commit is contained in:
@@ -25,6 +25,12 @@ class ChunkUploadBackend(ABC):
|
||||
"""Прерывания загрузки"""
|
||||
|
||||
|
||||
class UploadBackend(ABC):
|
||||
@abstractmethod
|
||||
def upload(self, name: str, file: bytes | str) -> str:
|
||||
"""Загрузка файла"""
|
||||
|
||||
|
||||
class DiskChunkUploadBackend(ChunkUploadBackend):
|
||||
def __init__(self, key_prefix: str = ""):
|
||||
self.base_path = str(settings.MEDIA_DIR)
|
||||
@@ -157,3 +163,26 @@ class HybridDiskS3UploadBackend(ChunkUploadBackend):
|
||||
)
|
||||
os.remove(filepath)
|
||||
return response["Location"]
|
||||
|
||||
|
||||
class S3UploadBackend(UploadBackend):
|
||||
def __init__(self, key_prefix=""):
|
||||
self.s3 = boto3.client(
|
||||
service_name="s3",
|
||||
aws_access_key_id=settings.S3_ACCESS_KEY,
|
||||
aws_secret_access_key=settings.S3_SECRET_KEY,
|
||||
endpoint_url=settings.S3_ENDPOINT_URL,
|
||||
region_name=settings.S3_REGION_NAME,
|
||||
use_ssl=True,
|
||||
config=Config(signature_version=settings.S3_SIGNATURE_VERSION),
|
||||
)
|
||||
self.bucket = settings.S3_BUCKET_NAME
|
||||
self.key_prefix = key_prefix
|
||||
|
||||
def upload(self, name: str, file: bytes | str):
|
||||
response = self.s3.upload_file(
|
||||
Filename=file,
|
||||
Bucket=self.bucket,
|
||||
Key=f"{self.key_prefix}{name}",
|
||||
)
|
||||
return response["Location"]
|
||||
|
||||
Reference in New Issue
Block a user