UNPKG

unof-quizlet-api

Version:

An API that scrapes Quizlet Study Sets and returns Study Set terms and definitions. Great for high scale educational applications!

55 lines (45 loc) 2.25 kB
const http = require('axios'); const { parse } = require('node-html-parser'); const q_set = async (url , callback) => { try { // Derived from Stack Overflow const headers = { 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'en-US,en;q=0.9', 'cache-control': 'max-age=0', 'cookie': 'yourcookie', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'none', 'sec-fetch-user': '?1', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (X11; CrOS x86_64 12239.92.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.136 Safari/537.36', } const raw_set = (await http.get(url, headers)).data; const root = parse(raw_set); const getText = selector => { return root.querySelector(selector).childNodes[0]._rawText } const qArray = new Array(); const qRoot = root.querySelector('.SetPageTerms-termsList'); for (let i = 0; i < qRoot.parentNode.childNodes[1].childNodes.length; i++) { qArray.push({ term: qRoot.parentNode.childNodes[1].childNodes[i].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0]._rawText, definition: qRoot.parentNode.childNodes[1].childNodes[i].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[0].childNodes[0]._rawText }) } if (callback) { callback(); } return { title: `${getText('title')}`, author: `${getText('.UserLink-username')}`, cards: qArray } } catch (e) { console.log('Cannot Fetch the Quizlet Cards!'); console.error(e); } } module.exports = q_set;