Advertisement
WILDAN_IZZUDIN

[JS] MODDROID.CO SCRAPER

May 15th, 2022 (edited)
939
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const axios = require('axios')
  2. const cheerio = require('cheerio')
  3.  
  4. class Moddroid {
  5.    baseUrl = 'https://moddroid.co'
  6.    search = (query) => {
  7.       return new Promise(async (resolve) => {
  8.          try {
  9.             let html = await (await axios.get(this.baseUrl + '/search/?s=' + query)).data
  10.             let $ = cheerio.load(html)
  11.             let data = []
  12.             $('div[class="col-12 col-md-6 mb-4"]').each((i, e) => data.push({
  13.                name: $(e).find('h3').text().trim(),
  14.                version: $($(e).find('span.align-middle')[0]).text().trim(),
  15.                mod: /Mod:/.test($($(e).find('span.align-middle')[2]).text().trim()) ? $($(e).find('span.align-middle')[2]).text().replace(/Mod[:]/gi, '').replace(/  /gi, ' ').trim() : '' || 'Premium Unlocked',
  16.                url: this.baseUrl + $(e).find('a').attr('href')
  17.             }))
  18.             if (data.length == 0) return resolve({
  19.                creator: global.creator,
  20.                status: false
  21.             })
  22.             resolve({
  23.                creator: '@neoxrs – Wildan Izzudin',
  24.                status: true,
  25.                data
  26.             })
  27.          } catch (e) {
  28.             console.log(e)
  29.             return resolve({
  30.                creator: '@neoxrs – Wildan Izzudin',
  31.                status: false
  32.             })
  33.          }
  34.       })
  35.    }
  36.  
  37.    thumbnail = (url) => {
  38.       return new Promise(async (resolve, reject) => {
  39.          let html = await (await axios.get(url + '/download')).data
  40.          let $ = cheerio.load(html)
  41.          resolve($('div[class="d-flex align-items-center px-0 px-md-3 mb-3 mb-md-4"]').find('img').attr('src'))
  42.       })
  43.    }
  44.  
  45.    download = (url) => {
  46.       return new Promise(async (resolve) => {
  47.          try {
  48.             let html = await (await axios.get(url)).data
  49.             let $ = cheerio.load(html)
  50.             let information = {
  51.                thumbnail: await this.thumbnail(url) || false,
  52.                name: $($('table[class="table table-striped table-borderless"] > tbody > tr > td')[0]).text().trim(),
  53.                category: $($('table[class="table table-striped table-borderless"] > tbody > tr > td')[1]).text().trim(),
  54.                size: $($('table[class="table table-striped table-borderless"] > tbody > tr > td')[2]).text().trim(),
  55.                version: $($('table[class="table table-striped table-borderless"] > tbody > tr > td')[3]).text().trim(),
  56.                mod: $($('table[class="table table-striped table-borderless"] > tbody > tr > td')[4]).text().trim(),
  57.                rating: $($('table[class="table table-striped table-borderless"] > tbody > tr > td')[6]).text().replace(/\n/g, ''),
  58.                publish: $($('main.content-area').find('time')[0]).text().trim()
  59.             }
  60.             let file = {
  61.                filename: information.name + '.apk',
  62.                url: url + 'download/1'
  63.             }
  64.             resolve({
  65.                creator: '@neoxrs – Wildan Izzudin',
  66.                status: true,
  67.                information,
  68.                file
  69.             })
  70.          } catch (e) {
  71.             console.log(e)
  72.             return resolve({
  73.                creator: '@neoxrs – Wildan Izzudin',
  74.                status: false
  75.             })
  76.          }
  77.       })
  78.    }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement