pr0gag parser test

This commit is contained in:
Flummi 2018-08-30 18:09:28 +02:00
parent 7d2bbcde4c
commit 302cb8ffe4
2 changed files with 70 additions and 2 deletions

View File

@ -11,6 +11,7 @@ import kernel from "./kernel";
import lastfm from "./lastfm";
import mcmaniac from "./mcmaniac";
import parser from "./parser";
import pr0gag from "./pr0gag";
import quotes from "./quotes";
import rape from "./rape";
import sandbox from "./sandbox";
@ -24,6 +25,6 @@ import wttr from "./wttr";
export default [
cfg, chatbot, coins, cookie, core, debug,
drugs, help, irpg, kernel, lastfm, mcmaniac,
parser, quotes, rape, sandbox, soundcloud,
parser, pr0gag, quotes, rape, sandbox, soundcloud,
timer, urban, nxy, uwe, wttr
];
];

View File

@ -0,0 +1,67 @@
import rp from "request-promise";
import url from "url";
const apis = {
reverse: "https://totally.rip/pr0/img_reverse_lookup.php?image=",
pr0gag: {
list: "https://pr0gramm.com/api/items/get/?flags=15&id=",
item: "https://pr0gramm.com/api/items/info?flags=15&itemId="
}
};
const flags = {
1: "sfw",
2: "nsfw",
4: "nsfl",
8: "nsfp"
};
const regex = /img\.pr0gramm\.com\/((?:\d+){4}\/(?:\d+){2}\/(?:\d+){2}\/(?:\w{16})\.(?:webm|png|jpg|mp4|webm)?)/gi;
const site = "https://pr0gramm.com/new/";
export default bot => {
bot._trigger.set("pr0gag", new bot.trigger({
call: /img\.programm\.com.*/i,
set: "uwe",
f: e => {
const link = e.message.match(regex)[0];
const tmp = url.parse(link).path.substr(1);
rp(apis.reverse + tmp)
.then(res => JSON.parse(res).id)
.then(id => Promise.all([
rp(apis.pr0gag.list + id.toString()),
rp(apis.pr0gag.item + id.toString()),
id
])
.then(([list, item, id]) => [
JSON.parse(list).items.filter(item => item.id === id)[0],
JSON.parse(item),
id
])
.then(([list, item, id]) => ({
created: list.created,
up: list.up,
down: list.down,
score: list.up - list.down,
ratio: (list.up / (list.up + list.down)).toFixed(2),
flags: flags[list.flags],
user: list.user,
comments: item.comments.length,
toptags: item.tags.splice(0, 3).map(tag => tag.tag),
link: site + id.toString()
}))
.then(meta => [
`c: ${meta.created}`,
`u: ${meta.up}`,
`d: ${meta.down}`,
`s: ${meta.score}`,
`r: ${meta.ratio}`,
`f: ${meta.flags}`,
`u: ${meta.user}`,
`co: ${meta.comments}`,
`t: ${meta.toptags}`,
`l: ${meta.link}`
].join("; "))
.then(out => e.reply(out))
);
}
}));
};