blah
This commit is contained in:
@@ -1,6 +1,13 @@
|
||||
import fetch from 'flumm-fetch';
|
||||
import fetch from 'node-fetch';
|
||||
import cfg from './config.mjs';
|
||||
|
||||
const parseOutput = text => {
|
||||
text = text.trim().toLowerCase();
|
||||
return text.includes(', ')
|
||||
? text.split(', ')
|
||||
: text.replace(/\d\. /g, '').split('\n');
|
||||
};
|
||||
|
||||
export default new class autotagger {
|
||||
async isNSFW(filename, filesize) {
|
||||
let opts = {
|
||||
@@ -29,4 +36,34 @@ export default new class autotagger {
|
||||
else
|
||||
return res.unsafe;
|
||||
};
|
||||
|
||||
async getTags(id) {
|
||||
if(!id)
|
||||
return;
|
||||
|
||||
try {
|
||||
const f0ck = `${cfg.main.url.full}/t/${id}.webp`;
|
||||
const blob = await (await fetch(f0ck)).arrayBuffer();
|
||||
|
||||
const res = await fetch(`${cfg.apis.cf.url}/${cfg.apis.cf.id}/ai/run/${cfg.apis.cf.model}`, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": `Bearer ${cfg.apis.cf.key}`
|
||||
},
|
||||
body: JSON.stringify({
|
||||
image: [ ...new Uint8Array(blob) ],
|
||||
prompt: "Generate eight comma separated tags without colors for this image.",
|
||||
max_tokens: 128
|
||||
})
|
||||
});
|
||||
const json = await res.json();
|
||||
console.log(json.result.description);
|
||||
return parseOutput(json.result.description);
|
||||
} catch(err) {
|
||||
return {
|
||||
error: err.message || "unknown error"
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
|
@@ -98,6 +98,7 @@ export default async bot => {
|
||||
}
|
||||
|
||||
if(!Object.values(cfg.mimes).includes(ext?.toLowerCase())) {
|
||||
await e.reply("mime schmime");
|
||||
return console.log('mime schmime ' + ext);
|
||||
}
|
||||
|
||||
@@ -254,29 +255,12 @@ export default async bot => {
|
||||
let speed = lib.calcSpeed(size, end);
|
||||
speed = !Number.isFinite(speed) ? "yes" : `${speed.toFixed(2)} Mbit/s`;
|
||||
|
||||
// autotagger
|
||||
let tags = [];
|
||||
/*if(cfg.apis?.nsfw1 && mime.startsWith('image')) {
|
||||
const nsfw = await autotagger.isNSFW(filename, size);
|
||||
tags.push(nsfw ? 'nsfw' : 'sfw');
|
||||
if(nsfw)
|
||||
await queue.tagNSFW(itemid);
|
||||
else
|
||||
await queue.tagSFW(itemid);
|
||||
}*/
|
||||
|
||||
let outputmsgirc = `[f0cked] link: ${cfg.main.url.full}/${itemid} | size: ${lib.formatSize(size)} | speed: ${speed}`;
|
||||
let outputmsgtg = `[f0cked] size: ${lib.formatSize(size)} | speed: ${speed}`;
|
||||
|
||||
if(tags?.length > 0) {
|
||||
const tagstr = tags.join(', ');
|
||||
outputmsgirc += ` | tags: ${tagstr}`;
|
||||
outputmsgtg += ` | tags: ${tagstr}`;
|
||||
}
|
||||
|
||||
if(e.type == 'tg') {
|
||||
await e.deleteMessage(msg.result.chat.id, msg.result.message_id);
|
||||
await e.reply(outputmsgtg, {
|
||||
/*await e.reply(outputmsgtg, {
|
||||
reply_markup: JSON.stringify({
|
||||
inline_keyboard: [[
|
||||
{ text: (await lib.hasTag(itemid, 1) ? '✓ ' : '') + 'sfw', callback_data: `b_sfw:${itemid}` },
|
||||
@@ -287,6 +271,42 @@ export default async bot => {
|
||||
{ text: `open f0ck #${itemid}`, url: `${cfg.main.url.full}/${itemid}` }
|
||||
]]
|
||||
})
|
||||
});*/
|
||||
|
||||
let tags;
|
||||
|
||||
try {
|
||||
tags = (await autotagger.getTags(itemid))
|
||||
.map(t => ({ text: t, callback_data: 'nope' }));
|
||||
await e.reply(outputmsgtg, {
|
||||
reply_markup: JSON.stringify({
|
||||
inline_keyboard: [[
|
||||
{ text: (await lib.hasTag(itemid, 1) ? '✓ ' : '') + 'sfw', callback_data: `b_sfw:${itemid}` },
|
||||
{ text: (await lib.hasTag(itemid, 2) ? '✓ ' : '') + 'nsfw', callback_data: `b_nsfw:${itemid}` },
|
||||
],
|
||||
[ ...tags.splice(0, 4) ],
|
||||
[ ...tags.splice(0, 4) ],
|
||||
[
|
||||
{ text: `open f0ck #${itemid}`, url: `${cfg.main.url.full}/${itemid}` },
|
||||
{ text: '❌ delete', callback_data: `b_delete:${itemid}` }
|
||||
]]
|
||||
})
|
||||
});
|
||||
return;
|
||||
} catch(err) {
|
||||
console.error(err);
|
||||
}
|
||||
|
||||
await e.reply(outputmsgtg, {
|
||||
reply_markup: JSON.stringify({
|
||||
inline_keyboard: [[
|
||||
{ text: (await lib.hasTag(itemid, 1) ? '✓ ' : '') + 'sfw', callback_data: `b_sfw:${itemid}` },
|
||||
{ text: (await lib.hasTag(itemid, 2) ? '✓ ' : '') + 'nsfw', callback_data: `b_nsfw:${itemid}` },
|
||||
], [
|
||||
{ text: `open f0ck #${itemid}`, url: `${cfg.main.url.full}/${itemid}` },
|
||||
{ text: '❌ delete', callback_data: `b_delete:${itemid}` }
|
||||
]]
|
||||
})
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
Reference in New Issue
Block a user