UNPKG

rsshub

Version:
66 lines (62 loc) 1.99 kB
import { Route } from '@/types'; import ofetch from '@/utils/ofetch'; import { parseDate } from '@/utils/parse-date'; export const route: Route = { path: '/characters', categories: ['new-media'], example: '/chub/characters', name: 'Characters', maintainers: ['flameleaf'], handler, features: { nsfw: true, }, }; async function handler() { const hostURL = 'https://www.chub.ai/characters'; const apiURL = 'https://api.chub.ai/search'; const { data } = await ofetch(apiURL, { headers: { Accept: 'application/json' }, query: { search: '', first: 200, page: 1, sort: 'last_activity_at', asc: 'false', include_forks: 'false', nsfw: 'true', nsfl: 'true', nsfw_only: 'false', require_images: 'false', require_example_dialogues: 'false', require_alternate_greetings: 'false', require_custom_prompt: 'false', exclude_mine: 'false', min_tokens: 50, require_expressions: 'false', require_lore: 'false', mine_first: 'false', require_lore_embedded: 'false', require_lore_linked: 'false', inclusive_or: 'false', recommended_verified: 'false', }, }); const nodes = data.nodes; return { allowEmpty: true, title: 'Chub', link: hostURL, item: nodes.map((item) => ({ title: item.name, description: `${item.tagline}<br><br>${item.description}`, pubDate: parseDate(item.createdAt), updated: parseDate(item.lastActivityAt), link: `${hostURL}/${item.fullPath}`, author: String(item.fullPath.split('/', 1)), enclosure_url: item.avatar_url, enclosure_type: `image/webp`, category: item.topics, })), }; }