const cheerio = require('cheerio'); const got = require('@/utils/got'); module.exports = async (ctx) => { const sort = ctx.params.sort || 'hot'; let baseURL = 'https://gab.com/api/v1/timelines/explore?page=1&sort_by='; baseURL += sort === 'hot' ? 'hot' : 'top_today'; const response = await got.get(baseURL); const result = await Promise.all( response.data.map((item) => { const media = item.media_attachments.map((item) => ``).join('
'); const $ = cheerio.load(item.content); return { title: $.text() || 'Untitled', description: item.content + (media && '
' + media), link: item.url || baseURL, pubDate: new Date(item.created_at).toISOString(), }; }) ); ctx.state.data = { title: `Gab - Popular posts`, link: baseURL, item: result, }; };