rsshub
Version:
Make RSS Great Again!
47 lines (38 loc) • 1.54 kB
text/typescript
import { Video } from './types';
import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
import { art } from '@/utils/render';
import path from 'node:path';
export const baseUrl = 'https://javtrailers.com';
export const headers = {
Authorization: 'AELAbPQCh_fifd93wMvf_kxMD_fqkUAVf@BVgb2!md@TNW8bUEopFExyGCoKRcZX',
};
export const hdGallery = (gallery) =>
gallery.map((item) => {
if (item.startsWith('https://pics.dmm.co.jp/')) {
return item.replace(/-(\d+)\.jpg$/, 'jp-$1.jpg');
} else if (item.startsWith('https://image.mgstage.com/')) {
return item.replace(/cap_t1_/, 'cap_e_');
}
return item;
});
export const parseList = (videos) =>
videos.map((item) => ({
title: `${item.dvdId} ${item.title}`,
link: `${baseUrl}/video/${item.contentId}`,
pubDate: parseDate(item.releaseDate),
contentId: item.contentId,
}));
export const getItem = async (item) => {
const response = await ofetch(`${baseUrl}/api/video/${item.contentId}`, {
headers,
});
const videoInfo: Video = response.video;
videoInfo.gallery = hdGallery(videoInfo.gallery);
item.description = art(path.join(__dirname, 'templates/description.art'), {
videoInfo,
});
item.author = videoInfo.casts.map((cast) => `${cast.name} ${cast.jpName}`).join(', ');
item.category = videoInfo.categories.map((category) => `${category.name}/${category.jpName}/${category.zhName}`);
return item;
};