rsshub
Version:
Make RSS Great Again!
71 lines (58 loc) • 1.96 kB
text/typescript
import { Route } from '@/types';
import got from '@/utils/got';
import { load } from 'cheerio';
export const route: Route = {
path: '/',
radar: [
{
source: ['globallawreview.org/Magazine/GetIssueContentList', 'globallawreview.org/'],
target: '',
},
],
name: 'Unknown',
maintainers: ['nczitzk'],
handler,
url: 'globallawreview.org/Magazine/GetIssueContentList',
};
async function handler(ctx) {
const limit = ctx.req.query('limit') ? Number.parseInt(ctx.req.query('limit'), 10) : 30;
const rootUrl = 'http://www.globallawreview.org';
const { data: firstResponse } = await got(rootUrl);
let $ = load(firstResponse);
const currentUrl = new URL($('p.tabBtn span a').prop('href'), rootUrl).href;
const { data: response } = await got(currentUrl);
$ = load(response);
const items = $('ul.digest li')
.slice(0, limit)
.toArray()
.map((item) => {
item = $(item);
const a = item.find('p.p1 a');
const link = new URL(a.prop('href'), rootUrl).href;
return {
title: a.text(),
link,
description: item.find('p.p2').html(),
author: item.find('p.p3 span').text() || a.text().split(':')[0],
category: [
item
.find('p.p4')
.text()
.match(/] (\d+\.\d+);/)[1],
],
enclosure_url: link,
enclosure_length:
item
.find('p.p4')
.text()
.match(/(\d+(\.\d+)?)\sKB/)[1] * 1000,
};
});
return {
item: items,
title: $('title').text(),
link: currentUrl,
language: 'zh-cn',
author: '中国社会科学院法学研究所',
};
}