rsshub
Version:
Make RSS Great Again!
109 lines (108 loc) • 3.8 kB
JavaScript
import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs";
import { t as cache_default } from "./cache-BkqOokyU.mjs";
import { t as got_default } from "./got-BTowW50G.mjs";
import { load } from "cheerio";
import { JSDOM } from "jsdom";
//#region lib/routes/dongqiudi/utils.ts
const ProcessVideo = (content) => {
content("div.video").each((i, v) => {
let link = new URL(v.attribs.src);
if (link.host === "m.miguvideo.com") {
content(`<a href="${link.href}"> ▶️ 观看视频 </a><br>`).insertAfter(v);
content(v).remove();
} else {
link = v.attribs.src;
switch (v.attribs.site) {
case "qiniu":
content(`<video width="100%" controls="controls"> <source src="${link}" type="video/mp4"> Your RSS reader does not support video playback. </video>`).insertAfter(v);
content(v).remove();
break;
case "youku":
content(`<iframe height='100%' width='100%' src='${link}' frameborder=0 scrolling=no webkitallowfullscreen=true allowfullscreen=true></iframe>`).insertAfter(v);
content(v).remove();
break;
default: break;
}
}
});
content("iframe.media-iframe, .edui-faked-video").each((i, v) => {
const link = v.attribs.src;
if (link.startsWith("http://ssports.iqiyi.com/")) content(`<a href="${link.link}"> ▶️ 观看视频 </a><br>`).insertAfter(v);
content(v).remove();
});
return content;
};
const ProcessHref = (content) => {
content.each((j, y) => {
if (y.attribs.href) y.attribs.href = y.attribs.href.replace("dongqiudi:///news", "https://www.dongqiudi.com/article");
});
};
const ProcessImg = (content) => {
content.each((_, img) => {
if (img.attribs["data-gif-src"] && img.attribs["data-gif-src"].length) img.attribs = { src: img.attribs["data-gif-src"] };
if (img.attribs["orig-src"] && img.attribs["orig-src"].length) {
img.attribs.src = img.attribs["orig-src"];
delete img.attribs["orig-src"];
delete img.attribs["data-src"];
}
img.attribs.src = img.attribs.src.includes("?watermark") ? img.attribs.src.split("?watermark", 1)[0] : img.attribs.src;
});
};
const ProcessFeed = async (ctx, type, id) => {
const link = `https://www.dongqiudi.com/${type}/${id}.html`;
const apiUrl = "https://api.dongqiudi.com/v3/archive/app/channel/feeds";
const { data: response } = await got_default(link);
const { window } = new JSDOM(response, { runScripts: "dangerously" });
const nuxtData = window.__NUXT__.data[0];
let name;
let image;
if (type === "team") {
name = nuxtData.teamInfo.name;
image = nuxtData.teamInfo.logo;
} else {
name = nuxtData.detail.base_info.person_name;
image = nuxtData.detail.base_info.person_logo;
}
const { data } = await got_default(apiUrl, { searchParams: {
id,
type,
size: 20,
platform: "web",
version: ""
} });
const list = data.data.articles.map((article) => ({
title: article.title,
link: `https://www.dongqiudi.com/articles/${article.id}.html`,
category: [article.category, ...article.secondary_category ?? []],
pubDate: parseDate(article.show_time, "X")
}));
const out = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => {
const { data: response } = await got_default(item.link);
ProcessFeedType2(item, response);
return item;
})));
return {
title: `${name} - 相关新闻`,
link,
image,
item: out
};
};
const ProcessFeedType2 = (item, response) => {
const data = new JSDOM(response, { runScripts: "dangerously" }).window.__NUXT__?.data?.[0]?.article;
if (!data) return;
const body = ProcessVideo(load(data.rawBody, null, false));
ProcessHref(body("a"));
ProcessImg(body("img"));
item.description = body.html();
item.author = data.author;
};
var utils_default = {
ProcessVideo,
ProcessFeed,
ProcessFeedType2,
ProcessHref,
ProcessImg
};
//#endregion
export { utils_default as t };