rsshub
Version:
Make RSS Great Again!
112 lines (110 loc) • 4.07 kB
JavaScript
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs";
import { t as cache_default } from "./cache-Bo__VnGm.mjs";
import { t as art } from "./render-BQo6B4tL.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
import path from "node:path";
import { load } from "cheerio";
//#region lib/routes/dw/utils.ts
init_esm_shims();
const formatId = "605";
const i18n = (word, lang) => {
switch (word) {
case "Image": switch (lang) {
case "sq": return "Fotografi";
case "am": return "ምስል";
case "ar": return "صورة من";
case "bn": return "ছবি";
case "bs": return "Foto";
case "bg": return "Снимка";
case "zh": return "图像来源";
case "zh-hant": return "圖片來源";
case "hr": return "Foto";
case "fa-af": return "عکس";
case "en": return "Image";
case "fr": return "Image";
case "de": return "Bild";
case "el": return "Εικόνα";
case "ha": return "Hoto";
case "hi": return "तस्वीर";
case "id": return "Foto";
case "sw": return "Picha";
case "mk": return "Фотографија";
case "ps": return "انځور";
case "fa-ir": return "عکس";
case "pl": return "Zdjęcie";
case "pt-002": return "Foto";
case "pt-br": return "Foto";
case "ro": return "Imagine";
case "ru": return "Фото";
case "sr": return "Foto";
case "es": return "Imagen";
case "tr": return "Fotoğraf";
case "uk": return "Фото";
case "ur": return "تصویر";
default: return "Image";
}
default: return word;
}
};
const m3u8tomp4 = (src) => src.replace("https://hlsvod.dw.com/i/", "https://tvdownloaddw-a.akamaihd.net/").replace(",AVC_480x270,AVC_512x288,AVC_640x360,AVC_960x540,AVC_1280x720,AVC_1920x1080,.mp4.csmil/master.m3u8", "AVC_1920x1080.mp4");
const processHtml = ($, contentLinks) => {
$("img").each((_, elem) => {
try {
const id = $(elem).attr("data-id");
const contentLink = contentLinks.find((item) => String(item.targetId) === id);
$(elem).attr({
title: contentLink?.name,
alt: contentLink?.description,
src: `https://static.dw.com/image/${id}_${formatId}.jpg`
});
$(elem).removeAttr("style");
} catch {}
});
$("video").each((_, elem) => {
try {
$(elem).attr("poster", $(elem).attr("data-posterurl"));
} catch {}
});
$("iframe").each((_, elem) => {
try {
$(elem).attr("src", $(elem).attr("data-src"));
} catch {}
});
$("svg").remove();
};
const processContent = (item, content) => {
const $text = load(content.text);
processHtml($text, content.contentLinks);
const liveblog = item.type === "liveblog" && content.posts ? art(path.join(__dirname, "templates/liveblog-f70e0cdd.art"), { posts: content.posts.map((post) => {
const $post = load(post.text);
processHtml($post, content.contentLinks);
post.text = $post.html();
return post;
}) }) : void 0;
const video = item.type === "video" && content.hlsVideoSrc ? art(path.join(__dirname, "templates/video-18fbf441.art"), {
hlsVideoSrc: content.hlsVideoSrc,
mp4VideoSrc: m3u8tomp4(content.hlsVideoSrc),
posterImageUrl: content.posterImageUrl
}) : void 0;
item.description = art(path.join(__dirname, "templates/description-0eba44e3.art"), {
teaser: content.teaser,
video,
mainImage: $text(`[data-id="${content.mainContentImageLink?.targetId}"]`).length === 0 ? content.mainContentImageLink : void 0,
text: $text.html(),
liveblog,
imageI18n: i18n("Image", item.language),
formatId
});
if (content.trackingCategories) item.category = content.trackingCategories;
if (content.firstPersonArray) item.author = content.firstPersonArray.map((person) => person.fullName).join(", ");
return item;
};
const processItems = async (items) => {
items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => {
const content = (await got_default(`https://www.dw.com/graph-api/${item.language}/content/${item.type}/${item.id}`)).data.data.content;
return processContent(item, content);
})));
return items;
};
//#endregion
export { processItems as t };