fix cover
This commit is contained in:
parent
47905b008b
commit
f6843713e7
|
|
@ -132,10 +132,28 @@ async def s_api_v1_storage_get(request, file_hash=None):
|
||||||
if content_type == 'audio':
|
if content_type == 'audio':
|
||||||
tempfile_path += "_mpeg" + (f"_{seconds_limit}" if seconds_limit else "")
|
tempfile_path += "_mpeg" + (f"_{seconds_limit}" if seconds_limit else "")
|
||||||
if not os.path.exists(tempfile_path):
|
if not os.path.exists(tempfile_path):
|
||||||
|
try:
|
||||||
|
cover_content = StoredContent.from_cid(content.meta.get('cover_cid'))
|
||||||
|
cover_tempfile_path = os.path.join(UPLOADS_DIR, f"tmp_{cover_content.hash}_jpeg")
|
||||||
|
if not os.path.exists(cover_tempfile_path):
|
||||||
|
cover_image = Image.open(cover_content.filepath)
|
||||||
|
cover_image = cover_image.convert('RGB')
|
||||||
|
quality = 95
|
||||||
|
while quality > 10:
|
||||||
|
cover_image.save(cover_tempfile_path, 'JPEG', quality=quality)
|
||||||
|
if os.path.getsize(cover_tempfile_path) <= 200 * 1024: # Проверка размера файла в килобайтах
|
||||||
|
break
|
||||||
|
quality -= 5
|
||||||
|
|
||||||
|
assert os.path.exists(cover_tempfile_path), "Cover image not found"
|
||||||
|
except:
|
||||||
|
cover_content = None
|
||||||
|
cover_tempfile_path = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
audio = AudioSegment(content_file_bin)
|
audio = AudioSegment(content_file_bin)
|
||||||
audio = audio[:seconds_limit * 1000] if seconds_limit else audio
|
audio = audio[:seconds_limit * 1000] if seconds_limit else audio
|
||||||
audio.export(tempfile_path, format="mp3")
|
audio.export(tempfile_path, format="mp3", cover=cover_tempfile_path)
|
||||||
except BaseException as e:
|
except BaseException as e:
|
||||||
make_log("Storage", f"Error converting audio: {e}" + '\n' + traceback.format_exc(), level="error")
|
make_log("Storage", f"Error converting audio: {e}" + '\n' + traceback.format_exc(), level="error")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue