UNPKG

@srart24/scraper

Version:

@srart24/scraper adalah sebuah module npm yang menyediakan berbagai fitur seru dan berguna seperti pengunduh konten dari platform populer, teks acak, permainan interaktif, dan berbagai fungsi hiburan.

235 lines (216 loc) 10.3 kB
const cheerio = require('cheerio'); const axios = require('axios').default; const { pickRandom } = require('../utils/index.js'); module.exports = class search { pinterest = async (query) => { try { const { data } = await axios.get('https://id.pinterest.com/search/pins/?autologin=true&q=' + query, { headers: { "cookie": "_auth=1; _b=\"AVna7S1p7l1C5I9u0+nR3YzijpvXOPc6d09SyCzO+DcwpersQH36SmGiYfymBKhZcGg=\"; _pinterest_sess=TWc9PSZHamJOZ0JobUFiSEpSN3Z4a2NsMk9wZ3gxL1NSc2k2NkFLaUw5bVY5cXR5alZHR0gxY2h2MVZDZlNQalNpUUJFRVR5L3NlYy9JZkthekp3bHo5bXFuaFZzVHJFMnkrR3lTbm56U3YvQXBBTW96VUgzVUhuK1Z4VURGKzczUi9hNHdDeTJ5Y2pBTmxhc2owZ2hkSGlDemtUSnYvVXh5dDNkaDN3TjZCTk8ycTdHRHVsOFg2b2NQWCtpOWxqeDNjNkk3cS85MkhhSklSb0hwTnZvZVFyZmJEUllwbG9UVnpCYVNTRzZxOXNJcmduOVc4aURtM3NtRFo3STlmWjJvSjlWTU5ITzg0VUg1NGhOTEZzME9SNFNhVWJRWjRJK3pGMFA4Q3UvcHBnWHdaYXZpa2FUNkx6Z3RNQjEzTFJEOHZoaHRvazc1c1UrYlRuUmdKcDg3ZEY4cjNtZlBLRTRBZjNYK0lPTXZJTzQ5dU8ybDdVS015bWJKT0tjTWYyRlBzclpiamdsNmtpeUZnRjlwVGJXUmdOMXdTUkFHRWloVjBMR0JlTE5YcmhxVHdoNzFHbDZ0YmFHZ1VLQXU1QnpkM1FqUTNMTnhYb3VKeDVGbnhNSkdkNXFSMXQybjRGL3pyZXRLR0ZTc0xHZ0JvbTJCNnAzQzE0cW1WTndIK0trY05HV1gxS09NRktadnFCSDR2YzBoWmRiUGZiWXFQNjcwWmZhaDZQRm1UbzNxc21pV1p5WDlabm1UWGQzanc1SGlrZXB1bDVDWXQvUis3elN2SVFDbm1DSVE5Z0d4YW1sa2hsSkZJb1h0MTFpck5BdDR0d0lZOW1Pa2RDVzNySWpXWmUwOUFhQmFSVUpaOFQ3WlhOQldNMkExeDIvMjZHeXdnNjdMYWdiQUhUSEFBUlhUVTdBMThRRmh1ekJMYWZ2YTJkNlg0cmFCdnU2WEpwcXlPOVZYcGNhNkZDd051S3lGZmo0eHV0ZE42NW8xRm5aRWpoQnNKNnNlSGFad1MzOHNkdWtER0xQTFN5Z3lmRERsZnZWWE5CZEJneVRlMDd2VmNPMjloK0g5eCswZUVJTS9CRkFweHc5RUh6K1JocGN6clc1JmZtL3JhRE1sc0NMTFlpMVErRGtPcllvTGdldz0=\"" } }); const $ = cheerio.load(data); const result = []; const hasil = []; $('div > a').get().map(b => { const link = $(b).find('img').attr('src'); result.push(link); }); result.forEach(v => { if (v == undefined) return; hasil.push(v.replace(/236/g, '736')); }); hasil.shift(); return { result: hasil, random: pickRandom(hasil) }; } catch (error) { throw error; } }; carigc = async (nama) => { try { const { data } = await axios.get('http://ngarang.com/link-grup-wa/daftar-link-grup-wa.php?search=' + nama + '&searchby=name'); const $ = cheerio.load(data); const result = []; const lnk = []; const nm = []; $('div.wa-chat-title-container').each(function (a, b) { const link = $(b).find('a').attr('href'); lnk.push(link); }); $('div.wa-chat-title-text').each(function (c, d) { const name = $(d).text(); nm.push(name); }); for (let i = 0; i < lnk.length; i++) { result.push({ nama: nm[i].split('. ')[1], link: lnk[i].split('?')[0] }); } return { result: result }; } catch (error) { throw error; } }; sticker = async (text) => { try { const { data } = await axios.get(`https://getstickerpack.com/stickers?query=${text}`); const $ = cheerio.load(data); const source = []; const link = []; var ya = $('#stickerPacks > div > div:nth-child(3) > div > a').text(); if (!ya) return; $('#stickerPacks > div > div:nth-child(3) > div > a').each(function (a, b) { source.push($(b).attr('href')); }); const { data: stickerData } = await axios.get(source[Math.floor(Math.random() * source.length)]); const $$ = cheerio.load(stickerData); $$('#stickerPack > div > div.row > div > img').each(function (c, d) { link.push($$(d).attr('src').replace(/&d=200x200/g, '')); }); let result = { title: $$('#intro > div > div > h1').text(), url: link, random: pickRandom(link) }; return { result: result }; } catch (error) { throw error; } }; hentai = () => { return new Promise((resolve, reject) => { const page = Math.floor(Math.random() * 1153); axios.get('https://sfmcompile.club/page/' + page) .then((data) => { const $ = cheerio.load(data.data); const hasil = []; $('#primary > div > div > ul > li > article').each(function (a, b) { hasil.push($(b).find('video > a').attr('href') || ''); }); let resss = { result: hasil, random: pickRandom(hasil) }; resolve(resss); }) .catch((error) => { reject(error); }); }); }; gImg = async (query) => { try { const data = await fetch(`https://www.google.com/search?q=${query}&tbm=isch`, { headers: { accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'en-US,en;q=0.9,id;q=0.8', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36', }, }).then((response) => response.text()); const $ = cheerio.load(data); const pattern = /\[1,\[0,"(?<id>[\d\w\-_]+)",\["https?:\/\/(?:[^"]+)",\d+,\d+\]\s?,\["(?<url>https?:\/\/(?:[^"]+))",\d+,\d+\]/gm; const matches = [...$.html().matchAll(pattern)]; const decodeUrl = (url) => decodeURIComponent(JSON.parse(`"${url}"`)); const hasil = matches.map(({ groups }) => decodeUrl(groups?.url)).filter((v) => /.*\.jpe?g|png$/gi.test(v)) return { result: hasil, random: pickRandom(hasil) }; } catch (error) { return { result: null, random: null }; } } npm = async (query = '@srart24/scraper') => { const url = `https://registry.npmjs.com/-/v1/search?text=${query}`; try { const response = await axios.get(url); let { objects } = response.data if (!objects.length) throw `Module Package "${query}" not found` let txt = objects.map(({ package: pkg }) => { return `Author: ${pkg.author.name} Name: ${pkg.name}(v${pkg.version}) Url: ${pkg.links.npm} Date: ${pkg.date} Desc: ${pkg.description}` }).join`\n\n` return { result: txt } } catch (error) { throw new Error(`Terjadi kesalahan saat mengambil data: ${error.message}`); } }; github = async (username = 'srart24') => { const url = `https://api.github.com/users/${username}`; try { const response = await axios.get(url); const userData = response.data; if (!userData) throw `${username} Not Found` const res = { id: userData.id, username: userData.login, name: userData.name, img_url: userData.avatar_url, bio: userData.bio, repo_public: userData.public_repos, following: userData.following, followers: userData.followers, date_create: userData.created_at }; return { result: res } } catch (error) { throw new Error(`Terjadi kesalahan saat mengambil data: ${error.message}`); } }; instagram = async (username= 'jokowi') => { try { const { data } = await axios.get(`https://dumpor.com/v/${username}`, { headers: { "user-agent": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "cookie": "_inst_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYT3dzSXI2YWR6SG1fNFdmTllfZnFIZ1Ra.5Og9VRy7gUy9IsCwUeYW8O8qvHbndaus-cqBRaZ7jcg; __gads=ID=f8ead4404e6a0e16-2206b4189ace0028:T=1636352226:RT=1636352226:S=ALNI_MbsEYYwp3U-9PJHoUHPA0mj4zn3uQ; _ym_uid=1636352226596108095; _ym_d=1636352226; _ym_isad=2; __atssc=google%3B1; FCNEC=[[\"AKsRol8BmQbGXTRP_1wzoi3Qg8PSMr7FFU0k- LGYROfG4nmvg - yFq6fARCalcofDHQIoyhwlo75582yk2a5WLTZakmPZu - SIkkXQNAePmtpVXwaPISfK8HC1pJ8tUjrRWRiFfjPaZh3rC - _6nkHQN25c - 1YR- NJtDQ == \"],null,[]]; FCCDCF=[null,null,[\"[[], [], [], [], null, null, true]\",1636352300969],null,null,null,[]]; __atuvc=3%7C45; __atuvs=6188c0df986e798b002" } }) const $ = cheerio.load(data) var reszcx = { Username: ($('#user-page > div.user > div.row > div > div.user__title > h4').text() || '').replace(/@/gi, '').trim(), Fullname: $('#user-page > div.user > div.row > div > div.user__title > a > h1').text(), Followers: ($('#user-page > div.container > div > div > div:nth-child(1) > div > a').eq(2).text() || '').replace(/Followers/gi, '').trim(), Following: ($('#user-page > div.container > div > div > div:nth-child(1) > div > a').eq(3).text() || '').replace(/Following/gi, '').trim(), Postingan: ($('#user-page > div.container > div > div > div:nth-child(1) > div > a').eq(0).text() || '').replace(/Posts/gi, '').trim(), Bio: $('#user-page > div.user > div.row > div > div.user__info-desc').text(), Image: ($('#user-page > div.user > div.row > div > div.user__img').attr('style') || '').replace(/(background-image: url\(\'|\'\);)/gi, '').trim() } if (!reszcx) throw 'Tidak Di Temukan' return { result: reszcx } } catch (e) { throw 'Tidak Di Temukan' } } cuaca = async (tempat = 'bali') => { try { const response = await axios.get('https://api.openweathermap.org/data/2.5/weather', { params: { q: tempat, units: 'metric', appid: '060a6bcfa19809c2cd4d97a212b19273' } }); const json = response.data; if (json.cod !== 200) throw json; const rres = { Lokasi: json.name, Negara: json.sys.country, Cuaca: json.weather[0].description, "Suhu saat ini": `${json.main.temp} °C`, "Suhu tertinggi": `${json.main.temp_max} °C`, "Suhu terendah": `${json.main.temp_min} °C`, Kelembapan: `${json.main.humidity} %`, Angin: `${json.wind.speed} km/jam` }; return { result: rres }; } catch (error) { console.log(error); throw 'Tidak Ditemukan'; } } };