import fetch from "../fetch"; import url from "url"; const apis = { reverse: "https://pr0.totally.rip/api/v2/item?file=", pr0gag: { list: "https://pr0gramm.com/api/items/get/?flags=1&id=", // 15 item: "https://pr0gramm.com/api/items/info?flags=1&itemId=" } }; const flags = { 1: "[color=green]sfw[/color]", 2: "[color=brown]nsfw[/color]", 4: "[color=red]nsfl[/color]", 8: "[color=blue]nsfp[/color]" }; const regex = /(full|img|vid)\.pr0gramm\.com\/((?:\d+){4}\/(?:\d+){2}(\/(?:\d+){2})?\/(?:\w{1,20})\.(?:gif|png|jpg|mp4)?)/gi; const site = "https://pr0gramm.com/new/"; export default bot => { bot._trigger.set("pr0gag", new bot.trigger({ call: /(vid|img)\.pr0gramm\.com.*/i, set: "uwe", f: e => { const link = "https://" + e.message.match(regex)[0]; const tmp = url.parse(link).path.substr(1); fetch(apis.reverse + tmp) .then(res => res.json()) .then(res => { if(res.error) throw res.error; return res.data.id; }) .then(id => Promise.all([ fetch(apis.pr0gag.list + id.toString()), fetch(apis.pr0gag.item + id.toString()), id ]) .then(([list, item, id]) => Promise.all([ list.json(), item.json(), id ])) .then(([list, item, id]) => [ list.items.filter(item => item.id === id)[0], 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), flag: flags[list.flags], user: list.user, comments: item.comments.length, toptags: item.tags .sort((a, b) => a.confidence - b.confidence) .reverse() .splice(0, 3) .map(tag => tag.tag), link: site + id.toString() })) .then(meta => [ meta.link, `${meta.score} ([color=green]${meta.up}[/color] / [color=red]${meta.down}[/color])`, `user: ${meta.user}`, `comments: ${meta.comments}`, `toptags: ${meta.toptags.join(", ")} (${meta.flag})` ]) .then(out => e.reply(out.join(" - "))) ).catch(err => e.reply(JSON.stringify(err))); } })); };