diff --git a/ui/src/app/api/datasets/listImages/route.ts b/ui/src/app/api/datasets/listImages/route.ts index 74828b3f..7f144f8c 100644 --- a/ui/src/app/api/datasets/listImages/route.ts +++ b/ui/src/app/api/datasets/listImages/route.ts @@ -36,7 +36,7 @@ export async function POST(request: Request) { * @returns Array of absolute paths to image files */ function findImagesRecursively(dir: string): string[] { - const imageExtensions = ['.png', '.jpg', '.jpeg', '.webp', '.mp4', '.avi', '.mov', '.mkv', '.wmv', '.m4v', '.flv', '.mp3', '.wav']; + const imageExtensions = ['.png', '.jpg', '.jpeg', '.webp', '.mp4', '.avi', '.mov', '.mkv', '.wmv', '.m4v', '.flv', '.mp3', '.wav', '.flac', '.ogg']; let results: string[] = []; const items = fs.readdirSync(dir); diff --git a/ui/src/app/api/files/[...filePath]/route.ts b/ui/src/app/api/files/[...filePath]/route.ts index 689bebbe..4d9f44b7 100644 --- a/ui/src/app/api/files/[...filePath]/route.ts +++ b/ui/src/app/api/files/[...filePath]/route.ts @@ -62,6 +62,8 @@ export async function GET(request: NextRequest, { params }: { params: { filePath // Audio '.mp3': 'audio/mpeg', '.wav': 'audio/wav', + '.flac': 'audio/flac', + '.ogg': 'audio/ogg', }; const contentType = contentTypeMap[ext] || 'application/octet-stream'; diff --git a/ui/src/app/api/img/[...imagePath]/route.ts b/ui/src/app/api/img/[...imagePath]/route.ts index 26f3353a..8bbf358d 100644 --- a/ui/src/app/api/img/[...imagePath]/route.ts +++ b/ui/src/app/api/img/[...imagePath]/route.ts @@ -24,6 +24,8 @@ const contentTypeMap: { [key: string]: string } = { // Audio '.mp3': 'audio/mpeg', '.wav': 'audio/wav', + '.flac': 'audio/flac', + '.ogg': 'audio/ogg', }; export async function GET(request: NextRequest, { params }: { params: { imagePath: string } }) { diff --git a/ui/src/app/api/img/delete/route.ts b/ui/src/app/api/img/delete/route.ts index 2b5b16a3..b6f56d69 100644 --- a/ui/src/app/api/img/delete/route.ts +++ b/ui/src/app/api/img/delete/route.ts @@ -15,7 +15,7 @@ export async function POST(request: Request) { } // make sure it is an image - if (!/\.(jpg|jpeg|png|bmp|gif|tiff|webp|mp4|mp3|wav)$/i.test(imgPath.toLowerCase())) { + if (!/\.(jpg|jpeg|png|bmp|gif|tiff|webp|mp4|mp3|wav|flac|ogg)$/i.test(imgPath.toLowerCase())) { return NextResponse.json({ error: 'Not an image' }, { status: 400 }); } diff --git a/ui/src/app/api/jobs/[jobID]/samples/route.ts b/ui/src/app/api/jobs/[jobID]/samples/route.ts index fb93e7f4..05918bd6 100644 --- a/ui/src/app/api/jobs/[jobID]/samples/route.ts +++ b/ui/src/app/api/jobs/[jobID]/samples/route.ts @@ -29,7 +29,7 @@ export async function GET(request: NextRequest, { params }: { params: { jobID: s const samples = fs .readdirSync(samplesFolder) .filter(file => { - return file.endsWith('.png') || file.endsWith('.jpg') || file.endsWith('.jpeg') || file.endsWith('.webp') || file.endsWith('.mp4') || file.endsWith('mp3') || file.endsWith('wav'); + return file.endsWith('.png') || file.endsWith('.jpg') || file.endsWith('.jpeg') || file.endsWith('.webp') || file.endsWith('.mp4') || file.endsWith('mp3') || file.endsWith('wav') || file.endsWith('flac') || file.endsWith('ogg'); }) .map(file => { return path.join(samplesFolder, file); diff --git a/ui/src/components/AddImagesModal.tsx b/ui/src/components/AddImagesModal.tsx index 074b7f7d..ee82ff67 100644 --- a/ui/src/components/AddImagesModal.tsx +++ b/ui/src/components/AddImagesModal.tsx @@ -210,7 +210,7 @@ export default function AddImagesModal() { () => ({ 'image/*': ['.png', '.jpg', '.jpeg', '.gif', '.bmp', '.webp'], 'video/*': ['.mp4', '.avi', '.mov', '.mkv', '.wmv', '.m4v', '.flv'], - 'audio/*': ['.mp3', '.wav'], + 'audio/*': ['.mp3', '.wav', '.flac', '.ogg'], 'text/*': ['.txt'], }), [], diff --git a/ui/src/helpers/captionJobConfig.ts b/ui/src/helpers/captionJobConfig.ts index 074613f2..c6dbe26d 100644 --- a/ui/src/helpers/captionJobConfig.ts +++ b/ui/src/helpers/captionJobConfig.ts @@ -18,7 +18,7 @@ export const defaultCaptionJobConfig: CaptionJobConfig = { quantize: true, qtype: 'float8', low_vram: true, - extensions: ['mp3', 'wav'], + extensions: ['mp3', 'wav', 'flac', 'ogg'], path_to_caption: '', recaption: false, }, diff --git a/ui/src/helpers/captionOptions.ts b/ui/src/helpers/captionOptions.ts index 64c8d8d8..35392276 100644 --- a/ui/src/helpers/captionOptions.ts +++ b/ui/src/helpers/captionOptions.ts @@ -16,7 +16,7 @@ export interface CaptionOption { const defaultNameOrPath = ''; -const extensionsAudio = ['mp3', 'wav']; +const extensionsAudio = ['mp3', 'wav', 'flac', 'ogg']; const extensionsImage = ['jpg', 'jpeg', 'png', 'bmp', 'webp']; const defaultExtensions = [...extensionsImage]; diff --git a/ui/src/utils/basic.ts b/ui/src/utils/basic.ts index f178e0ad..4870a569 100644 --- a/ui/src/utils/basic.ts +++ b/ui/src/utils/basic.ts @@ -6,7 +6,7 @@ export const wait = (ms: number) => new Promise(resolve => setTimeout(resolve, m export const imgExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.svg', '.bmp']; export const videoExtensions = ['.mp4', '.avi', '.mov', '.mkv', '.wmv', '.m4v', '.flv']; -export const audioExtensions = ['.mp3', '.wav']; +export const audioExtensions = ['.mp3', '.wav', '.flac', '.ogg']; export const isVideo = (filePath: string) => videoExtensions.includes(filePath.toLowerCase().slice(-4)); export const isImage = (filePath: string) => imgExtensions.includes(filePath.toLowerCase().slice(-4));