UNPKG

@prana-w/btw

Version:

btw_cli (btw: by-the-W) is a simple and powerful Command Line Interface (CLI) designed to help you perform various useful tasks directly from your terminal.

44 lines (34 loc) 1.24 kB
import puppeteer from 'puppeteer'; import { githubStreakUrl } from '../../constants/index.js'; // Web-Scraping data from Nirzak's GitHub Streak Stats HTML page. // credits: https://nirzak-streak-stats.vercel.app export default async function getGithubStreak(username) { const browser = await puppeteer.launch({ headless: true, args: ['--no-sandbox', '--disable-setuid-sandbox'], }); try { const page = await browser.newPage(); const url = `${githubStreakUrl}${username}`; await page.goto(url); let textElements = await page.$$eval('text', (elements) => { return elements.map((el) => el.textContent.trim()); }); if (!textElements.length) { throw new Error(`Failed to fetch Streak Data.`); } let newTextElements = []; for (let i = 0; i < textElements.length - 2; i += 3) { let arr = [ textElements[i + 1], `${textElements[i]} (${textElements[i + 2]})`, ]; newTextElements.push(arr); } return Object.fromEntries(newTextElements); } catch (err) { throw err; } finally { await browser.close(); } }