@profullstack/viral-video
Version:
CLI to generate 60s vertical video kits and optionally render MP4 using ffmpeg
62 lines (55 loc) • 1.7 kB
JavaScript
// index.js — thin wrapper for backward compatibility
// Delegates to the new module API [run()](src/index.js:1) and supports the same flags.
import process from "node:process";
import { run } from "./src/index.js";
function parseArgs(argv) {
const args = {};
for (let i = 0; i < argv.length; i++) {
const cur = argv[i];
if (!cur.startsWith("--")) continue;
const k = cur.slice(2);
const peek = argv[i + 1];
const v = peek && !peek.startsWith("--") ? (argv[i++], peek) : true;
args[k] = v;
}
return args;
}
function pickGender(argv) {
let gender = null;
for (const cur of argv) {
if (cur === "--male") gender = "male";
if (cur === "--female") gender = "female";
}
return gender;
}
function pickStyle(argv) {
let style = null;
for (const cur of argv) {
if (cur === "--cartoon") style = "cartoon";
if (cur === "--realistic") style = "realistic";
if (cur === "--ai-generated") style = "ai-generated";
}
return style;
}
function usage(code = 1) {
console.error('Usage: node index.js --topic "Your video topic" [--male|--female] [--cartoon|--realistic|--ai-generated] [--dry-run]');
process.exit(code);
}
(async () => {
const argv = process.argv.slice(2);
const args = parseArgs(argv);
if (!args.topic || typeof args.topic !== "string") usage(1);
const dryRun =
args["dry-run"] === true ||
process.env.DRY_RUN === "1" ||
process.env.DRY_RUN === "true";
const gender = pickGender(argv);
const style = pickStyle(argv);
try {
await run(args.topic, { dryRun, gender, style });
} catch (err) {
console.error("Build failed:", err?.message || err);
process.exit(1);
}
})();