Compare commits
No commits in common. "b0738d9710746491e615df62f073bbd48bf8b20f" and "e9b50164a2b51bedf80c6e345a73f1455d23cbee" have entirely different histories.
b0738d9710
...
e9b50164a2
1 changed files with 5 additions and 8 deletions
13
index.ts
13
index.ts
|
@ -60,7 +60,6 @@ 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();
|
||||
|
@ -92,7 +91,7 @@ async function processSnapshots(
|
|||
|
||||
const stats = await stat(snapshotPath);
|
||||
size = stats.size;
|
||||
if (size < sizeLimit) {
|
||||
if (size < 5 * 1024) {
|
||||
logger.info(
|
||||
`Snapshot ${
|
||||
i + 1
|
||||
|
@ -109,7 +108,6 @@ async function setupSnapshotServer(
|
|||
videoPaths: string[],
|
||||
snapshotsDir: string,
|
||||
count: number,
|
||||
sizeLimit: number,
|
||||
) {
|
||||
const app = express();
|
||||
|
||||
|
@ -118,10 +116,10 @@ async function setupSnapshotServer(
|
|||
const videos = await getVideoInfo(videoPaths);
|
||||
|
||||
// noinspection ES6MissingAwait
|
||||
processSnapshots(videos, snapshotsDir, count, sizeLimit);
|
||||
processSnapshots(videos, snapshotsDir, count);
|
||||
|
||||
schedule.scheduleJob("0 * * * *", () =>
|
||||
processSnapshots(videos, snapshotsDir, count, sizeLimit),
|
||||
processSnapshots(videos, snapshotsDir, count),
|
||||
);
|
||||
|
||||
app.get("/:magic?", async (req, res) => {
|
||||
|
@ -138,10 +136,11 @@ 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 - new Date().getSeconds()
|
||||
3600 - new Date().getMinutes() * 60
|
||||
}`,
|
||||
},
|
||||
root: currentDir,
|
||||
|
@ -173,13 +172,11 @@ 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…
Reference in a new issue