Skip to content

Commit

Permalink
new covers (optimization); async Maat scans
Browse files Browse the repository at this point in the history
  • Loading branch information
phoenixbf committed Feb 2, 2025
1 parent 083e024 commit a2eb8dc
Show file tree
Hide file tree
Showing 6 changed files with 150 additions and 123 deletions.
2 changes: 1 addition & 1 deletion public/shu/scenes/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
let scene = data[i];
let sid = scene.sid;

let urlCover = (scene.cover)? ATON.PATH_SCENES+sid+"/cover.png" : ATON.PATH_RES+"scenecover.png";
let urlCover = ATON.PATH_RESTAPI2+"scenes/"+sid+"/cover"; //(scene.cover)? ATON.PATH_SCENES+sid+"/cover.png" : ATON.PATH_RES+"scenecover.png";
//let urlCover = ATON.PATH_RESTAPI+"cover/"+sid;

let shtml = "";
Expand Down
2 changes: 1 addition & 1 deletion public/shu/shu.js
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ SHU.createPubScenesGallery = (idcontainer, bSamples, onComplete, opts)=>{
let user = SHU.getUserFromSID(sid);

if ( bSamples || user !== "samples" ){
let urlCover = (scene.cover)? ATON.PATH_SCENES+sid+"/cover.png" : ATON.PATH_RES+"scenecover.png";
let urlCover = ATON.PATH_RESTAPI2+"scenes/"+sid+"/cover"; // (scene.cover)? ATON.PATH_SCENES+sid+"/cover.png" : ATON.PATH_RES+"scenecover.png";
let title = (scene.title)? scene.title : sid;

let terms = title.trim().toLowerCase();
Expand Down
43 changes: 7 additions & 36 deletions services/API/v1.js
Original file line number Diff line number Diff line change
Expand Up @@ -240,40 +240,8 @@ app.post("/api/cover/scene/", (req,res,next)=>{

img = img.replace(/^data:image\/png;base64,/, "");

let scenefolder = Core.getSceneFolder(sid);
let coverfile = path.join(scenefolder, "cover-high.png");
let coverfileOpt = path.join(scenefolder, "cover.png");
console.log(coverfile);

fs.writeFile(coverfile, img, 'base64', (err)=>{
//if (fs.existsSync(coverfileOpt)) fs.unlinkSync(coverfileOpt);

// Optimize PNG size
sharp(coverfile)
//.resize({ width: 256, height: 256 })
.withMetadata()
.png({
quality: 90, // 0-100
//compression: 6, // this doesn't need to be set
})
.toFile(coverfileOpt, (err)=>{
if (err) console.log(err);
else {
console.log('done');
res.send(true);
}
});

/*
imagemin([coverfile], {
destination: scenefolder,
plugins: [ imageminPNGquant({ quality: [0.1, 0.1] }) ]
}).then(()=>{
console.log("Cover compressed");
res.send(true);
});
*/
//res.send(true);
Core.generateCoverForScene(sid, img, ()=>{
res.send(true);
});
});

Expand All @@ -287,10 +255,13 @@ app.post("/api/cover/scene/", (req,res,next)=>{
app.get(/^\/api\/cover\/(.*)$/, (req,res,next)=>{
let sid = req.params[0];

let coverfile = path.join(Core.getSceneFolder(sid), "cover.png");
let coverfile = path.join(Core.getSceneFolder(sid), Core.STD_COVERFILE);
if (!fs.existsSync(coverfile)) coverfile = path.join(Core.getSceneFolder(sid), Core.STD_COVERFILE_HI);

console.log(coverfile)

if (!fs.existsSync(coverfile)){
return res.sendFile(Core.DIR_RES+"scenecover.png");
return res.sendFile(Core.STD_COVERFILE_PATH);
}

res.sendFile(coverfile);
Expand Down
4 changes: 4 additions & 0 deletions services/API/v2.js
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,10 @@ API.init = (app)=>{
let sid = U+"/"+S;

let coverfile = path.join(Core.getSceneFolder(sid), Core.STD_COVERFILE);

// To be removed in the future (old PNGs covers)
if (!fs.existsSync(coverfile)) coverfile = path.join(Core.getSceneFolder(sid), Core.STD_COVERFILE_HI);

fs.access(coverfile, (err) => {
if (err){
res.sendFile(Core.STD_COVERFILE_PATH);
Expand Down
39 changes: 38 additions & 1 deletion services/Core.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ const fsx = require('fs-extra');
//const chokidar = require('chokidar');
const fg = require('fast-glob');
const chalk = require('chalk');
const sharp = require("sharp");

const { networkInterfaces } = require('os');

Expand Down Expand Up @@ -57,7 +58,9 @@ Core.DIR_EXAMPLES = path.join(Core.DIR_PUBLIC,"examples/");
Core.DIR_FLARES = path.join(Core.DIR_CONFIG,"flares/"); //path.join(Core.DIR_PUBLIC,"custom/flares/");
Core.STD_SCENEFILE = "scene.json";
Core.STD_PUBFILE = "pub.txt"; // deprecated
Core.STD_COVERFILE = "cover.png";
Core.STD_COVERFILE_HI = "cover.png";
Core.STD_COVERFILE = "cover.jpg";
Core.STD_COVERSIZE = 256;
Core.STD_COVERFILE_PATH = path.join(Core.DIR_RES,"scenecover.png");

// Unused
Expand Down Expand Up @@ -924,4 +927,38 @@ Core.setupDataRoute = (app)=>{
});
};

// IMG
Core.generateCoverForScene = (sid, b64img, onComplete)=>{
if (!sid) return;

let scenefolder = Core.getSceneFolder(sid);
let coverfile = path.join(scenefolder, Core.STD_COVERFILE_HI);
let coverfileOpt = path.join(scenefolder, Core.STD_COVERFILE);

fs.writeFile(coverfile, b64img, 'base64', (err)=>{
//if (fs.existsSync(coverfileOpt)) fs.unlinkSync(coverfileOpt);

// Optimize PNG size
sharp(coverfile)
.resize({
width: Core.STD_COVERSIZE,
height: Core.STD_COVERSIZE
})
.withMetadata()
/*
.png({
quality: 90, // 0-100
//compression: 6, // this doesn't need to be set
})
*/
.jpeg({
quality: 60
})
.toFile(coverfileOpt, (err)=>{
if (err) console.log(err);
else if (onComplete) onComplete();
});
});
};

module.exports = Core;
Loading

0 comments on commit a2eb8dc

Please sign in to comment.