UNPKG

general-search-engine

Version:

This module will allow you to search for modules in npm, images in google, repos in github... without any API KEY GENERAL-SEARCH-ENGINE

35 lines (29 loc) 1.54 kB
const functions = require("../functions.js") const DomParser= require('dom-parser'); var parser = new DomParser(); let url = "https://github.com/search?q={QUERY}" module.exports = { type: "github", execute: async (query, options) => { //Request code and format it to obtain a different code per image var repos_code = functions.parseHtml(await functions.requestCode(url.replace(/{QUERY}/g, query)), "mt-n1").map(item => item = item.innerHTML) //Check that we have at least one repo if(repos_code.length == 0){ throw(`[REPO NOT FOUND]`) } //Parse the output var repo_array = repos_code.map(item =>{ var dom = parser.parseFromString(item) var title_name = dom.getElementsByClassName("v-align-middle")[0]?.innerHTML.replace(/<[^>]*>/g, "").split("/") //And make a diferent object to every repo return { title: title_name[1] || null, author: title_name[0] || null, description: dom.getElementsByClassName("mb-1")[0]?.innerHTML.replace(/<[^>]*>/g, "", /[\n]/g, "", ).replace(/[\n]/g, "").replace(/ +/g, ' ') || null, topics: dom.getElementsByClassName("topic-tag")?.map(item => item = item.innerHTML.replace(/[ \n]/g, "")) || null, stars: dom.getElementsByClassName("Link--muted")[0]?.innerHTML.replace(/<[^>]*>/g, "").replace(/[ \n]/g, "") } }) return repo_array } }