可能な限り動画や画像のサムネイルを提供する
This commit is contained in:
		| @@ -54,23 +54,22 @@ interface ISend { | |||||||
|  |  | ||||||
| function thumbnail(data: stream.Readable, type: string, resize: number): ISend { | function thumbnail(data: stream.Readable, type: string, resize: number): ISend { | ||||||
| 	const readable: stream.Readable = (() => { | 	const readable: stream.Readable = (() => { | ||||||
| 		// 画像ではない場合 | 		// 動画か画像であれば | ||||||
| 		if (!/^image\/.*$/.test(type)) { | 		if (/^(?:video|image)\/.*$/.test(type)) { | ||||||
| 			// 使わないことにしたストリームはしっかり取り壊しておく | 			// 0フレーム目を送る | ||||||
| 			data.destroy(); | 			try { | ||||||
| 			return fs.createReadStream(`${__dirname}/assets/not-an-image.png`); | 				return gm(data).selectFrame(0).stream(); | ||||||
| 		} | 			// だめだったら | ||||||
|  | 			} catch (e) { | ||||||
| 		const imageType = type.split('/')[1]; | 				// 使わないことになったストリームはしっかり取り壊す | ||||||
|  |  | ||||||
| 		// 画像でもPNGかJPEGでないならダメ |  | ||||||
| 		if (imageType != 'png' && imageType != 'jpeg') { |  | ||||||
| 			// 使わないことにしたストリームはしっかり取り壊しておく |  | ||||||
| 				data.destroy(); | 				data.destroy(); | ||||||
| 				return fs.createReadStream(`${__dirname}/assets/thumbnail-not-available.png`); | 				return fs.createReadStream(`${__dirname}/assets/thumbnail-not-available.png`); | ||||||
| 			} | 			} | ||||||
|  | 		// 動画か画像以外 | ||||||
| 		return data; | 		} else { | ||||||
|  | 			data.destroy(); | ||||||
|  | 			return fs.createReadStream(`${__dirname}/assets/not-an-image.png`); | ||||||
|  | 		} | ||||||
| 	})(); | 	})(); | ||||||
|  |  | ||||||
| 	let g = gm(readable); | 	let g = gm(readable); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 tamaina
					tamaina