UNPKG

rsshub

Version:
82 lines (80 loc) 2.84 kB
import "./config-C37vj7VH.mjs"; import "./logger-Czu8UMNd.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import "./proxy-Db7uGcYb.mjs"; import { n as puppeteer_default } from "./puppeteer-DGmvuGvT.mjs"; import { load } from "cheerio"; //#region lib/routes/uraaka-joshi/uraaka-joshi.ts const route = { path: "/", radar: [{ source: ["uraaka-joshi.com/"], target: "" }], name: "Unknown", maintainers: ["SettingDust", "Halcao"], handler, url: "uraaka-joshi.com/", features: { nsfw: true } }; async function handler() { const link = `https://www.uraaka-joshi.com/`; const title = `裏垢女子まとめ`; const browser = await puppeteer_default(); const page = await browser.newPage(); await page.setRequestInterception(true); page.on("request", (request) => { request.resourceType() === "document" || request.resourceType() === "script" || request.resourceType() === "fetch" ? request.continue() : request.abort(); }); page.on("requestfinished", async (request) => { if (request.url() === link && request.response().status() === 403) await page.close(); }); let html = ""; try { await page.goto(link, { waitUntil: "domcontentloaded" }); await page.waitForSelector("#pickup03 .grid-cell"); await page.waitForSelector("#pickup04 .grid-cell"); await page.waitForSelector("#main-block .grid-cell"); const bodyHandle = await page.$("body"); html = await page.evaluate((body) => body.innerHTML, bodyHandle); } catch { throw new Error("Access denied (403)"); } await browser.close(); const $ = load(html); return { title, link, item: $(".grid-cell").toArray().map((item) => { item = $(item); item.find("*").removeAttr("onclick"); item.find("*").removeAttr("onerror"); item.find("*").removeAttr("style"); const account = item.find(".account-group-link-row"); account.html(account.text()); item.find(".plyr--video").each((_, player) => { player = $(player); const video = player.find("video"); player.replaceWith(video); const poster = video.attr("data-poster"); video.attr("poster", "https:" + poster); const source = video.find("source"); const src = source.attr("src"); source.attr("src", "https:" + src); }); item.find("img").each((_, image) => { const src = $(image).attr("data-src"); $(image).attr("src", "https:" + src); }); return { title: item.find(".account-group").text() + ` - ${title}`, description: item.html(), link: item.find(".account-group-link-row").attr("href"), pubDate: parseDate(item.find(".profile-char").attr("datetime")), guid: item.find("a.tap-image").attr("data-tweet-id") || item.find("video[class^=\"js-player-\"]").attr("data-tweet-id") || parseDate(item.find(".profile-char").attr("datetime")).getTime() }; }) }; } //#endregion export { route };