UNPKG

tester-scraper

Version:

Sebuah Module Scraper yang dibuat oleh Sxyz dan SuzakuTeam untuk memudahkan penggunaan scraper di project ESM maupun CJS.

122 lines (112 loc) 3.37 kB
import axios from "axios"; import * as cheerio from "cheerio"; import { Success } from "./lib/function.js"; const search = { nasa: async (q) => { const { data } = await axios.get( `https://www.nasa.gov/?search=${encodeURIComponent(q)}`, ); const $ = cheerio.load(data); const results = []; $(".hds-search-result-content").each((i, el) => { const title = $(el).find("h4.hds-search-result-heading").text().trim(); const url = $(el).siblings("em.hds-search-result-url").text().trim(); // ini fallback const urlFromAnchor = $(el).closest("a").attr("href"); // ambil dari <a> const excerpt = $(el).find("p.hds-search-result-excerpt").text().trim(); const readTime = $(el).find(".label").text().trim(); results.push({ title, url: urlFromAnchor || url, excerpt, readTime, }); }); return { success: true, result: results, }; }, spotify: async (qu) => { const { data } = await axios.post( `https://spotifydown.app/api/metadata?link=${qu}`, ); return { success: true, response: data.data.tracks, }; }, snackvideo: async (query) => { const validQuery = query.replace(" ", "-"); const urlEncoded = `https://snackvideo.com/discover/${encodeURIComponent(validQuery)}`; const payload = { ai_content: false, count: 0, fromUser: false, mobile: true, need_id_json: false, need_tdk: false, pcursor: "0", request_source: 1102, searchWord: validQuery, seoDefaultFilterV2: true, url: urlEncoded, }; const { data } = await axios.post( "https://www.snackvideo.com/rest/o/w/pwa/discover", payload, ); return { success: true, resultSearch: data.feeds, }; }, bstation: async (query) => { try { let { data: m } = await axios.get( `https://www.bilibili.tv/id/search-result?q=${encodeURIComponent(query)}`, ); let $ = cheerio.load(m); const results = []; $("li.section__list__item").each((index, element) => { const title = $(element) .find(".highlights__text--active") .text() .trim(); const videoLink = $(element) .find(".bstar-video-card__cover-link") .attr("href"); const thumbnail = $(element) .find(".bstar-video-card__cover-img source") .attr("srcset"); const views = $(element) .find(".bstar-video-card__desc--normal") .text() .trim(); const creatorName = $(element) .find(".bstar-video-card__nickname") .text() .trim(); const creatorLink = $(element) .find(".bstar-video-card__nickname") .attr("href"); const duration = $(element) .find(".bstar-video-card__cover-mask-text") .text() .trim(); results.push({ title, videoLink: `https://www.bilibili.tv${videoLink}`, thumbnail, views, creatorName, creatorLink: `https://www.bilibili.tv${creatorLink}`, duration, }); }); return results; } catch (error) { console.error("Error while fetching search results:", error); } }, }; export default search;