diff --git a/index.js b/index.js index 7ff4e63..f326d17 100644 --- a/index.js +++ b/index.js @@ -5,11 +5,13 @@ const fetchGitHubRepos = require('./networks/github') const fetchBounties = require('./networks/bounties') const fetchMedium = require('./networks/medium') const fetchTwitter = require('./networks/twitter') +const fetchTelegram = require('./networks/telegram') let cacheGithub = null let cacheBounties = null let cacheMedium = null let cacheTwitter = null +let cacheTelegram = null // // Create the response @@ -34,6 +36,10 @@ module.exports = async (req, res) => { if (!cacheTwitter || Date.now() - cacheTwitter.lastUpdate > ms('5m')) { cacheTwitter = await fetchTwitter() } + + if (!cacheTelegram || Date.now() - cacheTelegram.lastUpdate > ms('5m')) { + cacheTelegram = await fetchTelegram() + } } catch (error) { logError(error.message) } @@ -42,6 +48,7 @@ module.exports = async (req, res) => { github: cacheGithub, bounties: cacheBounties, medium: cacheMedium, - twitter: cacheTwitter + twitter: cacheTwitter, + telegram: cacheTelegram })) } diff --git a/networks/telegram.js b/networks/telegram.js new file mode 100644 index 0000000..5fa9c30 --- /dev/null +++ b/networks/telegram.js @@ -0,0 +1,31 @@ +const fetch = require('node-fetch') +const cheerio = require('cheerio') +const { log, logError } = require('../util/logger') + +const fetchTelegram = async () => { + const url = 'https://t.me/OceanProtocolCommunity/?pagehidden=false' + const start = Date.now() + const response = await fetch(url) + + if (response.status !== 200) { + logError(`Non-200 response code from Twitter: ${response.status}`) + return null + } + + const body = await response.text() + const data = await cheerio.load(body, { normalizeWhitespace: true }) + + let info = data('.tgme_page_extra').text() + info = info.replace(' members', '').replace(' ', '').replace(' ', '') + const members = parseInt(info) + + log( + `Re-built telegram cache. ` + + `Total: ${members} members. ` + + `Elapsed: ${new Date() - start}ms` + ) + + return { members } +} + +module.exports = fetchTelegram diff --git a/package.json b/package.json index e65ff99..307139e 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "chalk": "2.4.2", + "cheerio": "^1.0.0-rc.3", "ms": "^2.1.1", "node-fetch": "2.6.0" },