commit 654d517dbc9ffa871891bb7e2ffecc99c2bb2dc3
parent 9abad15cca8f91bb24f981ec53aef828cd6dab8d
Author: Pablo Murad <pblmrd@gmail.com>
Date: Sat, 24 Jan 2026 22:03:05 -0300
mais videos e audios
Diffstat:
3 files changed, 34 insertions(+), 20 deletions(-)
diff --git a/README.md b/README.md
@@ -65,8 +65,8 @@ Acesse http://localhost:19283 após iniciar com `lazier web` ou Docker.
## Formatos Suportados
-- **Áudio:** mp3, wav, m4a, aac, flac, ogg, opus, wma
-- **Vídeo:** mp4, avi, mkv, mov, wmv, flv, webm, m4v
+- **Áudio:** mp3, wav, m4a, aac, flac, ogg, opus, wma, 3gp, 3g2, amr, au, caf, mka, ra, rm, spx, tta, wv
+- **Vídeo:** mp4, avi, mkv, mov, wmv, flv, webm, m4v, 3gp, 3g2, asf, f4v, m2v, mts, m2ts, ogv, rmvb, ts, vob
- **Documentos:** pdf, txt, md, html
- **YouTube:** Vídeos e playlists
- **Web:** Páginas web (extração automática)
diff --git a/lazier/core/file_handler.py b/lazier/core/file_handler.py
@@ -7,17 +7,27 @@ from pathlib import Path
from typing import Tuple, Optional
import mimetypes
+from ..utils import AUDIO_EXTENSIONS, VIDEO_EXTENSIONS, PDF_EXTENSIONS, TEXT_EXTENSIONS
+
# Tipos MIME aceitos
AUDIO_MIMES = {
'audio/mpeg', 'audio/mp3', 'audio/wav', 'audio/x-wav',
'audio/mp4', 'audio/x-m4a', 'audio/aac', 'audio/flac',
- 'audio/ogg', 'audio/opus', 'audio/x-ms-wma'
+ 'audio/ogg', 'audio/opus', 'audio/x-ms-wma',
+ # Novos formatos
+ 'audio/3gpp', 'audio/3gpp2', 'audio/amr', 'audio/basic',
+ 'audio/x-caf', 'audio/x-matroska', 'audio/vnd.rn-realaudio',
+ 'audio/x-speex', 'audio/x-tta', 'audio/x-wavpack'
}
VIDEO_MIMES = {
'video/mp4', 'video/x-msvideo', 'video/x-matroska',
'video/quicktime', 'video/x-ms-wmv', 'video/x-flv',
- 'video/webm', 'video/3gpp'
+ 'video/webm', 'video/3gpp',
+ # Novos formatos
+ 'video/3gpp2', 'video/x-ms-asf', 'video/x-f4v',
+ 'video/mpeg', 'video/mp2t', 'video/x-ogm', 'video/x-ms-rmvb',
+ 'video/mp2t', 'video/dvd'
}
DOCUMENT_MIMES = {
@@ -25,14 +35,8 @@ DOCUMENT_MIMES = {
'text/html', 'application/xhtml+xml'
}
-ALLOWED_EXTENSIONS = {
- # Áudio
- '.mp3', '.wav', '.m4a', '.aac', '.flac', '.ogg', '.opus', '.wma',
- # Vídeo
- '.mp4', '.avi', '.mkv', '.mov', '.wmv', '.flv', '.webm', '.m4v',
- # Documentos
- '.pdf', '.txt', '.md', '.html', '.htm'
-}
+# Combina todas as extensões permitidas
+ALLOWED_EXTENSIONS = AUDIO_EXTENSIONS | VIDEO_EXTENSIONS | PDF_EXTENSIONS | TEXT_EXTENSIONS
MAX_FILE_SIZE = int(os.getenv('LAZIER_MAX_UPLOAD_SIZE', '524288000')) # 500MB padrão
@@ -58,14 +62,12 @@ def validate_upload_file(file_path: str, file_size: int) -> Tuple[bool, Optional
if ext not in ALLOWED_EXTENSIONS:
return False, None, f"Extensão não permitida: {ext}"
- # Detecta tipo
- mime_type, _ = mimetypes.guess_type(file_path)
-
- if ext in ['.mp3', '.wav', '.m4a', '.aac', '.flac', '.ogg', '.opus', '.wma']:
+ # Detecta tipo usando as constantes de utils.py
+ if ext in AUDIO_EXTENSIONS:
return True, 'audio', None
- elif ext in ['.mp4', '.avi', '.mkv', '.mov', '.wmv', '.flv', '.webm', '.m4v']:
+ elif ext in VIDEO_EXTENSIONS:
return True, 'video', None
- elif ext in ['.pdf', '.txt', '.md', '.html', '.htm']:
+ elif ext in PDF_EXTENSIONS or ext in TEXT_EXTENSIONS:
return True, 'document', None
return False, None, "Tipo de arquivo não reconhecido"
diff --git a/lazier/utils.py b/lazier/utils.py
@@ -14,9 +14,21 @@ from urllib.parse import urlparse
# Extensões de áudio suportadas
-AUDIO_EXTENSIONS = {'.mp3', '.wav', '.m4a', '.aac', '.flac', '.ogg', '.opus', '.wma'}
+AUDIO_EXTENSIONS = {
+ # Formatos comuns
+ '.mp3', '.wav', '.m4a', '.aac', '.flac', '.ogg', '.opus', '.wma',
+ # Formatos menos comuns
+ '.3gp', '.3g2', '.amr', '.au', '.caf', '.mka', '.ra', '.rm',
+ '.spx', '.tta', '.wv'
+}
# Extensões de vídeo suportadas
-VIDEO_EXTENSIONS = {'.mp4', '.avi', '.mkv', '.mov', '.wmv', '.flv', '.webm', '.m4v'}
+VIDEO_EXTENSIONS = {
+ # Formatos comuns
+ '.mp4', '.avi', '.mkv', '.mov', '.wmv', '.flv', '.webm', '.m4v',
+ # Formatos menos comuns
+ '.3gp', '.3g2', '.asf', '.f4v', '.m2v', '.mts', '.m2ts', '.ogv',
+ '.rmvb', '.ts', '.vob'
+}
# Extensões de texto/documento suportadas
TEXT_EXTENSIONS = {'.txt', '.md', '.html', '.htm'}
PDF_EXTENSIONS = {'.pdf'}