fedimbed: add embed image alt text even though bots cant use it yet
This commit is contained in:
parent
38ef4d1c2f
commit
28fab3823a
4 changed files with 45 additions and 14 deletions
|
@ -1 +1,2 @@
|
||||||
data/
|
data/
|
||||||
|
pnpm-lock.yaml
|
||||||
|
|
|
@ -41,5 +41,11 @@
|
||||||
"#lib/*.js": "./src/lib/*.js",
|
"#lib/*.js": "./src/lib/*.js",
|
||||||
"#util/*.js": "./src/util/*.js",
|
"#util/*.js": "./src/util/*.js",
|
||||||
"#modules/*.js": "./src/modules/*.js"
|
"#modules/*.js": "./src/modules/*.js"
|
||||||
|
},
|
||||||
|
"pnpm": {
|
||||||
|
"onlyBuiltDependencies": [
|
||||||
|
"sharp",
|
||||||
|
"sqlite3"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
10
pnpm-lock.yaml
generated
10
pnpm-lock.yaml
generated
|
@ -16,7 +16,7 @@ importers:
|
||||||
version: 1.7.0
|
version: 1.7.0
|
||||||
'@projectdysnomia/dysnomia':
|
'@projectdysnomia/dysnomia':
|
||||||
specifier: github:projectdysnomia/dysnomia#dev
|
specifier: github:projectdysnomia/dysnomia#dev
|
||||||
version: https://codeload.github.com/projectdysnomia/dysnomia/tar.gz/23aff37eb15c71c5a9188f5cafa99cbe8412e4dc
|
version: https://codeload.github.com/projectdysnomia/dysnomia/tar.gz/450795bb5b38c8dc6940eec7f2ef6655138e0600
|
||||||
dumpy:
|
dumpy:
|
||||||
specifier: github:Cynosphere/dumpy.js
|
specifier: github:Cynosphere/dumpy.js
|
||||||
version: https://codeload.github.com/Cynosphere/dumpy.js/tar.gz/5fc22353cdcb97084bab572266390e780d9f7a7b(encoding@0.1.13)
|
version: https://codeload.github.com/Cynosphere/dumpy.js/tar.gz/5fc22353cdcb97084bab572266390e780d9f7a7b(encoding@0.1.13)
|
||||||
|
@ -459,9 +459,9 @@ packages:
|
||||||
resolution: {integrity: sha512-aGQIwo6/sWtyyqhVK4e1MtxYz4N1X8CNt6SOtCc+Wnczs5S5ONaLHDDR8LYaGn0MgOwvGgXyuZ5sJIfd7iyoUw==}
|
resolution: {integrity: sha512-aGQIwo6/sWtyyqhVK4e1MtxYz4N1X8CNt6SOtCc+Wnczs5S5ONaLHDDR8LYaGn0MgOwvGgXyuZ5sJIfd7iyoUw==}
|
||||||
engines: {node: '>=0.10'}
|
engines: {node: '>=0.10'}
|
||||||
|
|
||||||
'@projectdysnomia/dysnomia@https://codeload.github.com/projectdysnomia/dysnomia/tar.gz/23aff37eb15c71c5a9188f5cafa99cbe8412e4dc':
|
'@projectdysnomia/dysnomia@https://codeload.github.com/projectdysnomia/dysnomia/tar.gz/450795bb5b38c8dc6940eec7f2ef6655138e0600':
|
||||||
resolution: {tarball: https://codeload.github.com/projectdysnomia/dysnomia/tar.gz/23aff37eb15c71c5a9188f5cafa99cbe8412e4dc}
|
resolution: {tarball: https://codeload.github.com/projectdysnomia/dysnomia/tar.gz/450795bb5b38c8dc6940eec7f2ef6655138e0600}
|
||||||
version: 0.2.1
|
version: 0.2.2
|
||||||
engines: {node: '>=18.0.0'}
|
engines: {node: '>=18.0.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@discordjs/opus': ^0.9.0
|
'@discordjs/opus': ^0.9.0
|
||||||
|
@ -2136,7 +2136,7 @@ snapshots:
|
||||||
jsprim: 1.4.2
|
jsprim: 1.4.2
|
||||||
sshpk: 1.17.0
|
sshpk: 1.17.0
|
||||||
|
|
||||||
'@projectdysnomia/dysnomia@https://codeload.github.com/projectdysnomia/dysnomia/tar.gz/23aff37eb15c71c5a9188f5cafa99cbe8412e4dc':
|
'@projectdysnomia/dysnomia@https://codeload.github.com/projectdysnomia/dysnomia/tar.gz/450795bb5b38c8dc6940eec7f2ef6655138e0600':
|
||||||
dependencies:
|
dependencies:
|
||||||
ws: 8.18.0
|
ws: 8.18.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
|
|
|
@ -271,7 +271,9 @@ async function blueskyQuoteEmbed(quote) {
|
||||||
const embed = quote.embeds[0];
|
const embed = quote.embeds[0];
|
||||||
switch (embed.$type) {
|
switch (embed.$type) {
|
||||||
case "app.bsky.embed.images#view": {
|
case "app.bsky.embed.images#view": {
|
||||||
embeds.push(...embed.images.map((image) => ({...mainEmbed, image: {url: image.fullsize}})));
|
embeds.push(
|
||||||
|
...embed.images.map((image) => ({...mainEmbed, image: {url: image.fullsize, description: image.alt}}))
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "app.bsky.embed.video#view": {
|
case "app.bsky.embed.video#view": {
|
||||||
|
@ -290,7 +292,9 @@ async function blueskyQuoteEmbed(quote) {
|
||||||
}
|
}
|
||||||
case "app.bsky.embed.recordWithMedia#view": {
|
case "app.bsky.embed.recordWithMedia#view": {
|
||||||
if (embed.media.$type === "app.bsky.embed.images#view") {
|
if (embed.media.$type === "app.bsky.embed.images#view") {
|
||||||
embeds.push(...embed.media.images.map((image) => ({...mainEmbed, image: {url: image.fullsize}})));
|
embeds.push(
|
||||||
|
...embed.media.images.map((image) => ({...mainEmbed, image: {url: image.fullsize, description: image.alt}}))
|
||||||
|
);
|
||||||
} else if (embed.media.$type === "app.bsky.embed.video#view") {
|
} else if (embed.media.$type === "app.bsky.embed.video#view") {
|
||||||
const lookup = await fetch(`https://plc.directory/${quote.author.did}`).then((res) => res.json());
|
const lookup = await fetch(`https://plc.directory/${quote.author.did}`).then((res) => res.json());
|
||||||
const domain = lookup.service.find((service) => service.id === "#atproto_pds").serviceEndpoint;
|
const domain = lookup.service.find((service) => service.id === "#atproto_pds").serviceEndpoint;
|
||||||
|
@ -426,7 +430,9 @@ async function bluesky(msg, url, spoiler = false) {
|
||||||
if (post.embed) {
|
if (post.embed) {
|
||||||
switch (post.embed.$type) {
|
switch (post.embed.$type) {
|
||||||
case "app.bsky.embed.images#view": {
|
case "app.bsky.embed.images#view": {
|
||||||
embeds.push(...post.embed.images.map((image) => ({...mainEmbed, image: {url: image.fullsize}})));
|
embeds.push(
|
||||||
|
...post.embed.images.map((image) => ({...mainEmbed, image: {url: image.fullsize, description: image.alt}}))
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "app.bsky.embed.video#view": {
|
case "app.bsky.embed.video#view": {
|
||||||
|
@ -463,7 +469,12 @@ async function bluesky(msg, url, spoiler = false) {
|
||||||
hasQuote = true;
|
hasQuote = true;
|
||||||
|
|
||||||
if (post.embed.media.$type === "app.bsky.embed.images#view") {
|
if (post.embed.media.$type === "app.bsky.embed.images#view") {
|
||||||
embeds.push(...post.embed.media.images.map((image) => ({...mainEmbed, image: {url: image.fullsize}})));
|
embeds.push(
|
||||||
|
...post.embed.media.images.map((image) => ({
|
||||||
|
...mainEmbed,
|
||||||
|
image: {url: image.fullsize, description: image.alt},
|
||||||
|
}))
|
||||||
|
);
|
||||||
} else if (post.embed.media.$type === "app.bsky.embed.video#view") {
|
} else if (post.embed.media.$type === "app.bsky.embed.video#view") {
|
||||||
const lookup = await fetch(`https://plc.directory/${post.author.did}`).then((res) => res.json());
|
const lookup = await fetch(`https://plc.directory/${post.author.did}`).then((res) => res.json());
|
||||||
const domain = lookup.service.find((service) => service.id === "#atproto_pds").serviceEndpoint;
|
const domain = lookup.service.find((service) => service.id === "#atproto_pds").serviceEndpoint;
|
||||||
|
@ -535,7 +546,10 @@ async function bluesky(msg, url, spoiler = false) {
|
||||||
},
|
},
|
||||||
}).then((res) => Number(res.headers.get("Content-Length")));
|
}).then((res) => Number(res.headers.get("Content-Length")));
|
||||||
|
|
||||||
if (size <= getUploadLimit(guild)) {
|
let limit = getUploadLimit(guild);
|
||||||
|
if (msg.attachmentSizeLimit != null) limit = msg.attachmentSizeLimit;
|
||||||
|
|
||||||
|
if (size <= limit) {
|
||||||
const file = await fetch(attachment.url, {
|
const file = await fetch(attachment.url, {
|
||||||
headers: {
|
headers: {
|
||||||
"User-Agent": FRIENDLY_USERAGENT,
|
"User-Agent": FRIENDLY_USERAGENT,
|
||||||
|
@ -551,6 +565,7 @@ async function bluesky(msg, url, spoiler = false) {
|
||||||
? attachment.type.replace("/", ".").replace("quicktime", "mov")
|
? attachment.type.replace("/", ".").replace("quicktime", "mov")
|
||||||
: attachment.type + "." + (url.match(/\.([a-z0-9]{3,4})$/)?.[0] ?? "mp4")),
|
: attachment.type + "." + (url.match(/\.([a-z0-9]{3,4})$/)?.[0] ?? "mp4")),
|
||||||
file,
|
file,
|
||||||
|
description: attachment.desc,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1291,12 +1306,16 @@ async function processUrl(msg, url, spoiler = false, command = false) {
|
||||||
|
|
||||||
const guild = msg.channel?.guild ?? (msg.guildID ? hf.bot.guilds.get(msg.guildID) : false);
|
const guild = msg.channel?.guild ?? (msg.guildID ? hf.bot.guilds.get(msg.guildID) : false);
|
||||||
|
|
||||||
|
let limit = getUploadLimit(guild);
|
||||||
|
if (msg.attachmentSizeLimit != null) limit = msg.attachmentSizeLimit;
|
||||||
|
|
||||||
if (images.length > 0) {
|
if (images.length > 0) {
|
||||||
if (images.length <= 4) {
|
if (images.length <= 4) {
|
||||||
for (const attachment of images) {
|
for (const attachment of images) {
|
||||||
const embed = Object.assign({}, baseEmbed);
|
const embed = Object.assign({}, baseEmbed);
|
||||||
embed.image = {
|
embed.image = {
|
||||||
url: attachment.url,
|
url: attachment.url,
|
||||||
|
description: attachment.desc,
|
||||||
};
|
};
|
||||||
embeds.push(embed);
|
embeds.push(embed);
|
||||||
}
|
}
|
||||||
|
@ -1309,7 +1328,7 @@ async function processUrl(msg, url, spoiler = false, command = false) {
|
||||||
},
|
},
|
||||||
}).then((res) => Number(res.headers.get("Content-Length")));
|
}).then((res) => Number(res.headers.get("Content-Length")));
|
||||||
|
|
||||||
if (size <= getUploadLimit(guild)) {
|
if (size <= limit) {
|
||||||
const file = await fetch(attachment.url, {
|
const file = await fetch(attachment.url, {
|
||||||
headers: {
|
headers: {
|
||||||
"User-Agent": FRIENDLY_USERAGENT,
|
"User-Agent": FRIENDLY_USERAGENT,
|
||||||
|
@ -1341,7 +1360,7 @@ async function processUrl(msg, url, spoiler = false, command = false) {
|
||||||
},
|
},
|
||||||
}).then((res) => Number(res.headers.get("Content-Length")));
|
}).then((res) => Number(res.headers.get("Content-Length")));
|
||||||
|
|
||||||
if (size <= getUploadLimit(guild)) {
|
if (size <= limit) {
|
||||||
const file = await fetch(attachment.url, {
|
const file = await fetch(attachment.url, {
|
||||||
headers: {
|
headers: {
|
||||||
"User-Agent": FRIENDLY_USERAGENT,
|
"User-Agent": FRIENDLY_USERAGENT,
|
||||||
|
@ -1369,6 +1388,7 @@ async function processUrl(msg, url, spoiler = false, command = false) {
|
||||||
const embed = Object.assign({}, baseEmbed);
|
const embed = Object.assign({}, baseEmbed);
|
||||||
embed.image = {
|
embed.image = {
|
||||||
url: attachment.url,
|
url: attachment.url,
|
||||||
|
description: attachment.desc,
|
||||||
};
|
};
|
||||||
embeds.push(embed);
|
embeds.push(embed);
|
||||||
}
|
}
|
||||||
|
@ -1379,6 +1399,7 @@ async function processUrl(msg, url, spoiler = false, command = false) {
|
||||||
const embed = Object.assign({}, baseEmbed);
|
const embed = Object.assign({}, baseEmbed);
|
||||||
embed.image = {
|
embed.image = {
|
||||||
url: attachment.url,
|
url: attachment.url,
|
||||||
|
description: attachment.desc,
|
||||||
};
|
};
|
||||||
embeds.push(embed);
|
embeds.push(embed);
|
||||||
}
|
}
|
||||||
|
@ -1394,6 +1415,7 @@ async function processUrl(msg, url, spoiler = false, command = false) {
|
||||||
const embed = Object.assign({}, _embed);
|
const embed = Object.assign({}, _embed);
|
||||||
embed.image = {
|
embed.image = {
|
||||||
url: attachment.url,
|
url: attachment.url,
|
||||||
|
description: attachment.desc,
|
||||||
};
|
};
|
||||||
embeds.push(embed);
|
embeds.push(embed);
|
||||||
}
|
}
|
||||||
|
@ -1412,7 +1434,7 @@ async function processUrl(msg, url, spoiler = false, command = false) {
|
||||||
},
|
},
|
||||||
}).then((res) => Number(res.headers.get("Content-Length")));
|
}).then((res) => Number(res.headers.get("Content-Length")));
|
||||||
|
|
||||||
if (size <= getUploadLimit(guild)) {
|
if (size <= limit) {
|
||||||
const file = await fetch(attachment.url, {
|
const file = await fetch(attachment.url, {
|
||||||
headers: {
|
headers: {
|
||||||
"User-Agent": FRIENDLY_USERAGENT,
|
"User-Agent": FRIENDLY_USERAGENT,
|
||||||
|
@ -1428,6 +1450,7 @@ async function processUrl(msg, url, spoiler = false, command = false) {
|
||||||
? attachment.type.replace("/", ".").replace("quicktime", "mov")
|
? attachment.type.replace("/", ".").replace("quicktime", "mov")
|
||||||
: attachment.type + "." + (url.match(/\.([a-z0-9]{3,4})$/)?.[0] ?? "mp4")),
|
: attachment.type + "." + (url.match(/\.([a-z0-9]{3,4})$/)?.[0] ?? "mp4")),
|
||||||
file,
|
file,
|
||||||
|
description: attachment.desc,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1441,7 +1464,7 @@ async function processUrl(msg, url, spoiler = false, command = false) {
|
||||||
},
|
},
|
||||||
}).then((res) => Number(res.headers.get("Content-Length")));
|
}).then((res) => Number(res.headers.get("Content-Length")));
|
||||||
|
|
||||||
if (size <= getUploadLimit(guild)) {
|
if (size <= limit) {
|
||||||
const file = await fetch(attachment.url, {
|
const file = await fetch(attachment.url, {
|
||||||
headers: {
|
headers: {
|
||||||
"User-Agent": FRIENDLY_USERAGENT,
|
"User-Agent": FRIENDLY_USERAGENT,
|
||||||
|
@ -1457,6 +1480,7 @@ async function processUrl(msg, url, spoiler = false, command = false) {
|
||||||
? attachment.type.replace("/", ".").replace("mpeg", "mp3").replace("vnd.wave", "wav").replace("x-", "")
|
? attachment.type.replace("/", ".").replace("mpeg", "mp3").replace("vnd.wave", "wav").replace("x-", "")
|
||||||
: attachment.type + "." + (url.match(/\.([a-z0-9]{3,4})$/)?.[0] ?? "mp3")),
|
: attachment.type + "." + (url.match(/\.([a-z0-9]{3,4})$/)?.[0] ?? "mp3")),
|
||||||
file,
|
file,
|
||||||
|
description: attachment.desc,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue