53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
import QRCode from 'qrcode';
|
|
import { v4 as uuidv4 } from 'uuid';
|
|
import fs from 'fs';
|
|
import { createObjectCsvWriter as createCsvWriter } from 'csv-writer';
|
|
|
|
// CONFIG
|
|
const totalQRCodes = 50;
|
|
const baseUrl = 'https://hyperia.so/signup?token='; // Replace with your URL
|
|
const outputDir = './qr_codes';
|
|
|
|
// Ensure output directory exists
|
|
if (!fs.existsSync(outputDir)){
|
|
fs.mkdirSync(outputDir);
|
|
}
|
|
|
|
// Create CSV writer
|
|
const csvWriter = createCsvWriter({
|
|
path: 'tokens.csv',
|
|
header: [
|
|
{id: 'index', title: 'Index'},
|
|
{id: 'token', title: 'Token'},
|
|
{id: 'url', title: 'URL'},
|
|
{id: 'used', title: 'Used'}
|
|
]
|
|
});
|
|
|
|
const records = [];
|
|
|
|
(async () => {
|
|
for (let i = 0; i < totalQRCodes; i++) {
|
|
const token = uuidv4();
|
|
const fullUrl = `${baseUrl}${token}`;
|
|
const fileName = `${outputDir}/qr_${i + 1}_${token}.png`;
|
|
|
|
try {
|
|
await QRCode.toFile(fileName, fullUrl);
|
|
console.log(`Generated: ${fileName}`);
|
|
|
|
records.push({
|
|
index: i + 1,
|
|
token,
|
|
url: fullUrl,
|
|
used: 'N'
|
|
});
|
|
} catch (err) {
|
|
console.error(`Error generating QR code ${i + 1}:`, err);
|
|
}
|
|
}
|
|
|
|
// Save tokens to CSV
|
|
await csvWriter.writeRecords(records);
|
|
console.log('All QR codes generated and tokens saved to tokens.csv');
|
|
})(); |