Ajoute un script d'import d'images Wikimedia
This commit is contained in:
@@ -1,48 +1,12 @@
|
||||
const fs = require('fs/promises');
|
||||
const fsSync = require('fs');
|
||||
const path = require('path');
|
||||
const readline = require('readline');
|
||||
const { promptForBundlePath } = require('./lib/bundles');
|
||||
|
||||
const CONTENT_DIR = path.resolve('content');
|
||||
const TEMPLATE_PATH = path.resolve('data/metadata_template.yaml');
|
||||
const MEDIA_TYPES = ['images', 'sounds', 'videos'];
|
||||
|
||||
function askQuestion(query) {
|
||||
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
||||
|
||||
return new Promise(resolve => rl.question(query, answer => { rl.close(); resolve(answer.trim()); }));
|
||||
}
|
||||
|
||||
async function findLatestBundle(dir) {
|
||||
let latest = { path: null, time: 0 };
|
||||
|
||||
async function search(current) {
|
||||
const entries = await fs.readdir(current, { withFileTypes: true });
|
||||
|
||||
for (const entry of entries) {
|
||||
const fullPath = path.join(current, entry.name);
|
||||
|
||||
if (entry.isDirectory()) {
|
||||
const hasIndex = (await fs.readdir(fullPath)).includes('index.md');
|
||||
|
||||
if (hasIndex) {
|
||||
const stat = await fs.stat(fullPath);
|
||||
|
||||
if (stat.mtimeMs > latest.time) {
|
||||
latest = { path: fullPath, time: stat.mtimeMs };
|
||||
}
|
||||
} else {
|
||||
await search(fullPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await search(dir);
|
||||
|
||||
return latest.path;
|
||||
}
|
||||
|
||||
async function loadTemplate() {
|
||||
return fs.readFile(TEMPLATE_PATH, 'utf8');
|
||||
}
|
||||
@@ -97,29 +61,7 @@ async function generateYamlFiles(bundlePath, yamlTemplate) {
|
||||
|
||||
async function main() {
|
||||
const manualPath = process.argv[2];
|
||||
|
||||
let bundle;
|
||||
|
||||
if (manualPath) {
|
||||
bundle = path.resolve(manualPath);
|
||||
} else {
|
||||
const latest = await findLatestBundle(CONTENT_DIR);
|
||||
|
||||
if (!latest) {
|
||||
console.error('No bundle found in content/.');
|
||||
return;
|
||||
}
|
||||
|
||||
const confirm = await askQuestion(`Use latest bundle found: ${latest}? (Y/n) `);
|
||||
|
||||
if (confirm.toLowerCase() === 'n') {
|
||||
const inputPath = await askQuestion('Enter the relative path to your bundle: ');
|
||||
|
||||
bundle = path.resolve(inputPath);
|
||||
} else {
|
||||
bundle = latest;
|
||||
}
|
||||
}
|
||||
const bundle = await promptForBundlePath(manualPath, { contentDir: CONTENT_DIR });
|
||||
|
||||
const template = await loadTemplate();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user