UNPKG

abot-scraper

Version:

scraper random for downloader and searching

678 lines (672 loc) 24.5 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { Downloader: () => Downloader, Search: () => Search, default: () => index_default, downloader: () => downloader, search: () => search }); module.exports = __toCommonJS(index_exports); // src/scraper/downloader.ts var import_axios = __toESM(require("axios"), 1); var cheerio = __toESM(require("cheerio"), 1); var import_qs = __toESM(require("qs"), 1); // src/utils/generator.ts var import_crypto = __toESM(require("crypto"), 1); var Generator = class { generateTimeStampYoutubeDL() { return Date.now().toString(); } generateFooterYoutubeDL(timestamp, link) { const locale = "en"; const secretKey = "6HTugjCXxR"; const input = link + locale + timestamp + secretKey; const hash = import_crypto.default.createHash("md5").update(input).digest("hex"); return hash; } formatFileSize(bytes) { if (bytes === 0) return "0 Bytes"; const k = 1024; const sizes = ["Bytes", "KB", "MB", "GB", "TB"]; const i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i]; } }; // src/scraper/downloader.ts global.creator = "@abotscraper \u2013 ahmuq"; var Downloader = class { constructor() { this.ytMp3Downloader = (url) => { return new Promise((resolve, reject) => { const headers = { accept: "*/*", "accept-language": "en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6", "content-type": "application/x-www-form-urlencoded; charset=UTF-8", priority: "u=1, i", "sec-ch-ua": '"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"Windows"', "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "cross-site", Referer: "https://y2hub.com/", "Referrer-Policy": "strict-origin-when-cross-origin" }; const payload = import_qs.default.stringify({ action: "yt_convert", nonce: "1495b10e48", youtube_url: url }); (0, import_axios.default)(`https://youtubemp4free.com/wp-admin/admin-ajax.php`, { method: "POST", headers, data: payload }).then(({ data }) => { if (!data.success) { return reject(new Error("Failed to fetch video data")); } const videoInfo = data.data.info; const slug = data.data.slug; const size = data.data.size; return (0, import_axios.default)("https://ryin.info/", { method: "GET", headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0" } }).then((response) => { const setCookieHeaders = response.headers["set-cookie"]; let cookies; if (setCookieHeaders) { cookies = setCookieHeaders.map((cookie) => cookie.split(";")[0]).join("; "); } else { cookies = "PHPSESSID=fl86pmq4dqgh2835b32mdm7380; csrf_cookie_name=739e04fcc21050c61c5325b34f449659; lang=en"; } const pageUrl = "https://ryin.info/" + slug; return (0, import_axios.default)(pageUrl, { method: "GET", headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0", Cookie: cookies } }).then((response2) => { const html = response2.data; const $ = cheerio.load(html); const downloadHref = $("#download-url").attr("download-href"); if (!downloadHref) { return reject(new Error("Download link not found on page")); } resolve({ creator: global.creator, status: true, title: videoInfo.title, thumbnail: videoInfo.thumbnail, description: videoInfo.description, viewCount: videoInfo.view_count, size: this.generator.formatFileSize(size), downloadUrl: downloadHref }); }); }); }).catch((error) => { reject({ creator: global.creator, status: false, error: error.message }); }); }); }; this.generator = new Generator(); } async facebook(url) { try { const headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0", Origin: "https://www.fdown.world", referer: "https://www.fdown.world/", "x-requested-with": "XMLHttpRequest", Cookie: "codehap_domain=www.fdown.world" }; const data = new URLSearchParams({ codehap_link: url, codehap: "true" }); const response = await import_axios.default.post( "https://www.fdown.world/result.php", data, { headers } ); const $ = cheerio.load(response.data); const videoUrl = $("video source").attr("src"); const imageUrl = $("img").attr("src"); if (!videoUrl && !imageUrl) { throw new Error("No video or image found in the response."); } return { creator: global.creator, status: 200, result: { thumbnail: imageUrl || "", videoUrl: videoUrl || "" } }; } catch (error) { return { creator: global.creator, status: false, msg: error instanceof Error ? error.message : "Unknown error" }; } } async tiktokDownloader(url) { try { const headers = { "sec-ch-ua": '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"', "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" }; const data = new URLSearchParams({ id: url, locale: "en", tt: "WmNzZDk_" }); const response = await import_axios.default.post( "https://ssstik.io/abc?url=dl", data, { headers } ); const $ = cheerio.load(response.data); const title = $("p.maintext").text().trim(); const audio = $("a.download_link.music").attr("href"); const video = $("a.download_link.without_watermark").attr("href"); if (!title || !video) { throw new Error("Failed to extract video or title from response."); } return { creator: global.creator, status: 200, result: { title, video: video || "", audio: audio || "" } }; } catch (error) { return { creator: global.creator, status: false, msg: error instanceof Error ? error.message : "Unknown error" }; } } async igstory(username) { const payload = { username }; const headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/", accept: "application/json, text/plain, */*", "accept-language": "en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6", "content-type": "application/json", priority: "u=1, i", "sec-ch-ua": '"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"Windows"', "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-origin", Referer: "https://storyviewer.com/", "Referrer-Policy": "strict-origin-when-cross-origin" }; try { const response = await import_axios.default.post( `https://storyviewer.com/api/data`, payload, { headers } ); const data = response.data; const sources = data.stories.map((story) => story.source); return { creator: global.creator, status: 200, result: { user_info: data.user_info, links: sources } }; } catch (error) { return { creator: global.creator, status: false, msg: error instanceof Error ? error.message : "Unknown error" }; } } async instagram(url) { try { const config = new URLSearchParams({ url, new: "2", lang: "en", app: "" }); const headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" }; const response = await import_axios.default.post( "https://snapinsta.app/get-data.php", config, { headers } ); const downloadLinks = response.data.files.map( (file) => file.__type === "GraphVideo" ? { type: "video", url: file.video_url || "" } : file.__type === "GraphImage" ? { type: "image", url: file.download_url || "" } : null ).filter((link) => link !== null); return { creator: global.creator, status: 200, result: downloadLinks }; } catch (error) { return { creator: global.creator, status: false, msg: error instanceof Error ? error.message : "Unknown error" }; } } async youtubeDownloader(url) { try { const config = import_qs.default.stringify({ url, q_auto: 0, ajax: 1, lang: "en" }); const headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" }; const response = await import_axios.default.post( "https://yt1s.net/ajax?retry=undefined&platform=youtube", config, { headers } ); const $ = cheerio.load(response.data.result); const title = $(".caption b").text().trim(); const downloadLinks = { "480p": $('a[data-fquality="480p"]').attr("href") || "", "720p": $('a[data-fquality="720p"]').attr("href") || "", "1080p": $('a[data-fquality="1080p"]').attr("href") || "" }; const thumbnailUrl = $(".thumbnail.cover img").attr("src"); const mp3ConvertElement = $("#convert-mp3 a"); const hrefAttr = mp3ConvertElement.attr("href"); if (!hrefAttr) throw new Error("MP3 conversion link not found."); const mp3ConvertTokenMatch = hrefAttr.match( /mp3_convert_task\('(\d+)',\s*'([^']+)'\)/ ); if (!mp3ConvertTokenMatch) throw new Error("MP3 conversion token not found."); const mp3ConvertToken = mp3ConvertTokenMatch[2]; const mp3Response = await import_axios.default.get( `https://api.fabdl.com/youtube/mp3-convert-task?token=${mp3ConvertToken}` ); return { creator: global.creator, status: 200, result: { title, thumbnail: thumbnailUrl || "", downloadLinks, mp3DownloadUrl: `https://api.fabdl.com${mp3Response.data.result.download_url}` } }; } catch (error) { return { creator: global.creator, status: false, msg: error instanceof Error ? error.message : "Unknown error" }; } } async youtubeDownloaderV2(url) { try { const timestamp = this.generator.generateTimeStampYoutubeDL(); const footer = this.generator.generateFooterYoutubeDL(timestamp, url); const payload = { link: url }; const headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", "g-footer": footer, "g-timestamp": timestamp, accept: "*/*", "accept-language": "en", "content-type": "application/json", priority: "u=1, i", "sec-ch-ua": '"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"Windows"', "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-site", Referer: "https://snapany.com/", "Referrer-Policy": "strict-origin-when-cross-origin" }; const response = await import_axios.default.post( "https://api.snapany.com/v1/extract", payload, { headers } ); const data = response.data; const videoMedia = data.medias.find( (media) => media.media_type === "video" ); const audioMedia = data.medias.find( (media) => media.media_type === "audio" ); const downloadLinks = {}; if (videoMedia && videoMedia.formats) { videoMedia.formats.forEach((format) => { const qualityKey = `${format.quality}p`; downloadLinks[qualityKey] = format.video_url; }); } return { creator: global.creator, status: 200, result: { title: data.text, thumbnail: (videoMedia == null ? void 0 : videoMedia.preview_url) || null, downloadLinks, video: (videoMedia == null ? void 0 : videoMedia.resource_url) || null, audio: (audioMedia == null ? void 0 : audioMedia.resource_url) || null, formats: (videoMedia == null ? void 0 : videoMedia.formats) || [] } }; } catch (error) { return { creator: global.creator, status: false, msg: error instanceof Error ? error.message : "Unknown error" }; } } async sfileDownloader(url) { var _a; try { const response = await import_axios.default.get(url, { headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", Referer: "https://sfile.mobi/", "Accept-Language": "en-US,en;q=0.9" } }); const $ = cheerio.load(response.data); const filename = $(".intro-container img").attr("alt") || ""; const mimetype = ((_a = $("div.list").text().split(" - ")[1]) == null ? void 0 : _a.split("\n")[0]) || ""; const downloadHref = $("#download").attr("href"); const download = downloadHref ? downloadHref + "&k=" + Math.floor(Math.random() * (15 - 10 + 1) + 10) : ""; return { creator: global.creator, status: 200, result: { filename, mimetype, download } }; } catch (error) { return { creator: global.creator, status: false, msg: error instanceof Error ? error.message : "Unknown error" }; } } }; // src/scraper/search.ts var import_axios2 = __toESM(require("axios"), 1); var cheerio2 = __toESM(require("cheerio"), 1); global.creator = "@abotscraper \u2013 ahmuq"; var Search = class { constructor() { this.ytPlay = (text) => { return new Promise((resolve, reject) => { const configd = { k_query: text, k_page: "mp3", q_auto: 1 }; const headerss = { "sec-ch-ua": '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"', "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", Cookie: 'PHPSESSID=6jo2ggb63g5mjvgj45f612ogt7; _ga=GA1.2.405896420.1625200423; _gid=GA1.2.2135261581.1625200423; _PN_SBSCRBR_FALLBACK_DENIED=1625200785624; MarketGidStorage={"0":{},"C702514":{"page":5,"time":1625200846733}}' }; (0, import_axios2.default)("https://www.y2mate.com/mates/analyzeV2/ajax", { method: "POST", data: new URLSearchParams(Object.entries(configd)), headers: headerss }).then(({ data }) => { const v = data.vitems; const v2 = v[Math.floor(Math.random() * v.length)].v; const url = "https://www.youtube.com/watch?v=" + v2; const config = { k_query: "https://www.youtube.be/" + url, k_page: "mp3", hl: "en", q_auto: 1 }; (0, import_axios2.default)("https://www.y2mate.com/mates/en68/analyze/ajax", { method: "POST", data: new URLSearchParams({ url: "https://www.youtube.be/" + url, q_auto: "0", ajax: "1" }), headers: headerss }).then(({ data: data2 }) => { const $ = cheerio2.load(data2.result); const img = $("div.thumbnail.cover > a > img").attr("src"); (0, import_axios2.default)("https://www.y2mate.com/mates/analyzeV2/ajax", { method: "POST", data: new URLSearchParams(Object.entries(config)), headers: headerss }).then(({ data: data3 }) => { const convertConfig = { vid: data3.vid, k: data3.links.mp3.mp3128.k }; const size = data3.links.mp3.mp3128.size; (0, import_axios2.default)("https://www.y2mate.com/mates/convertV2/index", { method: "POST", data: new URLSearchParams(Object.entries(convertConfig)), headers: headerss }).then((response) => { resolve({ creator: global.creator, status: 200, result: { status: response.data.status, title: response.data.title, ftype: response.data.ftype, thumb: img || "", size_mp3: size, link: response.data.dlink } }); }).catch(reject); }); }); }).catch(reject); }); }; this.wallpaper = (title, page = "1") => { return new Promise((resolve, reject) => { import_axios2.default.get( `https://www.besthdwallpaper.com/search?CurrentPage=${page}&q=${title}` ).then(({ data }) => { const $ = cheerio2.load(data); const hasil = []; $("div.grid-item").each(function(_, b) { const titleAttr = $(b).find("p[title]").attr("title"); const typeText = $(b).find("div.info > a:nth-child(2)").text(); const hrefAttr = $(b).find("a").attr("href"); const imgSrc = $(b).find("picture > img").attr("src"); const srcset1 = $(b).find("picture > source:nth-child(1)").attr("srcset"); const srcset2 = $(b).find("picture > source:nth-child(2)").attr("srcset"); if (titleAttr && hrefAttr) { hasil.push({ title: titleAttr.trim(), type: (typeText == null ? void 0 : typeText.trim()) || "", source: "https://www.besthdwallpaper.com" + hrefAttr, image: [imgSrc || "", srcset1 || "", srcset2 || ""] }); } }); resolve({ creator: global.creator, status: 200, result: hasil }); }).catch((error) => { reject(error); }); }); }; this.wikimedia = (title) => { return new Promise((resolve, reject) => { import_axios2.default.get( `https://commons.wikimedia.org/w/index.php?search=${title}&title=Special:MediaSearch&go=Go&type=image` ).then((res) => { const $ = cheerio2.load(res.data); const hasil = []; $(".sdms-search-results__list-wrapper > div > a").each(function(_, b) { const altText = $(b).find("img").attr("alt"); const href = $(b).attr("href"); const dataSrc = $(b).find("img").attr("data-src"); const src = $(b).find("img").attr("src"); if (altText && href) { hasil.push({ title: altText, source: href, image: dataSrc || src || "" }); } }); resolve({ creator: global.creator, status: 200, result: hasil }); }).catch(reject); }); }; } async sfileSearch(query, page = 1) { try { const response = await import_axios2.default.get( `https://sfile.mobi/search.php?q=${query}&page=${page}`, { headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", Referer: "https://sfile.mobi/", "Accept-Language": "en-US,en;q=0.9" } } ); const $ = cheerio2.load(response.data); const results = []; $("div.list").each(function() { const title = $(this).find("a").text(); const sizeText = $(this).text().trim().split("(")[1]; const link = $(this).find("a").attr("href"); if (link && sizeText) { results.push({ title, size: sizeText.replace(")", ""), link }); } }); return { creator: global.creator, status: 200, result: results }; } catch (error) { return { creator: global.creator, status: false, msg: error instanceof Error ? error.message : "Unknown error" }; } } async ytSearch(query) { var _a; try { const headers = { accept: "*/*", "accept-language": "en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6", priority: "u=1, i", "sec-ch-ua": '"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"Windows"', "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "cross-site" }; const response = await import_axios2.default.get( `https://line.1010diy.com/web/free-mp3-finder/query?q=${encodeURIComponent(query)}&type=youtube&pageToken=`, { headers } ); const data = response.data; const videos = ((_a = data == null ? void 0 : data.data) == null ? void 0 : _a.items) || []; const results = videos.map((item) => ({ title: item.title, thumbnail: item.thumbnail, url: item.url })); return { creator: global.creator, status: 200, result: results }; } catch (error) { return { creator: global.creator, status: false, msg: error instanceof Error ? error.message : "Unknown error" }; } } }; // src/index.ts var downloader = new Downloader(); var search = new Search(); var index_default = { downloader, search }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { Downloader, Search, downloader, search }); //# sourceMappingURL=index.cjs.map