UNPKG

bandcamp-fetch

Version:
71 lines 3.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const cheerio_1 = require("cheerio"); const Constants_js_1 = require("../utils/Constants.js"); const Parse_js_1 = require("../utils/Parse.js"); class ArticleListParser { static parseList(html, opts) { const $ = (0, cheerio_1.load)(html); const dailyUrl = Constants_js_1.URLS.DAILY; const result = { articles: [], total: 0, start: 0, end: 0 }; $('articles-list').each((i, list) => { $('.list-article', $(list)).each((i, article) => { article = $(article); const imgSrc = article.find('img').attr('src') || null; // Category const infoText = article.find('.article-info-text'); const infoTextCategoryLink = infoText.find('a.franchise'); const infoTextMiddot = infoText.find('.middot'); const categoryName = infoTextCategoryLink.text(); const category = categoryName ? { name: categoryName } : null; const categoryUrl = infoTextCategoryLink.attr('href'); if (category && categoryUrl) { category.url = (0, Parse_js_1.isAbsoluteUrl)(categoryUrl) ? categoryUrl : (0, Parse_js_1.normalizeUrl)(categoryUrl, dailyUrl); } // Date infoTextCategoryLink.remove(); infoTextMiddot.remove(); const date = (0, Parse_js_1.stripLineBreaks)(infoText.text()).trim(); // Title and url const titleLink = article.find('a.title'); const title = titleLink.text(); let url = titleLink.attr('href'); if (!(0, Parse_js_1.isAbsoluteUrl)(url)) { url = (0, Parse_js_1.normalizeUrl)(url, dailyUrl); } if (titleLink) { const parsed = { url, title, date }; if (category) { parsed.category = category; } const imageUrl = (0, Parse_js_1.reformatImageUrl)(imgSrc, opts.imageFormat); if (imageUrl) { parsed.imageUrl = imageUrl; } result.articles.push(parsed); } }); }); const resultsText = (0, Parse_js_1.stripLineBreaks)($('#num-results').text()).trim(); const rtm = resultsText.match(/(\d+)(?:\s*to\s*)(\d+)(?:\s*of\s*)(\d+)/); if (rtm?.length === 4) { result.total = parseInt(rtm[3], 10); result.start = parseInt(rtm[1], 10); result.end = parseInt(rtm[2], 10); } return result; } } exports.default = ArticleListParser; //# sourceMappingURL=ArticleListParser.js.map