YGOProxiesGenerator/index.js
2020-01-22 17:20:28 +01:00

99 lines
2.8 KiB
JavaScript

PDFDocument = require('pdfkit');
fs = require('fs');
Path = require('path');
Axios = require('axios');
doc = new PDFDocument({
size: 'A4',
margin: 5
});
//Permet de récupérer des images de cartes
async function downloadImage(prmIdCard) {
const url = 'https://storage.googleapis.com/ygoprodeck.com/pics/' + prmIdCard + '.jpg';
const path = Path.resolve(__dirname, 'images', prmIdCard + '.jpg');
const writer = fs.createWriteStream(path);
const response = await Axios({
url,
method: 'GET',
responseType: 'stream'
})
response.data.pipe(writer)
return new Promise((resolve, reject) => {
writer.on('finish', resolve)
writer.on('error', reject)
})
}
//console.log(fs.existsSync('./images/10045474.jpg'));
decklist = require('./deck.json');
const downloadImages = async _ => {
for (let i = 0; i < decklist.length; i++) {
if(decklist[i].charAt(0) === "0") {
decklist[i] = decklist[i].slice(1);
}
const path = './images/' + decklist[i] + '.jpg';
if(!fs.existsSync(path)) {
console.log(decklist[i]);
await downloadImage(decklist[i]);
}
}
}
const makePdfProxies = async _ => {
//Pipe its output somewhere, like to a file or HTTP response
//See below for browser usage
doc.pipe(fs.createWriteStream('output.pdf'))
let x = 32;
let y = 32;
let width = 173;
let height = 252;
for (let i = 0; i < decklist.length; i++) {
// console.log("i : " + i);
// console.log("x : " + x);
// console.log("y : " + y);
// console.log("mod : " + i % 3);
console.log(decklist[i]);
const path = './images/' + decklist[i] + '.jpg';
if (i % 3 !== 0) {
x = x + width + 5;
//y = y + height;
} else if (i !== 0) {
x = 32;
y = y + height + 5;
}
if (y + height > 842) {
y = 32;
x = 32;
doc.addPage().image('./images/' + decklist[i] + '.jpg', x, y, {
fit: [width, height],
// align: 'center',
// valign: 'center'
});
} else {
doc.image('./images/' + decklist[i] + '.jpg', x, y, {
fit: [width, height],
// align: 'center',
// valign: 'center'
});
}
}
//Add an image, constrain it to a given size, and center it vertically and horizontally
doc.end();
}
downloadImages().then(e => {
makePdfProxies();
}).catch(error => console.error(error));