rsshub
Version:
Make RSS Great Again!
104 lines (99 loc) • 3.63 kB
JavaScript
import { t as config } from "./config-C37vj7VH.mjs";
import { t as logger_default } from "./logger-Czu8UMNd.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
import tls from "node:tls";
import ipRegex from "ip-regex";
//#region lib/routes/pixiv/constants.ts
const maskHeader = {
"App-OS": "ios",
"App-OS-Version": "10.3.1",
"App-Version": "6.7.1",
"User-Agent": "PixivIOSApp/6.7.1 (iOS 10.3.1; iPhone8,1)"
};
//#endregion
//#region lib/routes/pixiv/pixiv-got.ts
async function dohResolve(name, jsonDohEndpoint) {
try {
const response = await got_default(jsonDohEndpoint, {
searchParams: {
name,
type: "A"
},
headers: { accept: "application/dns-json" }
});
if (response.data.Status === 0) return response.data.Answer.map((item) => item.data);
else logger_default.error(`Error ${response.data.Status} when querying DoH endpoint ${jsonDohEndpoint}`);
} catch (error) {
logger_default.error(`Failed to resolve ${name}`);
logger_default.debug(error);
}
return [];
}
const pixivGot = got_default.extend({ hooks: { beforeRequest: [async (options) => {
if (!config.pixiv.bypassCdn) return;
let hostname = null;
if (ipRegex({ exact: true }).test(config.pixiv.bypassCdnHostname)) hostname = config.pixiv.bypassCdnHostname;
else {
const addresses = await dohResolve(config.pixiv.bypassCdnHostname, config.pixiv.bypassCdnDoh);
if (addresses.length) hostname = addresses[Math.floor(addresses.length * Math.random())];
else logger_default.warn(`No IPv4 address resolved from ${config.pixiv.bypassCdnHostname}`);
}
if (hostname) {
const actualHost = options.url.host;
options.headers = {
...options.headers,
host: actualHost
};
options.url.hostname = hostname;
options.checkServerIdentity = function(host, certificate) {
return tls.checkServerIdentity(actualHost, certificate);
};
}
}] } });
var pixiv_got_default = pixivGot;
//#endregion
//#region lib/routes/pixiv/token.ts
let token = null;
const authorizationInfo = {
client_id: "MOBrBDS8blbauoSck0ZfDbtuzpyT",
client_secret: "lsACyCD94FhDUtGTXi3QzcFE2uU1hqtDaKeqrdwj",
hash_secret: "28c1fdd170a5204386cb1313c7077b34f83e4aaf4aa829ce78c231e05b0bae2c"
};
const refreshToken = (tryGet) => tryGet("pixiv:accessToken", () => pixiv_got_default.post("https://oauth.secure.pixiv.net/auth/token", {
form: {
...authorizationInfo,
get_secure_url: 1,
grant_type: "refresh_token",
refresh_token: config.pixiv.refreshToken
},
headers: { ...maskHeader }
}), 3600, false);
async function getToken(tryGet) {
const { data } = await refreshToken(tryGet);
if (data && data.access_token) {
logger_default.debug("Pixiv refresh token success.");
token = data.access_token;
}
return token;
}
//#endregion
//#region lib/routes/pixiv/utils.ts
var utils_default = {
getImgs(illust) {
const images = [];
if (illust.meta_pages?.length) for (const page of illust.meta_pages) {
const original = page.image_urls.original.replace("https://i.pximg.net", config.pixiv.imgProxy);
images.push(`<p><img src="${original}" width="${page.width}" height="${page.height}" /></p>`);
}
else if (illust.meta_single_page.original_image_url) {
const original = illust.meta_single_page.original_image_url.replace("https://i.pximg.net", config.pixiv.imgProxy);
images.push(`<p><img src="${original}" width="${illust.width}" height="${illust.height}" /></p>`);
}
return images;
},
getProxiedImageUrl(originalUrl) {
return originalUrl.replace("https://i.pximg.net", config.pixiv.imgProxy || "");
}
};
//#endregion
export { maskHeader as i, getToken as n, pixiv_got_default as r, utils_default as t };