import * as cheerio from 'cheerio';
import { getMetadataCache } from '~/store/v2/metadata';
import type { ArticleMetadata } from '~/utils/download/types';
import { renderComments } from '~/utils/comment';
const ITEM_SHOW_TYPE = {
图片分享: 8,
文本分享: 10,
普通图文: 0,
};
/**
* 根据解析的 cgiDataNew 对象进行渲染
* @param cgiData
* @param comments 是否渲染留言数据,默认是
*/
export async function renderHTMLFromCgiDataNew(cgiData: any, comments = true) {
const title = extractTitle(cgiData);
const meta = renderMetaInfo(cgiData);
const contentHTML = extractContentHTML(cgiData);
const bottomBarHTML = await renderBottomBar(cgiData);
// 渲染留言
let commentHTML = '';
if (comments) {
commentHTML = await renderComments(cgiData.link);
}
return `
${title}
${meta}
原文地址: ${cgiData.link}
${contentHTML}
${commentHTML}
${bottomBarHTML}
`;
}
/**
* 提取标题字段(title)
* @param cgiData
*/
function extractTitle(cgiData: any): string {
let title = '';
switch (cgiData.item_show_type) {
case ITEM_SHOW_TYPE.图片分享:
case ITEM_SHOW_TYPE.普通图文:
title = cgiData.title;
break;
case ITEM_SHOW_TYPE.文本分享:
if (cgiData.text_page_info.is_user_title === 1) {
title = cgiData.title;
} else {
title = '(无标题)';
}
break;
default:
title = '(unknown)';
break;
}
return title;
}
/**
* 提取内容html
* @param cgiData
*/
function extractContentHTML(cgiData: any): string {
let contentHTML = '';
switch (cgiData.item_show_type) {
case ITEM_SHOW_TYPE.图片分享:
contentHTML = renderContent_8(cgiData);
break;
case ITEM_SHOW_TYPE.文本分享:
contentHTML = renderContent_10(cgiData);
break;
case ITEM_SHOW_TYPE.普通图文:
contentHTML = renderContent_0(cgiData);
break;
default:
contentHTML = '(unknown)';
break;
}
return contentHTML;
}
/**
* 渲染【图片分享(8)】类文章的内容部分
* @param cgiData
*/
function renderContent_8(cgiData: any): string {
// 文本内容
let textContent = cgiData.content_noencode.replace(/\n/g, '