enhance(backend): ファイル種別が判定できない場合、拡張子を参照するように
This commit is contained in:
		
							parent
							
								
									836ed98c54
								
							
						
					
					
						commit
						4fcb80bcf2
					
				|  | @ -469,13 +469,14 @@ export class DriveService { | |||
| 		if (user && this.meta.sensitiveMediaDetection === 'remote' && this.userEntityService.isLocalUser(user)) skipNsfwCheck = true; | ||||
| 
 | ||||
| 		const info = await this.fileInfoService.getFileInfo(path, { | ||||
| 			fileName: name, | ||||
| 			skipSensitiveDetection: skipNsfwCheck, | ||||
| 			sensitiveThreshold: // 感度が高いほどしきい値は低くすることになる
 | ||||
| 			this.meta.sensitiveMediaDetectionSensitivity === 'veryHigh' ? 0.1 : | ||||
| 			this.meta.sensitiveMediaDetectionSensitivity === 'high' ? 0.3 : | ||||
| 			this.meta.sensitiveMediaDetectionSensitivity === 'low' ? 0.7 : | ||||
| 			this.meta.sensitiveMediaDetectionSensitivity === 'veryLow' ? 0.9 : | ||||
| 			0.5, | ||||
| 				this.meta.sensitiveMediaDetectionSensitivity === 'veryHigh' ? 0.1 : | ||||
| 				this.meta.sensitiveMediaDetectionSensitivity === 'high' ? 0.3 : | ||||
| 				this.meta.sensitiveMediaDetectionSensitivity === 'low' ? 0.7 : | ||||
| 				this.meta.sensitiveMediaDetectionSensitivity === 'veryLow' ? 0.9 : | ||||
| 				0.5, | ||||
| 			sensitiveThresholdForPorn: 0.75, | ||||
| 			enableSensitiveMediaDetectionForVideos: this.meta.enableSensitiveMediaDetectionForVideos, | ||||
| 		}); | ||||
|  |  | |||
|  | @ -64,6 +64,7 @@ export class FileInfoService { | |||
| 	 */ | ||||
| 	@bindThis | ||||
| 	public async getFileInfo(path: string, opts: { | ||||
| 		fileName?: string | null; | ||||
| 		skipSensitiveDetection: boolean; | ||||
| 		sensitiveThreshold?: number; | ||||
| 		sensitiveThresholdForPorn?: number; | ||||
|  | @ -76,6 +77,26 @@ export class FileInfoService { | |||
| 
 | ||||
| 		let type = await this.detectType(path); | ||||
| 
 | ||||
| 		if (type.mime === TYPE_OCTET_STREAM.mime && opts.fileName != null) { | ||||
| 			const ext = opts.fileName.split('.').pop(); | ||||
| 			if (ext === 'txt') { | ||||
| 				type = { | ||||
| 					mime: 'text/plain', | ||||
| 					ext: 'txt', | ||||
| 				}; | ||||
| 			} else if (ext === 'csv') { | ||||
| 				type = { | ||||
| 					mime: 'text/csv', | ||||
| 					ext: 'csv', | ||||
| 				}; | ||||
| 			} else if (ext === 'json') { | ||||
| 				type = { | ||||
| 					mime: 'application/json', | ||||
| 					ext: 'json', | ||||
| 				}; | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		// image dimensions
 | ||||
| 		let width: number | undefined; | ||||
| 		let height: number | undefined; | ||||
|  | @ -438,12 +459,12 @@ export class FileInfoService { | |||
| 	 */ | ||||
| 	@bindThis | ||||
| 	private async detectImageSize(path: string): Promise<{ | ||||
| 	width: number; | ||||
| 	height: number; | ||||
| 	wUnits: string; | ||||
| 	hUnits: string; | ||||
| 	orientation?: number; | ||||
| }> { | ||||
| 		width: number; | ||||
| 		height: number; | ||||
| 		wUnits: string; | ||||
| 		hUnits: string; | ||||
| 		orientation?: number; | ||||
| 	}> { | ||||
| 		const readable = fs.createReadStream(path); | ||||
| 		const imageSize = await probeImageSize(readable); | ||||
| 		readable.destroy(); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue