rsshub
Version:
Make RSS Great Again!
88 lines (78 loc) • 2.82 kB
text/typescript
import { Route } from '@/types';
import puppeteer from '@/utils/puppeteer';
import { load } from 'cheerio';
export const route: Route = {
path: '/vinyl/:cat?',
categories: ['shopping'],
example: '/hkushop/vinyl',
parameters: {
cat: '分类,见下表,默认不分类',
},
features: {
requireConfig: false,
requirePuppeteer: true,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
supportRadar: true,
},
radar: [
{
source: ['hkushop.com/vinyl-or-picture-lp.html', 'hkushop.com/'],
target: '/vinyl',
},
],
name: 'HKU Shop 黑胶专区',
maintainers: ['gideonsenku'],
handler,
description: `常见分类:
| 華語音樂 | 經典復刻 | 古典跨界 | 爵士音樂 | 國際音樂 | 電影原聲帶 | 黑膠日本音樂 |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 37 | 38 | 40 | 41 | 39 | 170 | 224 |`,
url: 'hkushop.com/vinyl-or-picture-lp.html',
};
async function handler(ctx) {
const baseUrl = 'https://hkushop.com';
const cat = ctx.req.param('cat') ?? '';
const url = cat ? `${baseUrl}/vinyl-or-picture-lp.html?cat=${cat}` : `${baseUrl}/vinyl-or-picture-lp.html`;
const browser = await puppeteer();
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on('request', (request) => {
request.resourceType() === 'document' || request.resourceType() === 'script' ? request.continue() : request.abort();
});
await page.goto(url, {
waitUntil: 'domcontentloaded',
});
const response = await page.content();
await page.close();
await browser.close();
const $ = load(response);
const list = $('.products.list.items.product-items .product-item')
.toArray()
.map((item) => {
const $item = $(item);
const $link = $item.find('.product-item-link');
const $price = $item.find('.price');
const $image = $item.find('.product-image-photo');
const $artist = $item.find('.artist a').text().trim();
return {
title: $link.text().trim(),
link: $link.attr('href'),
description: `
<img src="${$image.attr('src')}" />
<p>作者: ${$artist}</p>
<p>价格: ${$price.text().trim()}</p>
`,
guid: $link.attr('href'),
};
});
const title = cat ? `黑胶彩胶系列 - ${$('.page-title').text().trim()}` : '黑胶彩胶系列 - HKU Shop 环球唱片网店';
return {
title,
link: url,
description: 'HKU Shop 黑胶唱片最新商品信息',
item: list,
};
}