rsshub
Version:
Make RSS Great Again!
69 lines (67 loc) • 2.71 kB
JavaScript
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs";
import { t as config } from "./config-C37vj7VH.mjs";
import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs";
import { t as cache_default } from "./cache-Bo__VnGm.mjs";
import { t as art } from "./render-BQo6B4tL.mjs";
import path from "node:path";
//#region lib/routes/skeb/utils.ts
init_esm_shims();
const baseUrl = "https://skeb.jp";
function processWork(work) {
if (!work || typeof work !== "object" || work.private === true) return null;
const imageUrl = work.thumbnail_image_urls?.srcset?.split(",").pop()?.trim().split(" ")[0] || "";
const body = work.body || "";
const audioUrl = work.genre === "music" || work.genre === "voice" ? work.preview_url : null;
const renderedHtml = art(path.join(__dirname, "templates/work-99aa5c91.art"), {
imageUrl,
body,
audioUrl
});
return {
title: work.path || "",
link: `${baseUrl}${work.path || ""}`,
description: renderedHtml
};
}
const skillMap = {
art: "Illust",
voice: "Voice",
novel: "Novel",
video: "Video",
music: "Music",
correction: "Advice",
comic: "Comic"
};
function processCreator(creator) {
if (!creator || typeof creator !== "object") return null;
const avatarUrl = creator.avatar_url || "";
let renderedHtml;
if (creator.creator) {
const acceptingCommissions = creator.acceptable ? "Yes" : "No";
const nsfwAcceptable = creator.nsfw_acceptable ? "Yes" : "No";
let skills = "";
if (Array.isArray(creator.skills) && creator.skills.length > 0) skills = creator.skills.map((skill) => skillMap[skill.genre] || skill.genre).filter(Boolean).join(", ");
renderedHtml = art(path.join(__dirname, "templates/creator-f3fb4f56.art"), {
avatarUrl,
acceptingCommissions,
nsfwAcceptable,
skills
});
}
return {
title: creator.name || "",
link: `${baseUrl}/@${creator.screen_name || ""}`,
description: renderedHtml
};
}
async function getFollowingsItems(username, path$1) {
const url = `${baseUrl}/api/users/${username.replace("@", "")}/followings`;
const followings_data = await cache_default.tryGet(`skeb:followings_data:${username}`, async () => {
return await ofetch_default(url, { headers: { Authorization: `Bearer ${config.skeb.bearerToken}` } });
}, config.cache.routeExpire, false);
if (!followings_data || typeof followings_data !== "object") throw new Error("Failed to fetch followings data");
if (path$1 === "following_creators") return followings_data[path$1].map((item) => processCreator(item)).filter(Boolean);
return followings_data[path$1].map((item) => processWork(item)).filter(Boolean);
}
//#endregion
export { processWork as i, getFollowingsItems as n, processCreator as r, baseUrl as t };