make it even more complicated

include url if message had more than one url, include note if illust is an animation
This commit is contained in:
Lamp 2021-08-23 21:42:00 -07:00
parent be78ea71c6
commit 5363f91d2b

@ -22,6 +22,10 @@ client.on("messageCreate", async message => {
for (let pixiv_url of pixiv_urls) {
try {
let illust = Object.values(JSON.parse((await (await fetch(pixiv_url)).text()).match(/<meta name="preload-data" id="meta-preload-data" content='(.*)'>/)[1]).illust)[0];
let content;
if (pixiv_urls.size > 1 || illust.illustType == 2) {
content = `<${pixiv_url}>${illust.illustType == 2 ? " is an animation" : ''}`;
}
let images = [];
for (let i = 0; i < illust.pageCount; i++) images.push({url: illust.urls.original.replace('p0', 'p'+i)});
if (images.length <= 10) {
@ -29,7 +33,10 @@ client.on("messageCreate", async message => {
for (let image of images) {
image.data = await (await fetch(image.url, {headers: {"Referer": "https://www.pixiv.net/"}})).buffer();
}
await message.channel.send({files: images.map(image => ({attachment: image.data || "error", name: image.url.split('/').pop()}))});
await message.channel.send({
content,
files: images.map(image => ({attachment: image.data || "error", name: image.url.split('/').pop()}))
});
} catch (error) {
if (error.message == "Request entity too large") await fallback();
else throw error;
@ -39,11 +46,19 @@ client.on("messageCreate", async message => {
// save the data already downloaded
for (let image of images) if (image.data) fs.writeFileSync(config.data_dir + "pixiv-cache/" + image.url.split('?')[0].replace(/\//g, '\\'), image.data);
let urls = images.map(image => image.url.replace("https://i.pximg.net/", `https://${config.web_hostname}/pixiv-proxy/`)).join('\n');
return message.channel.send(urls.length > 2000 ? {files:[{attachment: Buffer.from(urls), name:"message.txt"}]} : urls);
if (urls.length > 2000) {
return message.channel.send({content, files:[{attachment: Buffer.from(urls), name:"message.txt"}]});
} else {
return message.channel.send((content ? content + '\n' : '') + urls);
}
}
} catch (error) {
console.error("pixiv embed error,", error.stack);
message.react('⚠');
if (pixiv_urls.size > 1) {
message.channel.send(`<${pixiv_url}> failed to be embedded`);
} else {
message.react('⚠');
}
}
}
});