fedimbed: revert, this broke entirely somehow
This commit is contained in:
parent
46cd1569d0
commit
693d2fda69
1 changed files with 8 additions and 34 deletions
|
@ -1,7 +1,6 @@
|
||||||
const fs = require("node:fs");
|
const fs = require("node:fs");
|
||||||
const httpSignature = require("@peertube/http-signature");
|
const httpSignature = require("@peertube/http-signature");
|
||||||
const {XMLParser} = require("fast-xml-parser");
|
const {XMLParser} = require("fast-xml-parser");
|
||||||
const {ProxyAgent} = require("undici");
|
|
||||||
|
|
||||||
const events = require("#lib/events.js");
|
const events = require("#lib/events.js");
|
||||||
const logger = require("#lib/logger.js");
|
const logger = require("#lib/logger.js");
|
||||||
|
@ -22,7 +21,6 @@ const BSKY_POST_REGEX =
|
||||||
/^\/profile\/(did:plc:[a-z0-9]+|(did:web:)?[a-z0-9][a-z0-9.-]+[a-z0-9]*)\/post\/([a-z0-9]+)\/?$/i;
|
/^\/profile\/(did:plc:[a-z0-9]+|(did:web:)?[a-z0-9][a-z0-9.-]+[a-z0-9]*)\/post\/([a-z0-9]+)\/?$/i;
|
||||||
|
|
||||||
const PATH_REGEX = {
|
const PATH_REGEX = {
|
||||||
truthsocial: /^\/@(.+?)\/posts\/(\d+)\/?/i,
|
|
||||||
mastodon: /^\/@(.+?)\/([a-z0-9]+?)\/?/i,
|
mastodon: /^\/@(.+?)\/([a-z0-9]+?)\/?/i,
|
||||||
mastodon2: /^\/(.+?)\/statuses\/([a-z0-9]+?)\/?/i,
|
mastodon2: /^\/(.+?)\/statuses\/([a-z0-9]+?)\/?/i,
|
||||||
pleroma: /^\/objects\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/?/,
|
pleroma: /^\/objects\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/?/,
|
||||||
|
@ -114,16 +112,6 @@ const numberFormatter = Intl.NumberFormat("en-US");
|
||||||
|
|
||||||
const domainCache = new Map();
|
const domainCache = new Map();
|
||||||
domainCache.set("cohost.org", "cohost"); // no nodeinfo
|
domainCache.set("cohost.org", "cohost"); // no nodeinfo
|
||||||
domainCache.set("truthsocial.com", "Truth Social"); // no nodeinfo
|
|
||||||
|
|
||||||
const proxyAgent = new ProxyAgent(hf.config.proxy);
|
|
||||||
|
|
||||||
function firefoxUseragent() {
|
|
||||||
const now = Math.floor(Date.now() / 1000);
|
|
||||||
const version = Math.floor(124 + (now - 1710892800) / 2419200);
|
|
||||||
|
|
||||||
return `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:${version}.0) Gecko/20100101 Firefox/${version}.0`;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function resolvePlatform(url) {
|
async function resolvePlatform(url) {
|
||||||
const urlObj = new URL(url);
|
const urlObj = new URL(url);
|
||||||
|
@ -183,9 +171,8 @@ async function getCrawledData(url, color, platformName) {
|
||||||
try {
|
try {
|
||||||
const page = await fetch(url, {
|
const page = await fetch(url, {
|
||||||
headers: {
|
headers: {
|
||||||
"User-Agent": urlObj.hostname === "truthsocial.com" ? firefoxUseragent() : FRIENDLY_USERAGENT,
|
"User-Agent": FRIENDLY_USERAGENT,
|
||||||
},
|
},
|
||||||
dispatcher: urlObj.hostname === "truthsocial.com" ? proxyAgent : null,
|
|
||||||
})
|
})
|
||||||
.then((res) => res.text())
|
.then((res) => res.text())
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
|
@ -774,17 +761,15 @@ async function bluesky(msg, url, spoiler = false, minimal = false) {
|
||||||
async function fetchPost(url, platform, forceMastoAPI = false) {
|
async function fetchPost(url, platform, forceMastoAPI = false) {
|
||||||
let urlObj = new URL(url);
|
let urlObj = new URL(url);
|
||||||
let postData;
|
let postData;
|
||||||
const ffua = firefoxUseragent();
|
|
||||||
|
|
||||||
if (!forceMastoAPI) {
|
if (!forceMastoAPI) {
|
||||||
let rawPostData;
|
let rawPostData;
|
||||||
try {
|
try {
|
||||||
rawPostData = await signedFetch(url, {
|
rawPostData = await signedFetch(url, {
|
||||||
headers: {
|
headers: {
|
||||||
"User-Agent": urlObj.hostname === "truthsocial.com" ? ffua : FRIENDLY_USERAGENT,
|
"User-Agent": FRIENDLY_USERAGENT,
|
||||||
Accept: "application/activity+json",
|
Accept: "application/activity+json",
|
||||||
},
|
},
|
||||||
dispatcher: urlObj.hostname === "truthsocial.com" ? proxyAgent : null,
|
|
||||||
}).then((res) => res.text());
|
}).then((res) => res.text());
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error("fedimbed", `Failed to signed fetch "${url}", retrying unsigned: ${err}`);
|
logger.error("fedimbed", `Failed to signed fetch "${url}", retrying unsigned: ${err}`);
|
||||||
|
@ -793,10 +778,9 @@ async function fetchPost(url, platform, forceMastoAPI = false) {
|
||||||
try {
|
try {
|
||||||
rawPostData = await fetch(url, {
|
rawPostData = await fetch(url, {
|
||||||
headers: {
|
headers: {
|
||||||
"User-Agent": urlObj.hostname === "truthsocial.com" ? ffua : FRIENDLY_USERAGENT,
|
"User-Agent": FRIENDLY_USERAGENT,
|
||||||
Accept: "application/activity+json",
|
Accept: "application/activity+json",
|
||||||
},
|
},
|
||||||
dispatcher: urlObj.hostname === "truthsocial.com" ? proxyAgent : null,
|
|
||||||
}).then((res) => res.text());
|
}).then((res) => res.text());
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error("fedimbed", `Failed to fetch "${url}": ${err}`);
|
logger.error("fedimbed", `Failed to fetch "${url}": ${err}`);
|
||||||
|
@ -840,10 +824,7 @@ async function fetchPost(url, platform, forceMastoAPI = false) {
|
||||||
let redirUrl;
|
let redirUrl;
|
||||||
const options = {};
|
const options = {};
|
||||||
const headers = {};
|
const headers = {};
|
||||||
if (urlObj.hostname === "truthsocial.com") {
|
if (PATH_REGEX.pleroma2.test(urlObj.pathname)) {
|
||||||
const postId = urlObj.pathname.match(PATH_REGEX.truthsocial)?.[2];
|
|
||||||
redirUrl = urlObj.origin + "/api/v1/statuses/" + postId;
|
|
||||||
} else if (PATH_REGEX.pleroma2.test(urlObj.pathname)) {
|
|
||||||
redirUrl = url.replace("notice", "api/v1/statuses");
|
redirUrl = url.replace("notice", "api/v1/statuses");
|
||||||
} else if (PATH_REGEX.mastodon.test(urlObj.pathname)) {
|
} else if (PATH_REGEX.mastodon.test(urlObj.pathname)) {
|
||||||
const postId = urlObj.pathname.match(PATH_REGEX.mastodon)?.[2];
|
const postId = urlObj.pathname.match(PATH_REGEX.mastodon)?.[2];
|
||||||
|
@ -886,9 +867,8 @@ async function fetchPost(url, platform, forceMastoAPI = false) {
|
||||||
redirUrl,
|
redirUrl,
|
||||||
Object.assign(options, {
|
Object.assign(options, {
|
||||||
headers: Object.assign(headers, {
|
headers: Object.assign(headers, {
|
||||||
"User-Agent": urlObj.hostname === "truthsocial.com" ? ffua : FRIENDLY_USERAGENT,
|
"User-Agent": FRIENDLY_USERAGENT,
|
||||||
}),
|
}),
|
||||||
dispatcher: urlObj.hostname === "truthsocial.com" ? proxyAgent : null,
|
|
||||||
})
|
})
|
||||||
).then((res) => res.text());
|
).then((res) => res.text());
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
@ -900,9 +880,8 @@ async function fetchPost(url, platform, forceMastoAPI = false) {
|
||||||
redirUrl,
|
redirUrl,
|
||||||
Object.assign(options, {
|
Object.assign(options, {
|
||||||
headers: Object.assign(headers, {
|
headers: Object.assign(headers, {
|
||||||
"User-Agent": urlObj.hostname === "truthsocial.com" ? ffua : FRIENDLY_USERAGENT,
|
"User-Agent": FRIENDLY_USERAGENT,
|
||||||
}),
|
}),
|
||||||
dispatcher: urlObj.hostname === "truthsocial.com" ? proxyAgent : null,
|
|
||||||
})
|
})
|
||||||
).then((res) => res.text());
|
).then((res) => res.text());
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
@ -939,28 +918,23 @@ async function fetchPost(url, platform, forceMastoAPI = false) {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getStatsAS(post) {
|
async function getStatsAS(post) {
|
||||||
const urlObj = new URL(post);
|
|
||||||
const ffua = firefoxUseragent();
|
|
||||||
|
|
||||||
// agony
|
// agony
|
||||||
let replyCount = 0;
|
let replyCount = 0;
|
||||||
if (post?.replies?.id)
|
if (post?.replies?.id)
|
||||||
try {
|
try {
|
||||||
const selfReplies = await signedFetch(post.replies.id + "?page=true", {
|
const selfReplies = await signedFetch(post.replies.id + "?page=true", {
|
||||||
headers: {
|
headers: {
|
||||||
"User-Agent": urlObj.hostname === "truthsocial.com" ? ffua : FRIENDLY_USERAGENT,
|
"User-Agent": FRIENDLY_USERAGENT,
|
||||||
Accept: "application/activity+json",
|
Accept: "application/activity+json",
|
||||||
},
|
},
|
||||||
dispatcher: urlObj.hostname === "truthsocial.com" ? proxyAgent : null,
|
|
||||||
}).then((res) => res.json());
|
}).then((res) => res.json());
|
||||||
replyCount += selfReplies?.items?.length ?? 0;
|
replyCount += selfReplies?.items?.length ?? 0;
|
||||||
|
|
||||||
const otherReplies = await signedFetch(post.replies.id + "?page=true&only_other_accounts=true", {
|
const otherReplies = await signedFetch(post.replies.id + "?page=true&only_other_accounts=true", {
|
||||||
headers: {
|
headers: {
|
||||||
"User-Agent": urlObj.hostname === "truthsocial.com" ? ffua : FRIENDLY_USERAGENT,
|
"User-Agent": FRIENDLY_USERAGENT,
|
||||||
Accept: "application/activity+json",
|
Accept: "application/activity+json",
|
||||||
},
|
},
|
||||||
dispatcher: urlObj.hostname === "truthsocial.com" ? proxyAgent : null,
|
|
||||||
}).then((res) => res.json());
|
}).then((res) => res.json());
|
||||||
replyCount += otherReplies?.items?.length ?? 0;
|
replyCount += otherReplies?.items?.length ?? 0;
|
||||||
} catch {
|
} catch {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue