save chrrent changes

This commit is contained in:
2025-08-17 14:24:51 +02:00
parent 056b4091ef
commit 60a5272054
9 changed files with 5507 additions and 19 deletions

79
src/index_prompt.ts Normal file
View File

@ -0,0 +1,79 @@
import { generateImage } from './lib/image-generator';
import { generateVideo } from './lib/video-generator';
import { logger } from './lib/logger';
import { Scene } from './types';
import scenes from './scenes/space.json';
interface ProcessedScene {
scene: Scene;
generatedImagePath: string;
}
async function prepareImageForScene(scene: Scene): Promise<ProcessedScene | null> {
try {
const startTime = Date.now();
logger.info(`--- Preparing image for scene: ${scene.idea} ---`);
const timestamp = new Date().getTime();
const imageFileName = `${scene.idea.replace(/\s/g, '_')}_${timestamp}.png`;
const generatedImagePath = await generateImage(
scene.image_prompt,
imageFileName,
'flux',
{ width: 1280, height: 720 }
);
logger.debug(`Generated new image from prompt, saved to: ${generatedImagePath}`);
const endTime = Date.now();
const durationInSeconds = (endTime - startTime) / 1000;
logger.info(`--- Finished preparing image for scene: ${scene.idea} in ${durationInSeconds.toFixed(2)} seconds ---`);
return { scene, generatedImagePath };
} catch (error) {
logger.error(`Failed to prepare image for scene "${scene.idea}":`, error);
return null;
}
}
async function generateVideoForScene(processedScene: ProcessedScene) {
const { scene, generatedImagePath } = processedScene;
try {
const startTime = Date.now();
logger.info(`--- Generating video for scene: ${scene.idea} ---`);
const timestamp = new Date().getTime();
const videoFileName = `${scene.idea.replace(/\s/g, '_')}_${timestamp}.mp4`;
await generateVideo(
scene.video_prompt,
generatedImagePath,
videoFileName,
{ width: 1280, height: 720 }
);
const endTime = Date.now();
const durationInSeconds = (endTime - startTime) / 1000;
logger.info(`--- Finished generating video for scene: ${scene.idea} in ${durationInSeconds.toFixed(2)} seconds ---`);
} catch (error) {
logger.error(`Failed to generate video for scene "${scene.idea}":`, error);
}
}
(async () => {
const allScenes: Scene[] = scenes;
while (true) {
const preparedImages: ProcessedScene[] = [];
logger.info('--- Starting image preparation phase ---');
for (const scene of allScenes) {
const result = await prepareImageForScene(scene);
if (result) {
preparedImages.push(result);
}
}
logger.info('--- Finished image preparation phase ---');
logger.info('--- Starting video generation phase ---');
for (const processedScene of preparedImages) {
await generateVideoForScene(processedScene);
}
logger.info('--- Finished video generation phase ---');
}
})();