s3
This commit is contained in:
@@ -32,7 +32,27 @@ async def update_creative(
|
||||
creative.text = domain.replace_invite_link_with_tag(input.text)
|
||||
if input.media_data is not None:
|
||||
domain.validate_media_size(input.media_data)
|
||||
creative.media_data = input.media_data
|
||||
|
||||
# Удаляем старое медиа из S3
|
||||
old_media_key = creative.media_s3_key
|
||||
if old_media_key:
|
||||
try:
|
||||
await self.s3.delete(old_media_key)
|
||||
log.info('Deleted old creative media from S3: %s', old_media_key)
|
||||
except Exception as e:
|
||||
log.warning('Failed to delete old creative media from S3: %s', e)
|
||||
|
||||
# Загружаем новое медиа в S3
|
||||
new_media_data = input.media_data
|
||||
if new_media_data:
|
||||
file_id = uuid.uuid4()
|
||||
new_media_key = f'creatives/{workspace_id}/{file_id}'
|
||||
content_type = _get_content_type(input.media_type)
|
||||
await self.s3.upload(new_media_key, new_media_data, content_type)
|
||||
log.info('Uploaded new creative media to S3: %s', new_media_key)
|
||||
creative.media_s3_key = new_media_key
|
||||
else:
|
||||
creative.media_s3_key = None
|
||||
if input.media_type is not None:
|
||||
creative.media_type = input.media_type
|
||||
if input.media_file_id is not None:
|
||||
@@ -59,3 +79,16 @@ async def update_creative(
|
||||
status=creative.status,
|
||||
placements_count=placements_count,
|
||||
)
|
||||
|
||||
|
||||
def _get_content_type(media_type: str | None) -> str:
|
||||
"""Map Telegram media type to MIME content type."""
|
||||
if not media_type:
|
||||
return 'application/octet-stream'
|
||||
|
||||
mapping = {
|
||||
'photo': 'image/jpeg',
|
||||
'video': 'video/mp4',
|
||||
'animation': 'image/gif',
|
||||
}
|
||||
return mapping.get(media_type, 'application/octet-stream')
|
||||
|
||||
Reference in New Issue
Block a user