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:
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('⚠');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user