This commit is contained in:
Flummi
2022-01-05 20:21:50 +01:00
parent d558977176
commit 90a86133db
12 changed files with 63 additions and 44 deletions

View File

@ -1,8 +1,6 @@
import cfg from "../src/inc/config.mjs";
import sql from "../src/inc/sql.mjs";
import { promises as fs } from "fs";
import fs from "fs";
import { exec as _exec } from "child_process";
import fetch from "flumm-fetch-cookies";
const exec = cmd => new Promise((resolve, reject) => {
_exec(cmd, { maxBuffer: 5e3 * 1024 }, (err, stdout, stderr) => {
@ -15,9 +13,13 @@ const exec = cmd => new Promise((resolve, reject) => {
});
const _args = process.argv.slice(2);
const _itemid = +_args[0] || 1;
const _itemid = +_args[0] || 0;
const items = await sql('items').where('id', _itemid);//.where('mime', 'like', 'audio/%');
let items;
if(_itemid > 0)
items = await sql('items').where('id', _itemid);
else
items = await sql('items').orderBy('id', 'asc')/*.whereNot('src', 'like', '%soundcloud%')*/.where('mime', 'like', 'audio/%');
let count = 1;
let total = items.length;
@ -25,36 +27,44 @@ for(let item of items) {
const itemid = item.id;
const filename = item.dest;
const mime = item.mime;
const link = item.src;
try {
if(mime.startsWith('video/') || mime == 'image/gif')
await exec(`ffmpegthumbnailer -i./public/b/${filename} -s1024 -o./tmp/${itemid}.png`);
else if(mime.startsWith('image/') && mime != 'image/gif')
await exec(`convert ./public/b/${filename} ./tmp/${itemid}.png`);
else if(mime.startsWith('audio/')) {
if(item.src.match(/soundcloud/)) {
const cover = (await exec(`yt-dlp -f 'bv*[height<=720]+ba/b[height<=720] / wv*+ba/w' --get-thumbnail "${item.src}"`)).stdout.trim();
if(link.match(/soundcloud/)) {
const cover = (await exec(`yt-dlp -f 'bv*[height<=720]+ba/b[height<=720] / wv*+ba/w' --get-thumbnail "${link}"`)).stdout.trim();
if(!cover.match(/default_avatar/)) {
try {
await exec(`wget "${cover}" -O ./tmp/${itemid}.jpg`);
const size = (await fs.stat(`./tmp/${itemid}.jpg`)).size;
if(size >= 0)
const size = (await fs.promises.stat(`./tmp/${itemid}.jpg`)).size;
if(size >= 0) {
await exec(`convert ./tmp/${itemid}.jpg ./tmp/${itemid}.png`);
await fs.unlink(`./tmp/${itemid}.jpg`);
} catch(err) {}
await exec(`convert ./tmp/${itemid}.jpg -resize 50% ./public/ca/${itemid}.webp`);
}
} catch(err) {
//console.log(err);
}
}
else
else {
await exec(`ffmpeg -i ./public/b/${filename} -update 1 -map 0:v -map 0:1 -c copy ./tmp/${itemid}.png`);
await exec(`convert ./tmp/${itemid}.png ./public/ca/${itemid}.webp`);
}
}
else
else {
await exec(`ffmpeg -i ./public/b/${filename} -update 1 -map 0:v -map 0:1 -c copy ./tmp/${itemid}.png`);
await fs.copyFile(`./tmp/${itemid}.png`, `./public/ca/${itemid}.png`);
await exec(`convert ./tmp/${itemid}.png ./public/ca/${itemid}.webp`);
}
}
await exec(`convert "./tmp/${itemid}.png" -resize "128x128^" -gravity center -crop 128x128+0+0 +repage ./public/t/${itemid}.png`);
await fs.unlink(`./tmp/${itemid}.png`);
await exec(`convert "./tmp/${itemid}.png" -resize "128x128^" -gravity center -crop 128x128+0+0 +repage ./public/t/${itemid}.webp`);
await fs.promises.unlink(`./tmp/${itemid}.png`).catch(err => {});
await fs.promises.unlink(`./tmp/${itemid}.jpg`).catch(err => {});
} catch(err) {
await fs.copyFile('./mugge.png', `./public/t/${itemid}.png`);
//console.log(err);
await exec(`convert ./mugge.png ./public/t/${itemid}.webp`);
}
console.log(`current: ${itemid} (${count} / ${total})`);
count++;