Compare commits

..

No commits in common. "757fb5b48d10526e2a475a0b4ff2ac1f76362eaf" and "d1f0552619875e4ea2c28210fd50a892776d59cb" have entirely different histories.

4 changed files with 37 additions and 114 deletions

View File

@ -1,60 +1,33 @@
import db from "../src/inc/sql.mjs"; import sql from "../src/inc/sql.mjs";
import lib from "../src/inc/lib.mjs"; import cfg from "../src/inc/config.mjs";
import fetch from "flumm-fetch-cookies";
(async () => { (async () => {
const _args = process.argv.slice(2); const _args = process.argv.slice(2);
const _from = +_args[0]; const _from = +_args[0];
const _to = _from + 500; const _to = _from + 100;
const f0cks = await db` const f0cks = await sql("items")
select * .whereRaw("id not in (select item_id from tags_assign group by item_id)")
from items .andWhere("mime", "like", "image/%")
where .andWhereBetween("id", [ _from, _to ]);
id not in (select item_id from tags_assign group by item_id) and
mime like 'image/%' and const body = { headers: { Authorization: `Basic ${cfg.tagger.btoa}` } };
id between ${_from} and ${_to}
`;
console.time('blah');
for(let f of f0cks) { for(let f of f0cks) {
const tmp = await lib.detectNSFW(f.dest); let tag;
const res = await (await fetch(`${cfg.tagger.endpoint}/categories/nsfw_beta?image_url=${cfg.main.url}/b/${f.dest}`, body)).json();
if(res?.result) {
tag = (res.result.categories[0].name.en === "safe") ? "sfw" : "nsfw";
console.log( await sql("tags_assign").insert({
'https://f0ck.me/' + f.id, tag_id: tag === "sfw" ? 1 : 2,
tmp.isNSFW,
tmp.score.toFixed(2),
{
sexy: tmp.scores.sexy.toFixed(2),
porn: tmp.scores.porn.toFixed(2),
hentai: tmp.scores.hentai.toFixed(2),
neutral: tmp.scores.neutral.toFixed(2)
}
);
await db`
insert into "tags_assign" ${
db({
item_id: f.id, item_id: f.id,
tag_id: tmp.nsfw ? 2 : 1, user_id: 7 // user: autotagger
user_id: 7 });
})
} }
`; else {
console.log(res);
if(tmp.hentai >= .7) {
await db`
insert into "tags_assign" ${
db({
item_id: f.id,
tag_id: 8, // hentai
user_id: 7 // autotagger
})
} }
`;
}
}; };
console.timeEnd('blah');
process.exit();
})(); })();

Binary file not shown.

View File

@ -1,9 +1,7 @@
import crypto from "crypto"; import crypto from "crypto";
import util from "util"; import util from "util";
import db from "./sql.mjs"; import db from "./sql.mjs";
import { exec as _exec } from "child_process";
const exec = util.promisify(_exec);
const scrypt = util.promisify(crypto.scrypt); const scrypt = util.promisify(crypto.scrypt);
const epochs = [ const epochs = [
@ -152,31 +150,5 @@ export default new class {
} }
return tags; return tags;
}; };
async detectNSFW(dest) {
const { stdout, stderr } = await exec(
`python -c "import sys\nfrom nsfw_detector import predict\nmodel = predict.load_model('./nsfw_model.h5')\nprint(predict.classify(model, './public/b/${dest}'))"`
);
const res = JSON.parse(stdout.replace(/\'/g, '"').split('\n').slice(1, -1));
const tmp = Object.values(res)[0];
tmp.sexy = tmp.sexy / 2;
let nsfw = false;
if(tmp.neutral >= .7)
nsfw = false;
else if((tmp.sexy + tmp.porn + tmp.hentai) >= .7)
nsfw = true;
else if(tmp.drawings >= .4)
nsfw = false;
else
nsfw = false;
return {
isNSFW: nsfw,
score: tmp.sexy + tmp.porn + tmp.hentai,
scores: tmp
};
};
}; };

View File

@ -191,57 +191,35 @@ export default async bot => {
speed = !Number.isFinite(speed) ? "yes" : `${speed.toFixed(2)} Mbit/s`; speed = !Number.isFinite(speed) ? "yes" : `${speed.toFixed(2)} Mbit/s`;
// autotagger // autotagger
let tags = []; let tag;
try { try {
if(mime.startsWith('image')) { if(mime.startsWith('image') && mime != 'image/gif') {
const res = await lib.detectNSFW(filename); const body = { headers: { Authorization: `Basic ${cfg.tagger.btoa}` } };
const res = await (await fetch(`${cfg.tagger.endpoint}/categories/nsfw_beta?image_url=${cfg.main.url}/b/${filename}`, body)).json();
await db` if(res)
insert into "tags_assign" ${ tag = (res.result.categories[0].name.en === 'safe') ? 'sfw' : 'nsfw';
db({
item_id: itemid,
tag_id: res.nsfw ? 2 : 1,
user_id: 7
})
}
`;
tags.push(res.nsfw ? 'nsfw' : 'sfw');
if(res.hentai >= .7) {
await db`
insert into "tags_assign" ${
db({
item_id: f.id,
tag_id: 8, // hentai
user_id: 7 // autotagger
})
}
`;
tags.push('hentai');
}
} }
else if(mime.startsWith('audio')) { else if(mime.startsWith('audio')) {
tag = 'sfw';
}
if(tag === 'sfw' || tag === 'nsfw') {
await db` await db`
insert into "tags_assign" ${ insert into "tags_assign" ${
db([{ db({
tag_id: tag === "sfw" ? 1 : 2,
item_id: itemid, item_id: itemid,
tag_id: 1, user_id: 7 // user: autotagger (ID: 7)
user_id: 7 }, 'tag_id', 'item_id', 'user_id')
}, {
item_id: itemid,
tag_id: 7178,
user_id: 7
}])
} }
`; `;
tags.push('sfw', 'audio');
} }
} catch(err) { } catch(err) {
console.error(err); console.error(err);
} }
e.reply([ e.reply([
`[f0cked] link: ${cfg.main.url}/${itemid} | size: ${lib.formatSize(size)} | speed: ${speed}` + (tags.length > 0 ? ` | tags: ${tags.join(', ')}` : '') `[f0cked] link: ${cfg.main.url}/${itemid} | size: ${lib.formatSize(size)} | speed: ${speed}` + (tag ? ` | ${tag}` : "")
]); ]);
}); });