UNPKG

node-suggest

Version:

Google, Duckduckgo, Bing, Qwant and other autosuggestion APIs

88 lines (75 loc) 2.43 kB
var axios = require("axios"); var cheerio = require("cheerio"); var urls = { google: "https://suggestqueries.google.com/complete/search?output=toolbar&hl=en&q=", ddg: "https://duckduckgo.com/ac/?kl=wt-wt&q=", bing: "https://www.bingapis.com/api/v7/suggestions?appid=6D0A9B8C5100E9ECC7E11A104ADD76C10219804B&q=", qwant: "https://api.qwant.com/api/suggest/?client=opensearch&q=", yahoo: "https://api.search.yahoo.com/sugg/gossip/gossip-in-ura?output=sd1&command=", startpage: "https://www.startpage.com/do/suggest?query=", dogpile: "https://www.dogpile.com/suggestions?q=", swisscows: "https://swisscows.com/api/suggestion/suggest?query=", ask: "https://amg-ss.ask.com/query?q=", brave: "https://search.brave.com/api/suggest?q=", } module.exports = class Suggest { constructor() {} static async google(q) { var xmlop = await axios(urls.google + q); var $ = cheerio.load(xmlop.data); return $("suggestion").toArray().map(x=>x.attribs.data); } static async ddg(q) { var op = await axios(urls.ddg + q); return op.data.map(x=>x.phrase); } static async bing(q) { var op = await axios(urls.bing + q); return op.data.suggestionGroups[0].searchSuggestions.map(x=>x.displayText); } static async qwant(q) { var op = await axios(urls.qwant + q); return [].concat.apply([], op.data); } static async yahoo(q) { var op = await axios(urls.yahoo + q); return op.data.r.map(x=>x.k); } static async startpage(q) { var op = await axios(urls.startpage + q); op = op.data.split("\n"); op.pop(); return op; } static async dogpile(q) { var op = await axios(urls.dogpile + q); return op.data.suggestions.map(x=>x.text); } static async swisscows(q) { var op = await axios(urls.swisscows + q); return op.data; } static async ask(q) { var op = await axios(urls.ask + q); return op.data[1]; } static async brave(q) { var op = await axios(urls.brave + q); return op.data[1]; } static async all(q) { var all = [ ...await Suggest.google(q), ...await Suggest.ddg(q), ...await Suggest.bing(q), ...await Suggest.qwant(q), ...await Suggest.yahoo(q), ...await Suggest.startpage(q), ...await Suggest.dogpile(q), ...await Suggest.swisscows(q), ...await Suggest.ask(q), ...await Suggest.brave(q) ]; return [...new Set(all)]; } }