RSSHub/lib/v2/liquipedia/dota2_matches.js

48 lines
1.6 KiB
JavaScript

const got = require('@/utils/got');
const cheerio = require('cheerio');
const { parseDate } = require('@/utils/parse-date');
module.exports = async (ctx) => {
const team = ctx.params.id;
const url = `https://liquipedia.net/dota2/${team}`;
const response = await got({
method: 'get',
url,
});
const data = response.data;
const $ = cheerio.load(data);
const list = $('div.recent-matches > table > tbody > tr[style]');
ctx.state.data = {
title: `Liquipedia Dota2 ${team} Matches`,
link: url,
item: list?.toArray().map((item) => {
item = $(item);
let message = '';
if (item.attr('style') === 'background:rgb(240, 255, 240)') {
message = '胜';
} else if (item.attr('style') === 'background:rgb(249, 240, 242)') {
message = '败';
} else {
message = '平';
}
const date = item.find('td:nth-child(1)').text();
const time = item.find('td:nth-child(2)').text();
const tournament = item.find('td:nth-child(6) > a').text();
const dateTime = parseDate(date + ' ' + time);
const score = item.find('td:nth-child(7)').text();
const vs_team = item.find('td:nth-child(8) > span > span.team-template-text > a').text();
return {
title: `[${message}] ${score} ${vs_team}`,
description: `At ${tournament}, ${team} ${score} ${vs_team}`,
pubDate: dateTime,
link: url,
guid: url + dateTime,
};
}),
};
};