mirror of
https://github.com/immich-app/immich.git
synced 2024-12-24 10:37:28 +02:00
069c68bfe4
Support the Blu-ray disc Audio-Video (BDAV) MPEG-2 Transport Stream (M2TS) format. https://en.wikipedia.org/wiki/.m2ts Fixes: #2350
151 lines
3.7 KiB
Dart
151 lines
3.7 KiB
Dart
import 'package:path/path.dart' as p;
|
|
|
|
class FileHelper {
|
|
static getMimeType(String filePath) {
|
|
var fileExtension = p.extension(filePath).split(".")[1];
|
|
|
|
switch (fileExtension.toLowerCase()) {
|
|
case 'gif':
|
|
return {"type": "image", "subType": "gif"};
|
|
|
|
case 'jpeg':
|
|
return {"type": "image", "subType": "jpeg"};
|
|
|
|
case 'jpg':
|
|
return {"type": "image", "subType": "jpeg"};
|
|
|
|
case 'png':
|
|
return {"type": "image", "subType": "png"};
|
|
|
|
case 'tif':
|
|
return {"type": "image", "subType": "tiff"};
|
|
|
|
case 'mov':
|
|
return {"type": "video", "subType": "quicktime"};
|
|
|
|
case 'mp4':
|
|
return {"type": "video", "subType": "mp4"};
|
|
|
|
case 'avi':
|
|
return {"type": "video", "subType": "x-msvideo"};
|
|
|
|
case 'heic':
|
|
return {"type": "image", "subType": "heic"};
|
|
|
|
case 'heif':
|
|
return {"type": "image", "subType": "heif"};
|
|
|
|
case 'dng':
|
|
return {"type": "image", "subType": "dng"};
|
|
|
|
case 'webp':
|
|
return {"type": "image", "subType": "webp"};
|
|
|
|
case '3gp':
|
|
return {"type": "video", "subType": "3gpp"};
|
|
|
|
case 'webm':
|
|
return {"type": "video", "subType": "webm"};
|
|
|
|
case 'avif':
|
|
return {"type": "image", "subType": "avif"};
|
|
|
|
case 'insp':
|
|
return {"type": "image", "subType": "jpeg"};
|
|
|
|
case 'insv':
|
|
return {"type": "video", "subType": "mp4"};
|
|
|
|
case 'arw':
|
|
return {"type": "image", "subType": "x-sony-arw"};
|
|
|
|
case 'raf':
|
|
return {"type": "image", "subType": "x-fuji-raf"};
|
|
|
|
case 'nef':
|
|
return {"type": "image", "subType": "x-nikon-nef"};
|
|
|
|
case 'srw':
|
|
return {"type": "image", "subType": "x-samsung-srw"};
|
|
|
|
case 'crw':
|
|
return {"type": "image", "subType": "x-canon-crw"};
|
|
|
|
case 'cr2':
|
|
return {"type": "image", "subType": "x-canon-cr2"};
|
|
|
|
case 'cr3':
|
|
return {"type": "image", "subType": "x-canon-cr3"};
|
|
|
|
case 'erf':
|
|
return {"type": "image", "subType": "x-epson-erf"};
|
|
|
|
case 'dcr':
|
|
return {"type": "image", "subType": "x-kodak-dcr"};
|
|
|
|
case 'k25':
|
|
return {"type": "image", "subType": "x-kodak-k25"};
|
|
|
|
case 'kdc':
|
|
return {"type": "image", "subType": "x-kodak-kdc"};
|
|
|
|
case 'mrw':
|
|
return {"type": "image", "subType": "x-minolta-mrw"};
|
|
|
|
case 'orf':
|
|
return {"type": "image", "subType": "x-olympus-orf"};
|
|
|
|
case 'raw':
|
|
return {"type": "image", "subType": "x-panasonic-raw"};
|
|
|
|
case 'pef':
|
|
return {"type": "image", "subType": "x-panasonic-pef"};
|
|
|
|
case 'x3f':
|
|
return {"type": "image", "subType": "x-sigma-x3f"};
|
|
|
|
case 'srf':
|
|
return {"type": "image", "subType": "x-sony-srf"};
|
|
|
|
case 'sr2':
|
|
return {"type": "image", "subType": "x-sony-sr2"};
|
|
|
|
case '3fr':
|
|
return {"type": "image", "subType": "x-hasselblad-3fr"};
|
|
|
|
case 'fff':
|
|
return {"type": "image", "subType": "x-hasselblad-fff"};
|
|
|
|
case 'rwl':
|
|
return {"type": "image", "subType": "x-leica-rwl"};
|
|
|
|
case 'ori':
|
|
return {"type": "image", "subType": "x-olympus-ori"};
|
|
|
|
case 'iiq':
|
|
return {"type": "image", "subType": "x-phaseone-iiq"};
|
|
|
|
case 'ari':
|
|
return {"type": "image", "subType": "x-arriflex-ari"};
|
|
|
|
case 'cap':
|
|
return {"type": "image", "subType": "x-phaseone-cap"};
|
|
|
|
case 'cin':
|
|
return {"type": "image", "subType": "x-phantom-cin"};
|
|
|
|
case 'jxl':
|
|
return {"type": "image", "subType": "jxl"};
|
|
|
|
case 'mts':
|
|
return {"type": "video", "subType": "mp2t"};
|
|
|
|
case 'm2ts':
|
|
return {"type": "video", "subType": "mp2t"};
|
|
|
|
default:
|
|
return {"type": "unsupport", "subType": "unsupport"};
|
|
}
|
|
}
|
|
}
|