Compare commits
	
		
			2 commits
		
	
	
		
			e9b50164a2
			...
			b0738d9710
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| b0738d9710 | |||
| 99d855c4d4 | 
					 1 changed files with 8 additions and 5 deletions
				
			
		
							
								
								
									
										13
									
								
								index.ts
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								index.ts
									
										
									
									
									
								
							|  | @ -60,6 +60,7 @@ async function processSnapshots( | |||
|   videos: VideoInfo[], | ||||
|   snapshotsDir: string, | ||||
|   count: number, | ||||
|   sizeLimit: number, | ||||
| ) { | ||||
|   const totalDuration = videos.reduce((acc, video) => acc + video.duration, 0); | ||||
|   const currentHour = new Date().getHours(); | ||||
|  | @ -91,7 +92,7 @@ async function processSnapshots( | |||
| 
 | ||||
|       const stats = await stat(snapshotPath); | ||||
|       size = stats.size; | ||||
|       if (size < 5 * 1024) { | ||||
|       if (size < sizeLimit) { | ||||
|         logger.info( | ||||
|           `Snapshot ${ | ||||
|             i + 1 | ||||
|  | @ -108,6 +109,7 @@ async function setupSnapshotServer( | |||
|   videoPaths: string[], | ||||
|   snapshotsDir: string, | ||||
|   count: number, | ||||
|   sizeLimit: number, | ||||
| ) { | ||||
|   const app = express(); | ||||
| 
 | ||||
|  | @ -116,10 +118,10 @@ async function setupSnapshotServer( | |||
|     const videos = await getVideoInfo(videoPaths); | ||||
| 
 | ||||
|     // noinspection ES6MissingAwait
 | ||||
|     processSnapshots(videos, snapshotsDir, count); | ||||
|     processSnapshots(videos, snapshotsDir, count, sizeLimit); | ||||
| 
 | ||||
|     schedule.scheduleJob("0 * * * *", () => | ||||
|       processSnapshots(videos, snapshotsDir, count), | ||||
|       processSnapshots(videos, snapshotsDir, count, sizeLimit), | ||||
|     ); | ||||
| 
 | ||||
|     app.get("/:magic?", async (req, res) => { | ||||
|  | @ -136,11 +138,10 @@ async function setupSnapshotServer( | |||
|         if (magic) { | ||||
|           const hash = createHash("md5").update(magic).digest("hex"); | ||||
|           const index = parseInt(hash.substring(0, 8), 16) % files.length; | ||||
|           // Cache until the next hour rolls over
 | ||||
|           res.sendFile(files[index], { | ||||
|             headers: { | ||||
|               "Cache-Control": `public, max-age=${ | ||||
|                 3600 - new Date().getMinutes() * 60 | ||||
|                 3600 - new Date().getMinutes() * 60 - new Date().getSeconds() | ||||
|               }`,
 | ||||
|             }, | ||||
|             root: currentDir, | ||||
|  | @ -172,11 +173,13 @@ program | |||
|   .argument("<paths...>", "Video file paths") | ||||
|   .option("-d, --directory <dir>", "Directory to store snapshots", "snapshots") | ||||
|   .option("-c, --count <count>", "Number of snapshots to take per hour", "32") | ||||
|   .option("--size-limit <size>", "Size limit for snapshots in KiB", "7") | ||||
|   .action(async (videoPaths: string[], options) => { | ||||
|     await setupSnapshotServer( | ||||
|       videoPaths, | ||||
|       options.directory, | ||||
|       parseInt(options.count, 10), | ||||
|       parseInt(options.sizeLimit, 10) * 1024, | ||||
|     ); | ||||
|   }); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue