This commit is contained in:
Flummi 2020-04-09 18:44:09 +02:00
parent 46082780e1
commit 97096357e5
17 changed files with 39 additions and 8829 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 434 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -20,9 +20,8 @@ const speaker = () => {
const k = document.querySelector("body"); const k = document.querySelector("body");
if(localStorage.selectedTheme && localStorage.selectedTheme === "f0ck95") if(localStorage.selectedTheme && localStorage.selectedTheme === "f0ck95")
k.document.createElement("div"); k.document.createElement("div");
else { else
return; return;
}
}; };
var customCss; var customCss;

View File

@ -2,4 +2,7 @@ export default new class {
formatSize(size, i = ~~(Math.log(size) / Math.log(1024))) { formatSize(size, i = ~~(Math.log(size) / Math.log(1024))) {
return (size / Math.pow(1024, i)).toFixed(2) * 1 + " " + ["B", "kB", "MB", "GB", "TB"][i]; return (size / Math.pow(1024, i)).toFixed(2) * 1 + " " + ["B", "kB", "MB", "GB", "TB"][i];
} }
calcSpeed(b, s) {
return `${(Math.round((b * 8 / s / 1e6) * 1e4) / 1e4).toFixed(2)} Mbit/s`;
}
}; };

View File

@ -84,23 +84,15 @@ router.get(/^\/api\/p\/([0-9]+)/, async (req, res) => { // legacy
router.get(/^\/api\/item\/[0-9]+$/, async (req, res) => { router.get(/^\/api\/item\/[0-9]+$/, async (req, res) => {
try { try {
const rows = await sql.query(queries.item, Array(3).fill(req.url.split[2])); const rows = await sql.query(queries.item, Array(3).fill(req.url.split[2]));
const data = rows[0].length > 0 ? { res.reply({
...rows[0][0], ...{ type: "application/json",
thumb: `${cfg.main.url}/t/${rows[0][0].id}.png`, body: JSON.stringify(rows?.shift() || [])
srchost: parse(rows[0][0].src).hostname, });
next: rows[1].length ? rows[1][0].id : null,
prev: rows[2].length ? rows[2][0].id : null,
}
} : {
error: true
};
res
.writeHead(200, { "Content-Type": "application/json" })
.end(JSON.stringify(data), "utf-8");
} catch(err) { } catch(err) {
res res.reply({
.writeHead(500) code: 500,
.end(JSON.stringify(err), "utf-8"); body: JSON.stringify(err)
});
} }
}); });
@ -109,13 +101,14 @@ router.get(/^\/api\/user\/.*(\/[0-9]+)?$/, async (req, res) => { // auf qs umste
const eps = Math.min(req.url.split[3] || 50, 50); const eps = Math.min(req.url.split[3] || 50, 50);
try { try {
const rows = await sql.query(queries.user, [ user, eps ]); const rows = await sql.query(queries.user, [ user, eps ]);
res res.reply({
.writeHead(200, { "Content-Type": "application/json" }) type: "application/json",
.end(JSON.stringify(rows.length > 0 ? rows : []), "utf-8"); body: JSON.stringify(rows.length > 0 ? rows : [])
});
} catch(err) { } catch(err) {
res res.reply({
.writeHead(500) code: 500,
.end(JSON.stringify(err), "utf-8"); body: JSON.stringify(err)
});
} }
db.end();
}); });

View File

@ -9,9 +9,10 @@ export const queries = {
main: "select id, mime, size, username, userchannel, usernetwork, stamp, dest, src from items ", main: "select id, mime, size, username, userchannel, usernetwork, stamp, dest, src from items ",
where: where => `${where?`where ${where}`:""} order by rand() limit 1` where: where => `${where?`where ${where}`:""} order by rand() limit 1`
}, },
item: "select id, mime, dest, size, src, stamp, userchannel, username, usernetwork from items where id = ? limit 1;" item: "select id, mime, dest, size, src, stamp, userchannel, username, usernetwork, "
+ "select id from items where id = (select min(id) from items where id > ?);" + "(select id from items where id = (select min(id) from items where id > ?)) as next, "
+ "select id from items where id = (select max(id) from items where id < ?)", + "(select id from items where id = (select max(id) from items where id < ?)) as prev "
+ "from items where items.id = ? limit 1",
p: (trend, order) => `select id, mime from items where id ${trend} ? order by id ${order} limit ?`, p: (trend, order) => `select id, mime from items where id ${trend} ? order by id ${order} limit ?`,
user: "select id, mime, size, src, stamp, userchannel, username, usernetwork from items where username = ? limit ?" user: "select id, mime, size, src, stamp, userchannel, username, usernetwork from items where username = ? limit ?"
}; };

View File

@ -10,7 +10,7 @@ export default new class {
[ "elseif", t => `}else if(${t.slice(6).trim()}){` ], [ "elseif", t => `}else if(${t.slice(6).trim()}){` ],
[ "else", () => "}else{" ], [ "else", () => "}else{" ],
[ "/if", () => "}" ], [ "/if", () => "}" ],
[ "include", (t, data) => `html+='${this.render(t.slice(7).trim(), data)}';` ], //`html+=util.include("${t.slice(7).trim()}", data);`], // parse them aswell [ "include", (t, data) => `html+='${this.render(t.slice(7).trim(), data)}';` ],
[ "=", t => `html+=${t.slice(1).trim()};` ] [ "=", t => `html+=${t.slice(1).trim()};` ]
]; ];
readdir(dir, root = dir, rel = dir.replace(`${root}/`, "")) { readdir(dir, root = dir, rel = dir.replace(`${root}/`, "")) {

View File

@ -35,7 +35,7 @@ export default async bot => {
e.reply(`${tmp.length}, ${rows.length}, ${dir.length}`); e.reply(`${tmp.length}, ${rows.length}, ${dir.length}`);
break; break;
default: default:
return e.reply("lul"); return;
} }
} }
}] }]

View File

@ -1,5 +1,6 @@
import cfg from "../../../config.json"; import cfg from "../../../config.json";
import sql from "../sql.mjs"; import sql from "../sql.mjs";
import lib from "../lib.mjs";
import fs from "fs"; import fs from "fs";
import { exec as _exec } from "child_process"; import { exec as _exec } from "child_process";
@ -8,6 +9,10 @@ const exec = promisify(_exec);
const regex = /https?:\/\/[\w\S(\.|:|/)]+/gi; const regex = /https?:\/\/[\w\S(\.|:|/)]+/gi;
console.log(
lib.calcSpeed(123456, 56432)
);
export default async bot => { export default async bot => {
return [{ return [{
@ -40,9 +45,11 @@ export default async bot => {
const filename = `${uuid}.${meta.ext}`; const filename = `${uuid}.${meta.ext}`;
// download data // download data
const source = (await exec(`youtube-dl "${link}" --max-filesize 100m -o ./tmp/${filename}`)).stdout.trim(); const start = new Date();
const source = (await exec(`youtube-dl "${link}" --max-filesize 10000m -o ./tmp/${filename}`)).stdout.trim();
if(source.match(/larger than/)) if(source.match(/larger than/))
return e.reply("too large lol"); return e.reply("too large lol");
const end = ~~((new Date() - start) / 1e3);
// generate checksum // generate checksum
const checksum = (await exec(`sha256sum ./tmp/${filename}`)).stdout.trim().split(" ")[0]; const checksum = (await exec(`sha256sum ./tmp/${filename}`)).stdout.trim().split(" ")[0];
@ -81,8 +88,8 @@ export default async bot => {
e.reply([ e.reply([
`title: ${meta.fulltitle}`, `title: ${meta.fulltitle}`,
`name: ${filename}`, `size: ${lib.formatSize(size)}`,
`size: ${size}`, `speed: ${lib.calcSpeed(size, end)}`,
`link: ${cfg.main.url}/${insertq.insertId}` `link: ${cfg.main.url}/${insertq.insertId}`
]); ]);

View File

@ -38,13 +38,11 @@
</div> </div>
</div> </div>
<div class="metadata"> <div class="metadata">
<span class="badge badge-dark"><a href="/{{=item.id}}" class="id-link">{{=item.id}} </a> by {{=user.name}}</span> <span class="badge badge-dark"><a href="/{{=item.id}}" class="id-link">{{=item.id}}</a> by {{=user.name}}</span>
<span class="badge badge-dark">{{=user.network}} / {{=user.channel}}</span> <span class="badge badge-dark">{{=user.network}} / {{=user.channel}}</span>
<span class="badge badge-dark"><a id="post_source" href="{{=item.src.long}}" <span class="badge badge-dark"><a id="post_source" href="{{=item.src.long}}" target="_blank">{{=item.src.short}}</a></span>
target="_blank">{{=item.src.short}}</a></span>
<span class="badge badge-dark">{{=item.size}}</span> <span class="badge badge-dark">{{=item.size}}</span>
<span class="badge badge-dark"><time class="timeago" title="{{=item.timestamp}}" datetime="{{=item.timestamp}}"> <span class="badge badge-dark"><time class="timeago" title="{{=item.timestamp}}" datetime="{{=item.timestamp}}"></time></span>
</time></span>
<span class="badge badge-dark" id="themes"></span> <span class="badge badge-dark" id="themes"></span>
</div> </div>
</div> </div>