wechat-article / utils /index.ts
asemxin2000's picture
Deploy wechat-article-exporter to Space
6e41657 verified
Raw
History Blame Contribute Delete
113 kB
import JSZip from 'jszip';
import mime from 'mime';
import { formatTimeStamp, sleep } from '#shared/utils/helpers';
import { request } from '#shared/utils/request';
import { getComment } from '~/apis';
import { getAssetCache, updateAssetCache } from '~/store/v2/assets';
import type { DownloadableArticle } from '~/types/types';
import type { AudioResource, VideoPageInfo } from '~/types/video';
import * as pool from '~/utils/pool';
import { extractCommentId } from './comment';
/**
* 使用代理下载资源
* @param url 资源地址
* @param proxy 代理地址
* @param withCredential
* @param timeout 超时时间(单位: 秒),默认 30
*/
async function downloadAssetWithProxy<T extends Blob | string>(
url: string,
proxy: string | undefined,
withCredential = false,
timeout = 30
) {
const headers: Record<string, string> = {};
if (withCredential) {
try {
const credentials = JSON.parse(window.localStorage.getItem('credentials')!);
headers.cookie = `pass_ticket=${credentials.pass_ticket};wap_sid2=${credentials.wap_sid2}`;
} catch (e) {}
}
let targetURL = proxy
? `${proxy}?url=${encodeURIComponent(url)}&headers=${encodeURIComponent(JSON.stringify(headers))}`
: url;
targetURL = targetURL.replace(/^http:\/\//, 'https://');
return await request<T>(targetURL, {
timeout: timeout * 1000,
referrerPolicy: 'unsafe-url',
});
}
/**
* 下载文章的 html
* @param articleURL
* @param title
*/
async function downloadArticleHTML(articleURL: string, title?: string) {
let html = '';
const parser = new DOMParser();
const htmlDownloadFn = async (url: string, proxy: string) => {
const fullHTML = await downloadAssetWithProxy<string>(url, proxy, true);
// 验证是否下载完整
const document = parser.parseFromString(fullHTML, 'text/html');
const $jsContent = document.querySelector('#js_content');
const $layout = document.querySelector('#js_fullscreen_layout_padding');
if (!$jsContent) {
if ($layout) {
console.warn(`文章(${title})已被删除,跳过下载`);
return 0;
}
console.warn(`文章(${title})下载失败`);
throw new Error('下载失败,请重试');
}
html = fullHTML;
return new Blob([html]).size;
};
await pool.downloads([articleURL], htmlDownloadFn);
if (!html) {
throw new Error('下载html失败,请稍后重试');
}
return html;
}
/**
* 批量下载文章 html
* @param articles
* @param callback
*/
export async function downloadArticleHTMLs(articles: DownloadableArticle[], callback: (count: number) => void) {
const parser = new DOMParser();
const results: DownloadableArticle[] = [];
const htmlDownloadFn = async (article: DownloadableArticle, proxy: string) => {
const fullHTML = await downloadAssetWithProxy<string>(article.url, proxy, true);
// 验证是否下载完整
const document = parser.parseFromString(fullHTML, 'text/html');
const $jsContent = document.querySelector('#js_content');
const $layout = document.querySelector('#js_fullscreen_layout_padding');
if (!$jsContent) {
if ($layout) {
console.warn(`文章(${article.title})已被删除,跳过下载`);
return 0;
}
console.warn(`文章(${article.title})下载失败`);
throw new Error('下载失败,请重试');
}
article.html = fullHTML;
results.push(article);
callback(results.length);
await sleep(2000);
return new Blob([fullHTML]).size;
};
await pool.downloads(articles, htmlDownloadFn);
return results;
}
/**
* 打包 html 中的资源
* @param fakeid
* @param html
* @param title
* @param zip
*/
export async function packHTMLAssets(fakeid: string, html: string, title: string, zip?: JSZip) {
if (!zip) {
zip = new JSZip();
}
zip.folder('assets');
const parser = new DOMParser();
const document = parser.parseFromString(html, 'text/html');
const $jsArticleContent = document.querySelector('#js_article')!;
const $jsArticleBottomBar = document.querySelector('#js_article_bottom_bar')!;
// #js_content 默认是不可见的(通过js修改为可见),需要移除该样式
$jsArticleContent.querySelector('#js_content')?.removeAttribute('style');
// 删除无用dom元素
$jsArticleContent.querySelector('#js_top_ad_area')?.remove();
$jsArticleContent.querySelector('#js_tags_preview_toast')?.remove();
$jsArticleContent.querySelector('#content_bottom_area')?.remove();
$jsArticleContent.querySelectorAll('script').forEach(el => {
el.remove();
});
$jsArticleContent.querySelector('#js_pc_qr_code')?.remove();
$jsArticleContent.querySelector('#wx_stream_article_slide_tip')?.remove();
let bodyCls = document.body.className;
// 渲染发布时间
function __setPubTime(oriTimestamp: number, dom: HTMLElement) {
const dateObj = new Date(oriTimestamp * 1000);
const padStart = function padStart(v: number) {
return '0'.concat(v.toString()).slice(-2);
};
const year = dateObj.getFullYear().toString();
const month = padStart(dateObj.getMonth() + 1);
const date = padStart(dateObj.getDate());
const hour = padStart(dateObj.getHours());
const minute = padStart(dateObj.getMinutes());
const timeString = ''.concat(hour, ':').concat(minute);
const dateString = ''.concat(year, '年').concat(month, '月').concat(date, '日');
const showDate = ''.concat(dateString, ' ').concat(timeString);
if (dom) {
dom.innerText = showDate;
}
}
const pubTimeMatchResult = html.match(/var oriCreateTime = '(?<date>\d+)'/);
if (pubTimeMatchResult && pubTimeMatchResult.groups && pubTimeMatchResult.groups.date) {
__setPubTime(parseInt(pubTimeMatchResult.groups.date), document.getElementById('publish_time')!);
}
// 渲染ip属地
function getIpWoridng(ipConfig: any) {
let ipWording = '';
if (parseInt(ipConfig.countryId, 10) === 156) {
ipWording = ipConfig.provinceName;
} else if (ipConfig.countryId) {
ipWording = ipConfig.countryName;
}
return ipWording;
}
const ipWrp = document.getElementById('js_ip_wording_wrp')!;
const ipWording = document.getElementById('js_ip_wording')!;
const ipWordingMatchResult = html.match(/window\.ip_wording = (?<data>{\s+countryName: '[^']+',[^}]+})/s);
if (ipWrp && ipWording && ipWordingMatchResult && ipWordingMatchResult.groups && ipWordingMatchResult.groups.data) {
const json = ipWordingMatchResult.groups.data;
// eslint-disable-next-line no-eval
eval('window.ip_wording = ' + json);
const ipWordingDisplay = getIpWoridng((window as any).ip_wording);
if (ipWordingDisplay !== '') {
ipWording.innerHTML = ipWordingDisplay;
ipWrp.style.display = 'inline-block';
}
}
// 渲染 标题已修改
function __setTitleModify(isTitleModified: boolean) {
const wrp = document.getElementById('js_title_modify_wrp')!;
const titleModifyNode = document.getElementById('js_title_modify')!;
if (!wrp) return;
if (isTitleModified) {
titleModifyNode.innerHTML = '标题已修改';
wrp.style.display = 'inline-block';
} else {
wrp.parentNode?.removeChild(wrp);
}
}
const titleModifiedMatchResult = html.match(/window\.isTitleModified = "(?<data>\d*)" \* 1;/);
if (titleModifiedMatchResult && titleModifiedMatchResult.groups && titleModifiedMatchResult.groups.data) {
__setTitleModify(titleModifiedMatchResult.groups.data === '1');
}
// 文本分享消息
const $js_text_desc = $jsArticleContent.querySelector('#js_text_desc') as HTMLElement | null;
if ($js_text_desc) {
// 文本分享样式
bodyCls += ' page_share_text';
// 顶部作者栏
const qmtplTextMatchResult = html.match(/(?<code>window\.__QMTPL_SSR_DATA__\s*=\s*\{.+?};)/s);
if (qmtplTextMatchResult && qmtplTextMatchResult.groups && qmtplTextMatchResult.groups.code) {
const code = qmtplTextMatchResult.groups.code;
// eslint-disable-next-line no-eval
eval(code);
const data = (window as any).__QMTPL_SSR_DATA__;
if (data && typeof data.title === 'string' && !$js_text_desc.innerHTML.trim()) {
let text = data.title as string;
text = text.replace(/\r/g, '').replace(/\n/g, '<br>');
$js_text_desc.innerHTML = text;
}
$jsArticleContent.querySelector('#js_top_profile')?.classList.remove('profile_area_hide');
}
// 正文内容
if (!$js_text_desc.innerHTML.trim()) {
const textContentMatch = html.match(
/var\s+TextContentNoEncode\s*=\s*window\.a_value_which_never_exists\s*\|\|\s*(?<value>'[^']*')/s
);
const contentMatch = html.match(
/var\s+ContentNoEncode\s*=\s*window\.a_value_which_never_exists\s*\|\|\s*(?<value>'[^']*')/s
);
let desc: string | null = null;
const assignFromMatch = (match: RegExpMatchArray | null, key: string) => {
if (match && match.groups && match.groups.value) {
const code = `window.${key} = ${match.groups.value}`;
// eslint-disable-next-line no-eval
eval(code);
// @ts-ignore
return (window as any)[key] as string;
}
return null;
};
desc = assignFromMatch(textContentMatch, '__WX_TEXT_NO_ENCODE__');
if (!desc) {
desc = assignFromMatch(contentMatch, '__WX_CONTENT_NO_ENCODE__');
}
if (desc) {
desc = desc.replace(/\r/g, '').replace(/\n/g, '<br>');
$js_text_desc.innerHTML = desc;
}
}
}
// 文章引用
const js_share_source = document.getElementById('js_share_source');
const contentTpl = document.getElementById('content_tpl');
if (js_share_source && contentTpl) {
const html = contentTpl.innerHTML
.replace(/<img[^>]*>/g, '<p>[图片]</p>')
.replace(
/<iframe [^>]*?class=\"res_iframe card_iframe js_editor_card\"[^>]*?data-cardid=[\'\"][^\'\"]*[^>]*?><\/iframe>/gi,
'<p>[卡券]</p>'
)
.replace(/<mpvoice([^>]*?)js_editor_audio([^>]*?)><\/mpvoice>/g, '<p>[语音]</p>')
.replace(/<mpgongyi([^>]*?)js_editor_gy([^>]*?)><\/mpgongyi>/g, '<p>[公益]</p>')
.replace(/<qqmusic([^>]*?)js_editor_qqmusic([^>]*?)><\/qqmusic>/g, '<p>[音乐]</p>')
.replace(/<mpshop([^>]*?)js_editor_shop([^>]*?)><\/mpshop>/g, '<p>[小店]</p>')
.replace(/<iframe([^>]*?)class=[\'\"][^\'\"]*video_iframe([^>]*?)><\/iframe>/g, '<p>[视频]</p>')
.replace(/(<iframe[^>]*?js_editor_vote_card[^<]*?<\/iframe>)/gi, '<p>[投票]</p>')
.replace(/<mp-weapp([^>]*?)weapp_element([^>]*?)><\/mp-weapp>/g, '<p>[小程序]</p>')
.replace(/<mp-miniprogram([^>]*?)><\/mp-miniprogram>/g, '<p>[小程序]</p>')
.replace(/<mpproduct([^>]*?)><\/mpproduct>/g, '<p>[商品]</p>')
.replace(/<mpcps([^>]*?)><\/mpcps>/g, '<p>[商品]</p>');
const div = document.createElement('div');
div.innerHTML = html;
let content = div.innerText;
content = content.replace(/</g, '&lt;').replace(/>/g, '&gt;').trim();
if (content.length > 140) {
content = content.substr(0, 140) + '...';
}
const digest = content.split('\n').map(function (line) {
return '<p>' + line + '</p>';
});
document.getElementById('js_content')!.innerHTML = digest.join('');
// 替换url
const sourceURL = js_share_source.getAttribute('data-url');
if (sourceURL) {
const link = document.createElement('a');
link.href = sourceURL;
link.className = js_share_source.className;
link.innerHTML = js_share_source.innerHTML;
js_share_source.replaceWith(link);
}
}
// 下载留言数据
let commentHTML = '';
const comment_id = extractCommentId(html);
if (comment_id) {
const commentResponse = await getComment(comment_id);
// 抓到了留言数据
if (commentResponse) {
// 留言总数
const totalCount =
commentResponse.elected_comment.length +
commentResponse.elected_comment.reduce((total, item) => {
return total + item.reply_new.reply_total_cnt;
}, 0);
commentHTML += '<div style="max-width: 667px;margin: 0 auto;padding: 10px 10px 80px;">';
commentHTML += `<p style="font-size: 15px;color: #949494;">留言 ${totalCount}</p>`;
commentHTML += '<div style="margin-top: -10px;">';
commentResponse.elected_comment.forEach(comment => {
commentHTML += '<div style="margin-top: 25px;"><div style="display: flex;">';
if ([1, 2].includes(comment.identity_type)) {
commentHTML += `<img src="${comment.logo_url}" style="display: block;width: 30px;height: 30px;border-radius: 50%;margin-right: 8px;" alt="">`;
} else {
commentHTML += `<img src="${comment.logo_url}" style="display: block;width: 30px;height: 30px;border-radius: 2px;margin-right: 8px;" alt="">`;
}
commentHTML += '<div style="flex: 1;"><p style="display: flex;line-height: 16px;margin-bottom: 5px;">';
commentHTML += `<span style="margin-right: 5px;font-size: 15px;color: #949494;">${comment.nick_name}</span>`;
commentHTML += `<span style="margin-right: 5px;font-size: 12px;color: #b5b5b5;">${comment?.ip_wording?.province_name}</span>`;
commentHTML += `<span style="font-size: 12px;color: #b5b5b5;">${formatTimeStamp(comment.create_time)}</span>`;
commentHTML += '<span style="flex: 1;"></span><span style="display: inline-flex;align-items: center;">';
commentHTML += `<span class="sns_opr_btn sns_praise_btn" style="font-size: 12px;color: #8b8a8a;">${comment.like_num || ''}</span>`;
commentHTML += '</span></p>';
commentHTML += `<p style="font-size: 15px;color: #333;white-space: pre-line;">${comment.content}</p>`;
commentHTML += '</div></div>';
if (comment.reply_new && comment.reply_new.reply_list.length > 0) {
commentHTML += '<div style="padding-left: 38px;">';
comment.reply_new.reply_list.forEach(reply => {
commentHTML += '<div style="display: flex;margin-top: 15px;">';
if ([1, 2].includes(reply.identity_type)) {
commentHTML += `<img src="${reply.logo_url}" style="display: block;width: 23px;height: 23px;border-radius: 50%;margin-right: 8px;" alt="">`;
} else {
commentHTML += `<img src="${reply.logo_url}" style="display: block;width: 23px;height: 23px;border-radius: 2px;margin-right: 8px;" alt="">`;
}
commentHTML += '<div style="flex: 1;"><p style="display: flex;line-height: 16px;margin-bottom: 5px;">';
commentHTML += `<span style="margin-right: 5px;font-size: 15px;color: #949494;">${reply.nick_name}</span>`;
commentHTML += `<span style="margin-right: 5px;font-size: 12px;color: #b5b5b5;">${reply?.ip_wording?.province_name}</span>`;
commentHTML += `<span style="font-size: 12px;color: #b5b5b5;">${formatTimeStamp(reply.create_time)}</span>`;
commentHTML +=
'<span style="flex: 1;"></span><span style="display: inline-flex;align-items: center; font-size: 12px;color: #b5b5b5;">';
commentHTML += `<span class="sns_opr_btn sns_praise_btn" style="font-size: 12px;color: #8b8a8a;">${reply.reply_like_num || ''}</span>`;
commentHTML += '</span></p>';
commentHTML += `<p style="font-size: 15px;color: #333;white-space: pre-line;">${reply.content}</p>`;
commentHTML += '</div></div>';
});
commentHTML += '</div>';
}
if (comment.reply_new.reply_total_cnt - comment.reply_new.reply_list.length > 0) {
commentHTML +=
'<p style="display: flex;align-items: center; font-size: 14px;color: #a3a0a0;padding-left: 38px;padding-top: 5px;">';
commentHTML += `<span>${comment.reply_new.reply_total_cnt - comment.reply_new.reply_list.length}条回复</span>`;
commentHTML +=
'<img src="https://wxa.wxs.qq.com/images/wxapp/feedback_icon.png" alt="" style="filter: invert(1);width: 10px;height: 6px;margin-left: 5px;">';
commentHTML += '</p>';
}
commentHTML += '</div>';
});
commentHTML += '</div></div>';
}
}
// 阅读量
let readNum = -1;
const readNumMatchResult = html.match(/var read_num = ['"](?<read_num>\d+)['"] \* 1;/);
const readNumNewMatchResult = html.match(/var read_num_new = ['"](?<read_num_new>\d+)['"] \* 1;/);
if (readNumNewMatchResult && readNumNewMatchResult.groups && readNumNewMatchResult.groups.read_num_new) {
readNum = parseInt(readNumNewMatchResult.groups.read_num_new, 10);
} else if (readNumMatchResult && readNumMatchResult.groups && readNumMatchResult.groups.read_num) {
readNum = parseInt(readNumMatchResult.groups.read_num, 10);
}
// 图片分享消息
const $js_image_desc = $jsArticleContent.querySelector('#js_image_desc');
if ($js_image_desc) {
bodyCls += 'pages_skin_pc page_share_img';
function decode_html(data: string, encode: boolean) {
const replace = [
'&#39;',
"'",
'&quot;',
'"',
'&nbsp;',
' ',
'&gt;',
'>',
'&lt;',
'<',
'&yen;',
'¥',
'&amp;',
'&',
];
const replaceReverse = [
'&',
'&amp;',
'¥',
'&yen;',
'<',
'&lt;',
'>',
'&gt;',
' ',
'&nbsp;',
'"',
'&quot;',
"'",
'&#39;',
];
let target = encode ? replaceReverse : replace;
let str = data;
for (let i = 0; i < target.length; i += 2) {
str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
}
return str;
}
const qmtplMatchResult = html.match(/(?<code>window\.__QMTPL_SSR_DATA__\s*=\s*\{.+?)<\/script>/s);
if (qmtplMatchResult && qmtplMatchResult.groups && qmtplMatchResult.groups.code) {
const code = qmtplMatchResult.groups.code;
eval(code);
const data = (window as any).__QMTPL_SSR_DATA__;
let desc = data.desc.replace(/\r/g, '').replace(/\n/g, '<br>').replace(/\s/g, '&nbsp;');
desc = decode_html(desc, false);
$js_image_desc.innerHTML = desc;
$jsArticleContent.querySelector('#js_top_profile')!.classList.remove('profile_area_hide');
}
const pictureMatchResult = html.match(/(?<code>window\.picture_page_info_list\s*=.+\.slice\(0,\s*20\);)/s);
if (pictureMatchResult && pictureMatchResult.groups && pictureMatchResult.groups.code) {
const code = pictureMatchResult.groups.code;
eval(code);
const picture_page_info_list = (window as any).picture_page_info_list;
const containerEl = $jsArticleContent.querySelector('#js_share_content_page_hd')!;
let innerHTML =
'<div style="display: flex;flex-direction: column;align-items: center;gap: 10px;padding-block: 20px;">';
for (const picture of picture_page_info_list) {
innerHTML += `<img src="${picture.cdn_url}" alt="" style="display: block;border: 1px solid gray;border-radius: 5px;max-width: 90%;" onclick="window.open(this.src, '_blank', 'popup')" />`;
}
innerHTML += '</div>';
containerEl.innerHTML = innerHTML;
}
}
// 视频分享消息
const $js_common_share_desc = $jsArticleContent.querySelector('#js_common_share_desc');
if ($js_common_share_desc) {
// 分享视频摘要
bodyCls +=
'zh_CN wx_wap_page wx_wap_desktop_fontsize_2 page_share_video white_video_page discuss_tab appmsg_skin_default appmsg_style_default pages_skin_pc';
const videoContentMatchResult = html.match(
/(?<code>var\s+videoContentNoEncode\s*=\s*window\.a_value_which_never_exists\s*\|\|\s*(?<value>'[^']+'))/s
);
if (videoContentMatchResult && videoContentMatchResult.groups && videoContentMatchResult.groups.value) {
const code = 'window.videoContentNoEncode = ' + videoContentMatchResult.groups.value;
eval(code);
let desc = (window as any).videoContentNoEncode;
desc = desc.replace(/\r/g, '').replace(/\n/g, '<br>');
$js_common_share_desc.innerHTML = desc;
}
}
const $js_mpvedio = $jsArticleContent.querySelector('.js_video_channel_container > #js_mpvedio');
if ($js_mpvedio) {
// 分享视频
// poster
let poster = '';
const mpVideoCoverUrlMatchResult = html.match(/(?<code>window\.__mpVideoCoverUrl\s*=\s*'[^']*';)/s);
if (mpVideoCoverUrlMatchResult && mpVideoCoverUrlMatchResult.groups && mpVideoCoverUrlMatchResult.groups.code) {
const code = mpVideoCoverUrlMatchResult.groups.code;
eval(code);
poster = (window as any).__mpVideoCoverUrl;
}
// video info
let videoUrl = '';
const mpVideoTransInfoMatchResult = html.match(/(?<code>window\.__mpVideoTransInfo\s*=\s*\[.+?];)/s);
if (mpVideoTransInfoMatchResult && mpVideoTransInfoMatchResult.groups && mpVideoTransInfoMatchResult.groups.code) {
const code = mpVideoTransInfoMatchResult.groups.code;
eval(code);
const mpVideoTransInfo = (window as any).__mpVideoTransInfo;
if (Array.isArray(mpVideoTransInfo) && mpVideoTransInfo.length > 0) {
mpVideoTransInfo.forEach((trans: any) => {
trans.url = trans.url.replace(/&amp;/g, '&');
});
// 这里为了节省流量需要控制清晰度
videoUrl = mpVideoTransInfo[mpVideoTransInfo.length - 1].url;
// 下载资源
const videoURLMap = new Map<string, string>();
const resourceDownloadFn = async (url: string, proxy: string) => {
const videoData = await downloadAssetWithProxy<Blob>(url, proxy, false, 10);
const uuid = new Date().getTime() + Math.random().toString();
const ext = mime.getExtension(videoData.type);
zip.file(`assets/${uuid}.${ext}`, videoData);
videoURLMap.set(url, `./assets/${uuid}.${ext}`);
return videoData.size;
};
const urls: string[] = [];
if (poster) {
urls.push(poster);
}
urls.push(videoUrl);
await pool.downloads<string>(urls, resourceDownloadFn);
const div = document.createElement('div');
div.style.cssText = 'height: 381px;background: #000;border-radius: 4px; overflow: hidden;margin-bottom: 12px;';
div.innerHTML = `<video src="${videoURLMap.get(videoUrl)}" poster="${videoURLMap.get(poster)}" controls style="width: 100%;height: 100%;"></video>`;
$js_mpvedio.appendChild(div);
}
}
}
// 下载内嵌音频
const mpAudioEls = $jsArticleContent.querySelectorAll<HTMLElement>('mp-common-mpaudio');
if (mpAudioEls.length > 0) {
const audioResourceDownloadFn = async (asset: AudioResource, proxy: string) => {
const audioData = await downloadAssetWithProxy<Blob>(asset.url, proxy, false, 10);
const uuid = asset.uuid;
const ext = mime.getExtension(audioData.type);
zip.file(`assets/${uuid}.${ext}`, audioData);
let targetEl: HTMLElement | null = null;
mpAudioEls.forEach(el => {
const id = el.getAttribute('data-uuid');
if (id === uuid) {
targetEl = el;
}
});
if (!targetEl) {
throw new Error('下载失败');
}
if (asset.type === 'cover') {
(targetEl as HTMLElement).setAttribute('cover', `./assets/${uuid}.${ext}`);
} else if (asset.type === 'audio') {
(targetEl as HTMLElement).setAttribute('src', `./assets/${uuid}.${ext}`);
}
return audioData.size;
};
const assets: AudioResource[] = [];
mpAudioEls.forEach(mpAudioEl => {
const uuid = new Date().getTime() + Math.random().toString();
mpAudioEl.setAttribute('data-uuid', uuid);
const cover = mpAudioEl.getAttribute('cover')!;
const voice_encode_fileid = mpAudioEl.getAttribute('voice_encode_fileid')!;
assets.push({
uuid: uuid,
type: 'cover',
url: cover,
});
assets.push({
uuid: uuid,
type: 'audio',
url: 'https://res.wx.qq.com/voice/getvoice?mediaid=' + voice_encode_fileid,
});
});
await pool.downloads<AudioResource>(assets, audioResourceDownloadFn);
}
// 下载内嵌视频
const videoPageInfosMatchResult = html.match(
/(?<code>var videoPageInfos = \[.+?window.__videoPageInfos = videoPageInfos;)/s
);
if (videoPageInfosMatchResult && videoPageInfosMatchResult.groups && videoPageInfosMatchResult.groups.code) {
const code = videoPageInfosMatchResult.groups.code;
eval(code);
const videoPageInfos: VideoPageInfo[] = (window as any).__videoPageInfos;
videoPageInfos.forEach(videoPageInfo => {
videoPageInfo.mp_video_trans_info.forEach(trans => {
trans.url = trans.url.replace(/&amp;/g, '&');
});
});
// 下载资源
const videoURLMap = new Map<string, string>();
const resourceDownloadFn = async (url: string, proxy: string) => {
const videoData = await downloadAssetWithProxy<Blob>(url, proxy, false, 10);
const uuid = new Date().getTime() + Math.random().toString();
const ext = mime.getExtension(videoData.type);
zip.file(`assets/${uuid}.${ext}`, videoData);
videoURLMap.set(url, `./assets/${uuid}.${ext}`);
return videoData.size;
};
const urls: string[] = [];
videoPageInfos.forEach(videoPageInfo => {
if (videoPageInfo.cover_url) {
urls.push(videoPageInfo.cover_url);
}
if (videoPageInfo.is_mp_video === 1 && videoPageInfo.mp_video_trans_info.length > 0) {
urls.push(videoPageInfo.mp_video_trans_info[0].url);
}
});
await pool.downloads<string>(urls, resourceDownloadFn);
const videoIframes = $jsArticleContent.querySelectorAll('iframe.video_iframe');
videoIframes.forEach(videoIframe => {
const mpvid = videoIframe.getAttribute('data-mpvid');
if (mpvid) {
const videoInfo = videoPageInfos.find(info => info.video_id === mpvid);
if (videoInfo) {
const div = document.createElement('div');
div.style.cssText =
'height: 508px;background: #000;border-radius: 4px; overflow: hidden;margin-bottom: 12px;';
div.innerHTML = `<video src="${videoURLMap.get(videoInfo.mp_video_trans_info[0]?.url)}" poster="${videoURLMap.get(videoInfo.cover_url)}" controls style="width: 100%;height: 100%;"></video>`;
videoIframe.replaceWith(div);
}
} else {
const src = videoIframe.getAttribute('data-src')!;
const vidMatchResult = src.match(/v\.qq\.com\/iframe\/preview\.html\?vid=(?<vid>[\da-z]+)/i);
if (vidMatchResult && vidMatchResult.groups && vidMatchResult.groups.vid) {
const vid = vidMatchResult.groups.vid;
videoIframe.setAttribute('src', 'https://v.qq.com/txp/iframe/player.html?vid=' + vid);
videoIframe.setAttribute('width', '100%');
}
}
});
}
// 下载所有的图片
const imgDownloadFn = async (img: HTMLImageElement, proxy: string) => {
const url = img.getAttribute('src') || img.getAttribute('data-src');
if (!url) {
return 0;
}
const imgData = await downloadAssetWithProxy<Blob>(url, proxy, false, 10);
const uuid = new Date().getTime() + Math.random().toString();
const ext = mime.getExtension(imgData.type);
zip.file(`assets/${uuid}.${ext}`, imgData);
// 改写html中的引用路径,指向本地图片文件
img.src = `./assets/${uuid}.${ext}`;
return imgData.size;
};
const imgs = $jsArticleContent.querySelectorAll<HTMLImageElement>('img');
if (imgs.length > 0) {
await pool.downloads<HTMLImageElement>([...imgs], imgDownloadFn);
}
// 下载背景图片 背景图片无法用选择器选中并修改,因此用正则进行匹配替换
let pageContentHTML = $jsArticleContent.outerHTML;
const jsArticleBottomBarHTML = $jsArticleBottomBar?.outerHTML;
// 收集所有的背景图片地址
const bgImageURLs = new Set<string>();
pageContentHTML.replaceAll(
/((?:background|background-image): url\((?:&quot;)?)((?:https?|\/\/)[^)]+?)((?:&quot;)?\))/gs,
(_, p1, url, p3) => {
bgImageURLs.add(url);
return `${p1}${url}${p3}`;
}
);
if (bgImageURLs.size > 0) {
// 下载背景图片
const bgImgDownloadFn = async (url: string, proxy: string) => {
const imgData = await downloadAssetWithProxy<Blob>(url, proxy, false, 10);
const uuid = new Date().getTime() + Math.random().toString();
const ext = mime.getExtension(imgData.type);
zip.file(`assets/${uuid}.${ext}`, imgData);
url2pathMap.set(url, `assets/${uuid}.${ext}`);
return imgData.size;
};
const url2pathMap = new Map<string, string>();
await pool.downloads<string>([...bgImageURLs], bgImgDownloadFn);
// 替换背景图片路径
pageContentHTML = pageContentHTML.replaceAll(
/((?:background|background-image): url\((?:&quot;)?)((?:https?|\/\/)[^)]+?)((?:&quot;)?\))/gs,
(_, p1, url, p3) => {
if (url2pathMap.has(url)) {
const path = url2pathMap.get(url)!;
return `${p1}./${path}${p3}`;
} else {
console.warn('背景图片丢失: ', url);
return `${p1}${url}${p3}`;
}
}
);
}
// 下载样式表
const linkDownloadFn = async (link: HTMLLinkElement) => {
const url = link.href;
let stylesheetFile: Blob | null;
// 检查缓存
const cachedAsset = await getAssetCache(url);
if (cachedAsset) {
stylesheetFile = cachedAsset.file;
} else {
const stylesheet = await request<string>(url, { retry: 1, retryDelay: 2000 });
stylesheetFile = new Blob([stylesheet], { type: 'text/css' });
await updateAssetCache({ url: url, file: stylesheetFile, fakeid: fakeid });
}
const uuid = new Date().getTime() + Math.random().toString();
zip.file(`assets/${uuid}.css`, stylesheetFile);
localLinks += `<link rel="stylesheet" href="./assets/${uuid}.css">\n`;
return stylesheetFile.size;
};
let localLinks: string = '';
const links = document.querySelectorAll<HTMLLinkElement>('head link[rel="stylesheet"]');
if (links.length > 0) {
await pool.downloads<HTMLLinkElement>([...links], linkDownloadFn, false);
}
// 处理自定义组件
const hasMpAudio = $jsArticleContent.querySelector('mp-common-mpaudio') !== null;
const mpAudioTemplate = `
<template id="mp-common-mpaudio">
<style>
:host {
all: initial;
-webkit-text-size-adjust: inherit;
}
#audio_progress_bar {
display: none;
}
.js_duration1 {
display: block;
}
.js_duration2 {
display: none;
}
</style>
<style>
.wx-root,body,page{--weui-BTN-HEIGHT:48;--weui-BTN-HEIGHT-MEDIUM:40;--weui-BTN-HEIGHT-SMALL:32}.wx-root,body{--weui-BTN-ACTIVE-MASK:rgba(0,0,0,0.1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-ACTIVE-MASK:hsla(0,0%,100%,0.1)}@media (prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-ACTIVE-MASK:hsla(0,0%,100%,0.1)}}.wx-root,body{--weui-BTN-DEFAULT-ACTIVE-BG:#e6e6e6}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-DEFAULT-ACTIVE-BG:hsla(0,0%,100%,0.126)}@media (prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-DEFAULT-ACTIVE-BG:hsla(0,0%,100%,0.126)}}.wx-root,body{--weui-DIALOG-LINE-COLOR:rgba(0,0,0,0.1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-DIALOG-LINE-COLOR:hsla(0,0%,100%,0.1)}@media (prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-DIALOG-LINE-COLOR:hsla(0,0%,100%,0.1)}}.weui-hidden_abs{opacity:0;position:absolute;width:1px;height:1px;overflow:hidden}.weui-a11y_ref{display:none}.weui-hidden-space:empty:before{content:"\\00A0";position:absolute;width:1px;height:1px;overflow:hidden}.weui-a11y-combo{position:relative}.weui-a11y-combo__helper{opacity:0;position:absolute;width:100%;height:100%;overflow:hidden}.weui-a11y-combo__content{position:relative;z-index:1}.weui-wa-hotarea-el{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);min-width:44px;min-height:44px;width:100%;height:100%}.weui-wa-hotarea,.weui-wa-hotarea-el__wrp,.weui-wa-hotarea_before{position:relative}.weui-wa-hotarea-el__wrp a,.weui-wa-hotarea-el__wrp button,.weui-wa-hotarea-el__wrp navigator,.weui-wa-hotarea_before a,.weui-wa-hotarea_before button,.weui-wa-hotarea_before navigator,.weui-wa-hotarea a,.weui-wa-hotarea button,.weui-wa-hotarea navigator{position:relative;z-index:1}.weui-wa-hotarea:after,.weui-wa-hotarea_before:before{content:"";pointer-events:auto;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);min-width:44px;min-height:44px;width:100%;height:100%}.wx-root,body{--weui-BG-COLOR-ACTIVE:#ececec}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-COLOR-ACTIVE:#373737}@media (prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-COLOR-ACTIVE:#373737}}[class*=" weui-icon-"][class*=" weui-icon-"],[class*=" weui-icon-"][class^=weui-icon-],[class^=weui-icon-][class*=" weui-icon-"],[class^=weui-icon-][class^=weui-icon-]{display:inline-block;vertical-align:middle;font-size:10px;width:2.4em;height:2.4em;-webkit-mask-position:50% 50%;mask-position:50% 50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%;background-color:currentColor}.weui-icon-circle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1000' height='1000' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M500 916.667C269.881 916.667 83.333 730.119 83.333 500 83.333 269.881 269.881 83.333 500 83.333c230.119 0 416.667 186.548 416.667 416.667 0 230.119-186.548 416.667-416.667 416.667zm0-50c202.504 0 366.667-164.163 366.667-366.667 0-202.504-164.163-366.667-366.667-366.667-202.504 0-366.667 164.163-366.667 366.667 0 202.504 164.163 366.667 366.667 366.667z' fill-rule='evenodd' fill-opacity='.9'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1000' height='1000' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M500 916.667C269.881 916.667 83.333 730.119 83.333 500 83.333 269.881 269.881 83.333 500 83.333c230.119 0 416.667 186.548 416.667 416.667 0 230.119-186.548 416.667-416.667 416.667zm0-50c202.504 0 366.667-164.163 366.667-366.667 0-202.504-164.163-366.667-366.667-366.667-202.504 0-366.667 164.163-366.667 366.667 0 202.504 164.163 366.667 366.667 366.667z' fill-rule='evenodd' fill-opacity='.9'/%3E%3C/svg%3E")}.weui-icon-download{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.25 12.04l-1.72-1.72-1.06 1.06 2.828 2.83a1 1 0 001.414-.001l2.828-2.828-1.06-1.061-1.73 1.73V7h-1.5v5.04zm0-5.04V2h1.5v5h6.251c.55 0 .999.446.999.996v13.008a.998.998 0 01-.996.996H4.996A.998.998 0 014 21.004V7.996A1 1 0 014.999 7h6.251z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.25 12.04l-1.72-1.72-1.06 1.06 2.828 2.83a1 1 0 001.414-.001l2.828-2.828-1.06-1.061-1.73 1.73V7h-1.5v5.04zm0-5.04V2h1.5v5h6.251c.55 0 .999.446.999.996v13.008a.998.998 0 01-.996.996H4.996A.998.998 0 014 21.004V7.996A1 1 0 014.999 7h6.251z'/%3E%3C/svg%3E")}.weui-icon-info{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-.75-12v7h1.5v-7h-1.5zM12 9a1 1 0 100-2 1 1 0 000 2z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-.75-12v7h1.5v-7h-1.5zM12 9a1 1 0 100-2 1 1 0 000 2z'/%3E%3C/svg%3E")}.weui-icon-safe-success{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 1000'%3E%3Cpath d='M500.9 4.6C315.5 46.7 180.4 93.1 57.6 132c0 129.3.2 231.7.2 339.7 0 304.2 248.3 471.6 443.1 523.7C695.7 943.3 944 775.9 944 471.7c0-108 .2-210.4.2-339.7C821.4 93.1 686.3 46.7 500.9 4.6zm248.3 349.1l-299.7 295c-2.1 2-5.3 2-7.4-.1L304.4 506.1c-2-2.1-2.3-5.7-.6-8l18.3-24.9c1.7-2.3 5-2.8 7.2-1l112.2 86c2.3 1.8 6 1.7 8.1-.1l274.7-228.9c2.2-1.8 5.7-1.7 7.7.3l17 16.8c2.2 2.1 2.2 5.3.2 7.4z' fill-rule='evenodd' clip-rule='evenodd' fill='%23070202'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 1000'%3E%3Cpath d='M500.9 4.6C315.5 46.7 180.4 93.1 57.6 132c0 129.3.2 231.7.2 339.7 0 304.2 248.3 471.6 443.1 523.7C695.7 943.3 944 775.9 944 471.7c0-108 .2-210.4.2-339.7C821.4 93.1 686.3 46.7 500.9 4.6zm248.3 349.1l-299.7 295c-2.1 2-5.3 2-7.4-.1L304.4 506.1c-2-2.1-2.3-5.7-.6-8l18.3-24.9c1.7-2.3 5-2.8 7.2-1l112.2 86c2.3 1.8 6 1.7 8.1-.1l274.7-228.9c2.2-1.8 5.7-1.7 7.7.3l17 16.8c2.2 2.1 2.2 5.3.2 7.4z' fill-rule='evenodd' clip-rule='evenodd' fill='%23070202'/%3E%3C/svg%3E")}.weui-icon-safe-warn{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 1000'%3E%3Cpath d='M500.9 4.5c-185.4 42-320.4 88.4-443.2 127.3 0 129.3.2 231.7.2 339.6 0 304.1 248.2 471.4 443 523.6 194.7-52.2 443-219.5 443-523.6 0-107.9.2-210.3.2-339.6C821.3 92.9 686.2 46.5 500.9 4.5zm-26.1 271.1h52.1c5.8 0 10.3 4.7 10.1 10.4l-11.6 313.8c-.1 2.8-2.5 5.2-5.4 5.2h-38.2c-2.9 0-5.3-2.3-5.4-5.2L464.8 286c-.2-5.8 4.3-10.4 10-10.4zm26.1 448.3c-20.2 0-36.5-16.3-36.5-36.5s16.3-36.5 36.5-36.5 36.5 16.3 36.5 36.5-16.4 36.5-36.5 36.5z' fill-rule='evenodd' clip-rule='evenodd' fill='%23020202'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 1000'%3E%3Cpath d='M500.9 4.5c-185.4 42-320.4 88.4-443.2 127.3 0 129.3.2 231.7.2 339.6 0 304.1 248.2 471.4 443 523.6 194.7-52.2 443-219.5 443-523.6 0-107.9.2-210.3.2-339.6C821.3 92.9 686.2 46.5 500.9 4.5zm-26.1 271.1h52.1c5.8 0 10.3 4.7 10.1 10.4l-11.6 313.8c-.1 2.8-2.5 5.2-5.4 5.2h-38.2c-2.9 0-5.3-2.3-5.4-5.2L464.8 286c-.2-5.8 4.3-10.4 10-10.4zm26.1 448.3c-20.2 0-36.5-16.3-36.5-36.5s16.3-36.5 36.5-36.5 36.5 16.3 36.5 36.5-16.4 36.5-36.5 36.5z' fill-rule='evenodd' clip-rule='evenodd' fill='%23020202'/%3E%3C/svg%3E")}.weui-icon-success{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1.177-7.86l-2.765-2.767L7 12.431l3.119 3.121a1 1 0 001.414 0l5.952-5.95-1.062-1.062-5.6 5.6z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1.177-7.86l-2.765-2.767L7 12.431l3.119 3.121a1 1 0 001.414 0l5.952-5.95-1.062-1.062-5.6 5.6z'/%3E%3C/svg%3E")}.weui-icon-success-circle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-1.2a8.8 8.8 0 100-17.6 8.8 8.8 0 000 17.6zm-1.172-6.242l5.809-5.808.848.849-5.95 5.95a1 1 0 01-1.414 0L7 12.426l.849-.849 2.98 2.98z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-1.2a8.8 8.8 0 100-17.6 8.8 8.8 0 000 17.6zm-1.172-6.242l5.809-5.808.848.849-5.95 5.95a1 1 0 01-1.414 0L7 12.426l.849-.849 2.98 2.98z'/%3E%3C/svg%3E")}.weui-icon-success-no-circle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.657 18.435L3 12.778l1.414-1.414 4.95 4.95L20.678 5l1.414 1.414-12.02 12.021a1 1 0 01-1.415 0z' fill-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.657 18.435L3 12.778l1.414-1.414 4.95 4.95L20.678 5l1.414 1.414-12.02 12.021a1 1 0 01-1.415 0z' fill-rule='evenodd'/%3E%3C/svg%3E")}.weui-icon-waiting{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.75 11.38V6h-1.5v6l4.243 4.243 1.06-1.06-3.803-3.804zM12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10z' fill-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.75 11.38V6h-1.5v6l4.243 4.243 1.06-1.06-3.803-3.804zM12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10z' fill-rule='evenodd'/%3E%3C/svg%3E")}.weui-icon-waiting-circle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.6 11.503l3.891 3.891-.848.849L11.4 12V6h1.2v5.503zM12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-1.2a8.8 8.8 0 100-17.6 8.8 8.8 0 000 17.6z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.6 11.503l3.891 3.891-.848.849L11.4 12V6h1.2v5.503zM12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-1.2a8.8 8.8 0 100-17.6 8.8 8.8 0 000 17.6z'/%3E%3C/svg%3E")}.weui-icon-warn{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-.763-15.864l.11 7.596h1.305l.11-7.596h-1.525zm.759 10.967c.512 0 .902-.383.902-.882 0-.5-.39-.882-.902-.882a.878.878 0 00-.896.882c0 .499.396.882.896.882z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-.763-15.864l.11 7.596h1.305l.11-7.596h-1.525zm.759 10.967c.512 0 .902-.383.902-.882 0-.5-.39-.882-.902-.882a.878.878 0 00-.896.882c0 .499.396.882.896.882z'/%3E%3C/svg%3E")}.weui-icon-outlined-warn{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2 12c0 5.523 4.477 10 10 10s10-4.477 10-10S17.523 2 12 2 2 6.477 2 12zm18.8 0a8.8 8.8 0 11-17.6 0 8.8 8.8 0 0117.6 0zm-8.14-5.569l-.089 7.06H11.43l-.088-7.06h1.318zm-1.495 9.807c0 .469.366.835.835.835a.82.82 0 00.835-.835.817.817 0 00-.835-.835.821.821 0 00-.835.835z' fill='%23000'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2 12c0 5.523 4.477 10 10 10s10-4.477 10-10S17.523 2 12 2 2 6.477 2 12zm18.8 0a8.8 8.8 0 11-17.6 0 8.8 8.8 0 0117.6 0zm-8.14-5.569l-.089 7.06H11.43l-.088-7.06h1.318zm-1.495 9.807c0 .469.366.835.835.835a.82.82 0 00.835-.835.817.817 0 00-.835-.835.821.821 0 00-.835.835z' fill='%23000'/%3E%3C/svg%3E")}.weui-icon-info-circle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-1.2a8.8 8.8 0 100-17.6 8.8 8.8 0 000 17.6zM11.4 10h1.2v7h-1.2v-7zm.6-1a1 1 0 110-2 1 1 0 010 2z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-1.2a8.8 8.8 0 100-17.6 8.8 8.8 0 000 17.6zM11.4 10h1.2v7h-1.2v-7zm.6-1a1 1 0 110-2 1 1 0 010 2z'/%3E%3C/svg%3E")}.weui-icon-cancel{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill-rule='evenodd'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-1.2a8.8 8.8 0 100-17.6 8.8 8.8 0 000 17.6z' fill-rule='nonzero'/%3E%3Cpath d='M12.849 12l3.11 3.111-.848.849L12 12.849l-3.111 3.11-.849-.848L11.151 12l-3.11-3.111.848-.849L12 11.151l3.111-3.11.849.848L12.849 12z'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill-rule='evenodd'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-1.2a8.8 8.8 0 100-17.6 8.8 8.8 0 000 17.6z' fill-rule='nonzero'/%3E%3Cpath d='M12.849 12l3.11 3.111-.848.849L12 12.849l-3.111 3.11-.849-.848L11.151 12l-3.11-3.111.848-.849L12 11.151l3.111-3.11.849.848L12.849 12z'/%3E%3C/g%3E%3C/svg%3E")}.weui-icon-search{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16.31 15.561l4.114 4.115-.848.848-4.123-4.123a7 7 0 11.857-.84zM16.8 11a5.8 5.8 0 10-11.6 0 5.8 5.8 0 0011.6 0z' fill-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16.31 15.561l4.114 4.115-.848.848-4.123-4.123a7 7 0 11.857-.84zM16.8 11a5.8 5.8 0 10-11.6 0 5.8 5.8 0 0011.6 0z' fill-rule='evenodd'/%3E%3C/svg%3E")}.weui-icon-clear{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.06 12l3.006-3.005-1.06-1.06L12 10.938 8.995 7.934l-1.06 1.06L10.938 12l-3.005 3.005 1.06 1.06L12 13.062l3.005 3.005 1.06-1.06L13.062 12zM12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.06 12l3.006-3.005-1.06-1.06L12 10.938 8.995 7.934l-1.06 1.06L10.938 12l-3.005 3.005 1.06 1.06L12 13.062l3.005 3.005 1.06-1.06L13.062 12zM12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10z'/%3E%3C/svg%3E")}.weui-icon-back{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm1.999-6.563L10.68 12 14 8.562 12.953 7.5 9.29 11.277a1.045 1.045 0 000 1.446l3.663 3.777L14 15.437z' fill-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm1.999-6.563L10.68 12 14 8.562 12.953 7.5 9.29 11.277a1.045 1.045 0 000 1.446l3.663 3.777L14 15.437z' fill-rule='evenodd'/%3E%3C/svg%3E")}.weui-icon-delete{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.774 6.4l.812 13.648a.8.8 0 00.798.752h7.232a.8.8 0 00.798-.752L17.226 6.4H6.774zm11.655 0l-.817 13.719A2 2 0 0115.616 22H8.384a2 2 0 01-1.996-1.881L5.571 6.4H3.5v-.7a.5.5 0 01.5-.5h16a.5.5 0 01.5.5v.7h-2.071zM14 3a.5.5 0 01.5.5v.7h-5v-.7A.5.5 0 0110 3h4zM9.5 9h1.2l.5 9H10l-.5-9zm3.8 0h1.2l-.5 9h-1.2l.5-9z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.774 6.4l.812 13.648a.8.8 0 00.798.752h7.232a.8.8 0 00.798-.752L17.226 6.4H6.774zm11.655 0l-.817 13.719A2 2 0 0115.616 22H8.384a2 2 0 01-1.996-1.881L5.571 6.4H3.5v-.7a.5.5 0 01.5-.5h16a.5.5 0 01.5.5v.7h-2.071zM14 3a.5.5 0 01.5.5v.7h-5v-.7A.5.5 0 0110 3h4zM9.5 9h1.2l.5 9H10l-.5-9zm3.8 0h1.2l-.5 9h-1.2l.5-9z'/%3E%3C/svg%3E")}.weui-icon-success-no-circle-thin{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.864 16.617l-5.303-5.303-1.061 1.06 5.657 5.657a1 1 0 001.414 0L21.238 6.364l-1.06-1.06L8.864 16.616z' fill-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.864 16.617l-5.303-5.303-1.061 1.06 5.657 5.657a1 1 0 001.414 0L21.238 6.364l-1.06-1.06L8.864 16.616z' fill-rule='evenodd'/%3E%3C/svg%3E")}.weui-icon-arrow{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.454 6.58l1.06-1.06 5.78 5.779a.996.996 0 010 1.413l-5.78 5.779-1.06-1.061 5.425-5.425-5.425-5.424z' fill='%23B2B2B2' fill-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.454 6.58l1.06-1.06 5.78 5.779a.996.996 0 010 1.413l-5.78 5.779-1.06-1.061 5.425-5.425-5.425-5.424z' fill='%23B2B2B2' fill-rule='evenodd'/%3E%3C/svg%3E")}.weui-icon-arrow-bold{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg height='24' width='12' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.157 12.711L4.5 18.368l-1.414-1.414 4.95-4.95-4.95-4.95L4.5 5.64l5.657 5.657a1 1 0 010 1.414z' fill-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg height='24' width='12' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.157 12.711L4.5 18.368l-1.414-1.414 4.95-4.95-4.95-4.95L4.5 5.64l5.657 5.657a1 1 0 010 1.414z' fill-rule='evenodd'/%3E%3C/svg%3E")}.weui-icon-back-arrow{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3.343 12l7.071 7.071L9 20.485l-7.778-7.778a1 1 0 010-1.414L9 3.515l1.414 1.414L3.344 12z' fill-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3.343 12l7.071 7.071L9 20.485l-7.778-7.778a1 1 0 010-1.414L9 3.515l1.414 1.414L3.344 12z' fill-rule='evenodd'/%3E%3C/svg%3E")}.weui-icon-back-arrow-thin{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 010-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z' fill-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 010-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z' fill-rule='evenodd'/%3E%3C/svg%3E")}.weui-icon-close{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M12.25 10.693L6.057 4.5 5 5.557l6.193 6.193L5 17.943 6.057 19l6.193-6.193L18.443 19l1.057-1.057-6.193-6.193L19.5 5.557 18.443 4.5l-6.193 6.193z' fill='%23000'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M12.25 10.693L6.057 4.5 5 5.557l6.193 6.193L5 17.943 6.057 19l6.193-6.193L18.443 19l1.057-1.057-6.193-6.193L19.5 5.557 18.443 4.5l-6.193 6.193z' fill='%23000'/%3E%3C/svg%3E")}.weui-icon-close-thin{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.25 10.693L6.057 4.5 5 5.557l6.193 6.193L5 17.943 6.057 19l6.193-6.193L18.443 19l1.057-1.057-6.193-6.193L19.5 5.557 18.443 4.5z' fill-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.25 10.693L6.057 4.5 5 5.557l6.193 6.193L5 17.943 6.057 19l6.193-6.193L18.443 19l1.057-1.057-6.193-6.193L19.5 5.557 18.443 4.5z' fill-rule='evenodd'/%3E%3C/svg%3E")}.weui-icon-back-circle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-1.2a8.8 8.8 0 100-17.6 8.8 8.8 0 000 17.6zm1.999-5.363L12.953 16.5 9.29 12.723a1.045 1.045 0 010-1.446L12.953 7.5 14 8.563 10.68 12 14 15.438z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-1.2a8.8 8.8 0 100-17.6 8.8 8.8 0 000 17.6zm1.999-5.363L12.953 16.5 9.29 12.723a1.045 1.045 0 010-1.446L12.953 7.5 14 8.563 10.68 12 14 15.438z'/%3E%3C/svg%3E")}.weui-icon-success{color:var(--weui-BRAND)}.weui-icon-waiting{color:var(--weui-BLUE)}.weui-icon-warn{color:var(--weui-RED)}.weui-icon-info{color:var(--weui-BLUE)}.weui-icon-success-circle,.weui-icon-success-no-circle,.weui-icon-success-no-circle-thin{color:var(--weui-BRAND)}.weui-icon-waiting-circle{color:var(--weui-BLUE)}.weui-icon-circle{color:var(--weui-FG-2)}.weui-icon-download{color:var(--weui-BRAND)}.weui-icon-info-circle{color:var(--weui-FG-2)}.weui-icon-safe-success{color:var(--weui-BRAND)}.weui-icon-safe-warn{color:var(--weui-YELLOW)}.weui-icon-cancel{color:var(--weui-RED)}.weui-icon-search{color:var(--weui-FG-1)}.weui-icon-clear{color:var(--weui-FG-2)}.weui-icon-clear:active{color:var(--weui-FG-1)}.weui-icon-delete.weui-icon_gallery-delete{color:var(--weui-WHITE)}.weui-icon-arrow-bold.weui-icon-arrow,.weui-icon-arrow-bold.weui-icon-arrow-bold,.weui-icon-arrow-bold.weui-icon-back-arrow,.weui-icon-arrow-bold.weui-icon-back-arrow-thin,.weui-icon-arrow.weui-icon-arrow,.weui-icon-arrow.weui-icon-arrow-bold,.weui-icon-arrow.weui-icon-back-arrow,.weui-icon-arrow.weui-icon-back-arrow-thin,.weui-icon-back-arrow-thin.weui-icon-arrow,.weui-icon-back-arrow-thin.weui-icon-arrow-bold,.weui-icon-back-arrow-thin.weui-icon-back-arrow,.weui-icon-back-arrow-thin.weui-icon-back-arrow-thin,.weui-icon-back-arrow.weui-icon-arrow,.weui-icon-back-arrow.weui-icon-arrow-bold,.weui-icon-back-arrow.weui-icon-back-arrow,.weui-icon-back-arrow.weui-icon-back-arrow-thin{width:1.2em}.weui-icon-arrow,.weui-icon-arrow-bold{color:var(--weui-FG-2)}.weui-icon-back,.weui-icon-back-arrow,.weui-icon-back-arrow-thin,.weui-icon-back-circle{color:var(--weui-FG-0)}.weui-icon_msg.weui-icon_msg{width:6.4em;height:6.4em}.weui-icon_msg.weui-icon_msg.weui-icon-warn{color:var(--weui-RED)}.weui-icon_msg.weui-icon_msg.weui-icon-info-circle{color:var(--weui-BLUE)}.weui-icon_msg-primary.weui-icon_msg-primary{width:6.4em;height:6.4em}.weui-icon_msg-primary.weui-icon_msg-primary.weui-icon-warn{color:var(--weui-YELLOW)}.weui-flex{display:flex}.weui-flex__item{flex:1}.weui-btn{position:relative;display:block;width:184px;margin-left:auto;margin-right:auto;padding:12px 24px;box-sizing:border-box;font-weight:500;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;border-radius:8px;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:none;user-select:none}.weui-btn:active:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--weui-BTN-ACTIVE-MASK);border-radius:8px}.weui-btn:active.weui-btn_disabled:before,.weui-btn:active.weui-btn_loading:before,.weui-btn:active[disabled]:before{display:none}.weui-btn_block{width:auto}.weui-btn_inline{display:inline-block}.weui-btn_default{background-color:var(--weui-FG-5)}.weui-btn_default,.weui-btn_default:not(.weui-btn_disabled):visited{color:var(--weui-FG-0)}.weui-btn_primary{background-color:var(--weui-BRAND)}.weui-btn_primary:not(.weui-btn_disabled):visited{color:#fff}.weui-btn_warn{background-color:var(--weui-FG-5)}.weui-btn_warn,.weui-btn_warn:not(.weui-btn_disabled):visited{color:var(--weui-RED)}.weui-btn_overlay{background-color:#fff}.weui-btn_overlay,.weui-btn_overlay:not(.weui-btn_disabled):visited{color:var(--weui-BRAND)}.weui-btn[disabled],.weui-btn_disabled{color:var(--weui-FG-4);background-color:var(--weui-BG-1)}.weui-btn_loading .weui-loading{margin:-.2em 8px 0 0}.weui-btn_loading .weui-mask-loading{margin:-.2em 8px 0 0;color:currentColor}.weui-btn_loading .weui-primary-loading{margin:-.2em 8px 0 0;vertical-align:middle;color:currentColor}.weui-btn_loading .weui-primary-loading:before{content:""}.weui-btn_loading.weui-btn_primary{color:var(--weui-WHITE)}.weui-btn_cell{position:relative;display:block;margin-left:auto;margin-right:auto;box-sizing:border-box;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;padding:16px;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden;background-color:var(--weui-BG-5)}.weui-btn_cell+.weui-btn_cell{margin-top:16px}.weui-btn_cell:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-btn_cell__icon{display:inline-block;vertical-align:middle;width:24px;height:24px;margin:-.2em .34em 0 0}.weui-btn_cell-default{color:var(--weui-FG-0)}.weui-btn_cell-primary{color:var(--weui-LINK)}.weui-btn_cell-warn{color:var(--weui-RED)}.weui-bottom-fixed-opr-page{height:100%;display:flex;flex-direction:column}.weui-bottom-fixed-opr-page__content{min-height:0;flex:1;padding-bottom:80px;box-sizing:border-box;overflow-y:auto;-webkit-overflow-scrolling:touch}.weui-bottom-fixed-opr-page__tool{padding:16px calc(32px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(32px + env(safe-area-inset-left));background:#fff;position:relative;z-index:50}.weui-bottom-fixed-opr-page__tool:before{content:"";height:80px;background:linear-gradient(0deg,#fff,hsla(0,0%,100%,0));position:absolute;bottom:calc(100% - 1px);left:0;right:0;transform:translateZ(0);pointer-events:none}.wx-root[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool,body[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool{background:#191919}@media (prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool,body:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool{background:#191919}}.wx-root[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool:before,body[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool:before{background:linear-gradient(0deg,#191919,rgba(25,25,25,0))}@media (prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool:before,body:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool:before{background:linear-gradient(0deg,#191919,rgba(25,25,25,0))}}.weui-bottom-fixed-opr-page__tips{margin-bottom:24px;padding:0 32px;text-align:center}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr{display:flex;align-items:center;justify-content:center}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn{width:184px;padding-left:16px;padding-right:16px}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2),.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn{margin:0 8px;width:136px}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:first-child,.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):first-child{margin-left:0}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:last-child,.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):last-child{margin-right:0}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr{flex-direction:column}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2),.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn{width:184px;margin:16px 0 0}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:first-child,.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):first-child{margin-top:0}.weui-bottom-fixed-opr-page.weui-form{padding-top:0}.weui-bottom-fixed-opr-page.weui-form .weui-form__bd{padding-top:calc(56px + env(safe-area-inset-top))}.weui-bottom-fixed-opr-page.weui-form .weui-form__ft{padding-bottom:0}.weui-bottom-fixed-opr-page.weui-form .weui-form__control-area{margin-bottom:0}.weui-bottom-fixed-opr-page.weui-half-screen-dialog{padding:0}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__bd,.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__ft,.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__hd{padding-left:calc(24px + env(safe-area-inset-left));padding-right:calc(24px + env(safe-area-inset-right))}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__bd{padding-bottom:80px}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding-bottom:calc(64px + env(safe-area-inset-bottom))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog{padding:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__hd{padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__bd{padding-bottom:0;display:flex;flex-direction:column}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr-page{flex:1;min-height:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr-page__content{padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr{padding:16px 0 calc(64px + env(safe-area-inset-bottom))}button.weui-btn,input.weui-btn{border-width:0;outline:0;-webkit-appearance:none}button.weui-btn:focus,input.weui-btn:focus{outline:0}button.weui-btn_inline,button.weui-btn_mini,input.weui-btn_inline,input.weui-btn_mini{width:auto}.weui-btn_medium{font-size:14px;padding:10px 24px;line-height:calc(var(--weui-BTN-HEIGHT-MEDIUM)/14 - 1.42857)}.weui-btn_mini{padding:6px 12px;border-radius:6px}.weui-btn_mini,.weui-btn_xmini{display:inline-block;width:auto;line-height:1.42857;font-size:14px}.weui-btn_xmini{padding:4px 12px;font-weight:500;border-radius:4px}.weui-btn+.weui-btn{margin-top:16px}.weui-btn.weui-btn_mini+.weui-btn.weui-btn_mini,.weui-btn.weui-btn_xmini+.weui-btn.weui-btn_xmini{margin-top:auto}.weui-btn.weui-btn_inline+.weui-btn.weui-btn_inline{margin-left:16px}.weui-btn-area{margin:48px 16px 8px}.weui-btn-area_inline{display:flex}.weui-btn-area_inline .weui-btn{margin-top:auto;margin-right:16px;width:100%;flex:1}.weui-btn-area_inline .weui-btn:last-child{margin-right:0}.weui-btn_reset{font-size:inherit}.weui-btn_icon,.weui-btn_reset{background:transparent;border:0;padding:0;outline:0}.weui-btn_icon{font-size:0}.weui-btn_icon:active [class*=weui-icon-]{color:var(--weui-FG-1)}.wx-root,body{--weui-BG-0:#ededed;--weui-BG-1:#f7f7f7;--weui-BG-2:#fff;--weui-BG-3:#f7f7f7;--weui-BG-4:#4c4c4c;--weui-BG-5:#fff;--weui-BLUE-100:#10aeff;--weui-BLUE-120:#3fbeff;--weui-BLUE-170:#b7e6ff;--weui-BLUE-80:#0c8bcc;--weui-BLUE-90:#0e9ce6;--weui-BLUE-BG-100:#48a6e2;--weui-BLUE-BG-110:#5aafe4;--weui-BLUE-BG-130:#7fc0ea;--weui-BLUE-BG-90:#4095cb;--weui-BRAND-100:#07c160;--weui-BRAND-120:#38cd7f;--weui-BRAND-170:#b4ecce;--weui-BRAND-80:#059a4c;--weui-BRAND-90:#06ae56;--weui-BRAND-BG-100:#2aae67;--weui-BRAND-BG-110:#3eb575;--weui-BRAND-BG-130:#69c694;--weui-BRAND-BG-90:#259c5c;--weui-FG-0:rgba(0,0,0,0.9);--weui-FG-0_5:rgba(0,0,0,0.9);--weui-FG-1:rgba(0,0,0,0.55);--weui-FG-2:rgba(0,0,0,0.3);--weui-FG-3:rgba(0,0,0,0.1);--weui-FG-4:rgba(0,0,0,0.15);--weui-GLYPH-0:rgba(0,0,0,0.9);--weui-GLYPH-1:rgba(0,0,0,0.55);--weui-GLYPH-2:rgba(0,0,0,0.3);--weui-GLYPH-WHITE-0:hsla(0,0%,100%,0.8);--weui-GLYPH-WHITE-1:hsla(0,0%,100%,0.5);--weui-GLYPH-WHITE-2:hsla(0,0%,100%,0.3);--weui-GLYPH-WHITE-3:#fff;--weui-GREEN-100:#91d300;--weui-GREEN-120:#a7db33;--weui-GREEN-170:#def1b3;--weui-GREEN-80:#74a800;--weui-GREEN-90:#82bd00;--weui-GREEN-BG-100:#96be40;--weui-GREEN-BG-110:#a0c452;--weui-GREEN-BG-130:#b5d179;--weui-GREEN-BG-90:#86aa39;--weui-INDIGO-100:#1485ee;--weui-INDIGO-120:#439df1;--weui-INDIGO-170:#b8daf9;--weui-INDIGO-80:#106abe;--weui-INDIGO-90:#1277d6;--weui-INDIGO-BG-100:#2b77bf;--weui-INDIGO-BG-110:#3f84c5;--weui-INDIGO-BG-130:#6ba0d2;--weui-INDIGO-BG-90:#266aab;--weui-LIGHTGREEN-100:#95ec69;--weui-LIGHTGREEN-120:#aaef87;--weui-LIGHTGREEN-170:#def9d1;--weui-LIGHTGREEN-80:#77bc54;--weui-LIGHTGREEN-90:#85d35e;--weui-LIGHTGREEN-BG-100:#72cf60;--weui-LIGHTGREEN-BG-110:#80d370;--weui-LIGHTGREEN-BG-130:#9cdd90;--weui-LIGHTGREEN-BG-90:#66b956;--weui-LINK-100:#576b95;--weui-LINK-120:#7888aa;--weui-LINK-170:#ccd2de;--weui-LINK-80:#455577;--weui-LINK-90:#4e6085;--weui-LINKFINDER-100:#002666;--weui-MATERIAL-ATTACHMENTCOLUMN:hsla(0,0%,96.1%,0.95);--weui-MATERIAL-NAVIGATIONBAR:hsla(0,0%,92.9%,0.94);--weui-MATERIAL-REGULAR:hsla(0,0%,96.9%,0.3);--weui-MATERIAL-THICK:hsla(0,0%,96.9%,0.8);--weui-MATERIAL-THIN:hsla(0,0%,100%,0.2);--weui-MATERIAL-TOOLBAR:hsla(0,0%,96.5%,0.82);--weui-ORANGE-100:#fa9d3b;--weui-ORANGE-120:#fbb062;--weui-ORANGE-170:#fde1c3;--weui-ORANGE-80:#c87d2f;--weui-ORANGE-90:#e08c34;--weui-ORANGE-BG-100:#ea7800;--weui-ORANGE-BG-110:#ec8519;--weui-ORANGE-BG-130:#f0a04d;--weui-ORANGE-BG-90:#d26b00;--weui-ORANGERED-100:#ff6146;--weui-OVERLAY:rgba(0,0,0,0.5);--weui-OVERLAY-WHITE:hsla(0,0%,94.9%,0.8);--weui-PURPLE-100:#6467f0;--weui-PURPLE-120:#8385f3;--weui-PURPLE-170:#d0d1fa;--weui-PURPLE-80:#5052c0;--weui-PURPLE-90:#595cd7;--weui-PURPLE-BG-100:#6769ba;--weui-PURPLE-BG-110:#7678c1;--weui-PURPLE-BG-130:#9496ce;--weui-PURPLE-BG-90:#5c5ea7;--weui-RED-100:#fa5151;--weui-RED-120:#fb7373;--weui-RED-170:#fdcaca;--weui-RED-80:#c84040;--weui-RED-90:#e14949;--weui-RED-BG-100:#cf5148;--weui-RED-BG-110:#d3625a;--weui-RED-BG-130:#dd847e;--weui-RED-BG-90:#b94840;--weui-SECONDARY-BG:rgba(0,0,0,0.05);--weui-SEPARATOR-0:rgba(0,0,0,0.1);--weui-SEPARATOR-1:rgba(0,0,0,0.15);--weui-STATELAYER-HOVERED:rgba(0,0,0,0.02);--weui-STATELAYER-PRESSED:rgba(0,0,0,0.1);--weui-STATELAYER-PRESSEDSTRENGTHENED:rgba(0,0,0,0.2);--weui-YELLOW-100:#ffc300;--weui-YELLOW-120:#ffcf33;--weui-YELLOW-170:#ffecb2;--weui-YELLOW-80:#cc9c00;--weui-YELLOW-90:#e6af00;--weui-YELLOW-BG-100:#efb600;--weui-YELLOW-BG-110:#f0bd19;--weui-YELLOW-BG-130:#f3cc4d;--weui-YELLOW-BG-90:#d7a400;--weui-FG-HALF:rgba(0,0,0,0.9);--weui-RED:#fa5151;--weui-ORANGERED:#ff6146;--weui-ORANGE:#fa9d3b;--weui-YELLOW:#ffc300;--weui-GREEN:#91d300;--weui-LIGHTGREEN:#95ec69;--weui-TEXTGREEN:#06ae56;--weui-BRAND:#07c160;--weui-BLUE:#10aeff;--weui-INDIGO:#1485ee;--weui-PURPLE:#6467f0;--weui-LINK:#576b95;--weui-TAG-TEXT-ORANGE:#fa9d3b;--weui-TAG-TEXT-GREEN:#06ae56;--weui-TAG-TEXT-BLUE:#10aeff;--weui-REDORANGE:#ff6146;--weui-TAG-TEXT-BLACK:rgba(0,0,0,0.5);--weui-TAG-BACKGROUND-BLACK:rgba(0,0,0,0.05);--weui-WHITE:#fff;--weui-BG:#fff;--weui-FG:#000;--weui-FG-5:rgba(0,0,0,0.05);--weui-TAG-BACKGROUND-ORANGE:rgba(250,157,59,0.1);--weui-TAG-BACKGROUND-GREEN:rgba(6,174,86,0.1);--weui-TAG-TEXT-RED:rgba(250,81,81,0.6);--weui-TAG-BACKGROUND-RED:rgba(250,81,81,0.1);--weui-TAG-BACKGROUND-BLUE:rgba(16,174,255,0.1)}@media (prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0:#111;--weui-BG-1:#1e1e1e;--weui-BG-2:#191919;--weui-BG-3:#202020;--weui-BG-4:#404040;--weui-BG-5:#2c2c2c;--weui-BLUE-100:#10aeff;--weui-BLUE-120:#0c8bcc;--weui-BLUE-170:#04344d;--weui-BLUE-80:#3fbeff;--weui-BLUE-90:#28b6ff;--weui-BLUE-BG-100:#48a6e2;--weui-BLUE-BG-110:#4095cb;--weui-BLUE-BG-130:#32749e;--weui-BLUE-BG-90:#5aafe4;--weui-BRAND-100:#07c160;--weui-BRAND-120:#059a4c;--weui-BRAND-170:#023a1c;--weui-BRAND-80:#38cd7f;--weui-BRAND-90:#20c770;--weui-BRAND-BG-100:#2aae67;--weui-BRAND-BG-110:#259c5c;--weui-BRAND-BG-130:#1d7a48;--weui-BRAND-BG-90:#3eb575;--weui-FG-0:hsla(0,0%,100%,0.8);--weui-FG-0_5:hsla(0,0%,100%,0.6);--weui-FG-1:hsla(0,0%,100%,0.5);--weui-FG-2:hsla(0,0%,100%,0.3);--weui-FG-3:hsla(0,0%,100%,0.1);--weui-FG-4:hsla(0,0%,100%,0.15);--weui-GLYPH-0:hsla(0,0%,100%,0.8);--weui-GLYPH-1:hsla(0,0%,100%,0.5);--weui-GLYPH-2:hsla(0,0%,100%,0.3);--weui-GLYPH-WHITE-0:hsla(0,0%,100%,0.8);--weui-GLYPH-WHITE-1:hsla(0,0%,100%,0.5);--weui-GLYPH-WHITE-2:hsla(0,0%,100%,0.3);--weui-GLYPH-WHITE-3:#fff;--weui-GREEN-100:#74a800;--weui-GREEN-120:#5c8600;--weui-GREEN-170:#233200;--weui-GREEN-80:#8fb933;--weui-GREEN-90:#82b01a;--weui-GREEN-BG-100:#789833;--weui-GREEN-BG-110:#6b882d;--weui-GREEN-BG-130:#65802b;--weui-GREEN-BG-90:#85a247;--weui-INDIGO-100:#1196ff;--weui-INDIGO-120:#0d78cc;--weui-INDIGO-170:#052d4d;--weui-INDIGO-80:#40abff;--weui-INDIGO-90:#28a0ff;--weui-INDIGO-BG-100:#0d78cc;--weui-INDIGO-BG-110:#0b6bb7;--weui-INDIGO-BG-130:#09548f;--weui-INDIGO-BG-90:#2585d1;--weui-LIGHTGREEN-100:#3eb575;--weui-LIGHTGREEN-120:#31905d;--weui-LIGHTGREEN-170:#123522;--weui-LIGHTGREEN-80:#64c390;--weui-LIGHTGREEN-90:#51bc83;--weui-LIGHTGREEN-BG-100:#31905d;--weui-LIGHTGREEN-BG-110:#2c8153;--weui-LIGHTGREEN-BG-130:#226541;--weui-LIGHTGREEN-BG-90:#31905d;--weui-LINK-100:#7d90a9;--weui-LINK-120:#647387;--weui-LINK-170:#252a32;--weui-LINK-80:#97a6ba;--weui-LINK-90:#899ab1;--weui-LINKFINDER-100:#dee9ff;--weui-MATERIAL-ATTACHMENTCOLUMN:rgba(32,32,32,0.93);--weui-MATERIAL-NAVIGATIONBAR:rgba(18,18,18,0.9);--weui-MATERIAL-REGULAR:rgba(37,37,37,0.6);--weui-MATERIAL-THICK:rgba(34,34,34,0.9);--weui-MATERIAL-THIN:rgba(95,95,95,0.4);--weui-MATERIAL-TOOLBAR:rgba(35,35,35,0.93);--weui-ORANGE-100:#c87d2f;--weui-ORANGE-120:#a06425;--weui-ORANGE-170:#3b250e;--weui-ORANGE-80:#d39758;--weui-ORANGE-90:#cd8943;--weui-ORANGE-BG-100:#bb6000;--weui-ORANGE-BG-110:#a85600;--weui-ORANGE-BG-130:#824300;--weui-ORANGE-BG-90:#c1701a;--weui-ORANGERED-100:#ff6146;--weui-OVERLAY:rgba(0,0,0,0.8);--weui-OVERLAY-WHITE:hsla(0,0%,94.9%,0.8);--weui-PURPLE-100:#8183ff;--weui-PURPLE-120:#6768cc;--weui-PURPLE-170:#26274c;--weui-PURPLE-80:#9a9bff;--weui-PURPLE-90:#8d8fff;--weui-PURPLE-BG-100:#6768cc;--weui-PURPLE-BG-110:#5c5db7;--weui-PURPLE-BG-130:#48498f;--weui-PURPLE-BG-90:#7677d1;--weui-RED-100:#fa5151;--weui-RED-120:#c84040;--weui-RED-170:#4b1818;--weui-RED-80:#fb7373;--weui-RED-90:#fa6262;--weui-RED-BG-100:#cf5148;--weui-RED-BG-110:#ba4940;--weui-RED-BG-130:#913832;--weui-RED-BG-90:#d3625a;--weui-SECONDARY-BG:hsla(0,0%,100%,0.1);--weui-SEPARATOR-0:hsla(0,0%,100%,0.05);--weui-SEPARATOR-1:hsla(0,0%,100%,0.15);--weui-STATELAYER-HOVERED:rgba(0,0,0,0.02);--weui-STATELAYER-PRESSED:hsla(0,0%,100%,0.1);--weui-STATELAYER-PRESSEDSTRENGTHENED:hsla(0,0%,100%,0.2);--weui-YELLOW-100:#cc9c00;--weui-YELLOW-120:#a37c00;--weui-YELLOW-170:#3d2f00;--weui-YELLOW-80:#d6af33;--weui-YELLOW-90:#d1a519;--weui-YELLOW-BG-100:#bf9100;--weui-YELLOW-BG-110:#ab8200;--weui-YELLOW-BG-130:#866500;--weui-YELLOW-BG-90:#c59c1a;--weui-FG-HALF:hsla(0,0%,100%,0.6);--weui-RED:#fa5151;--weui-ORANGERED:#ff6146;--weui-ORANGE:#c87d2f;--weui-YELLOW:#cc9c00;--weui-GREEN:#74a800;--weui-LIGHTGREEN:#3eb575;--weui-TEXTGREEN:#259c5c;--weui-BRAND:#07c160;--weui-BLUE:#10aeff;--weui-INDIGO:#1196ff;--weui-PURPLE:#8183ff;--weui-LINK:#7d90a9;--weui-REDORANGE:#ff6146;--weui-TAG-TEXT-BLACK:hsla(0,0%,100%,0.5);--weui-TAG-BACKGROUND-BLACK:hsla(0,0%,100%,0.05);--weui-WHITE:hsla(0,0%,100%,0.8);--weui-FG:#fff;--weui-BG:#000;--weui-FG-5:hsla(0,0%,100%,0.1);--weui-TAG-BACKGROUND-ORANGE:rgba(250,157,59,0.1);--weui-TAG-BACKGROUND-GREEN:rgba(6,174,86,0.1);--weui-TAG-TEXT-RED:rgba(250,81,81,0.6);--weui-TAG-BACKGROUND-RED:rgba(250,81,81,0.1);--weui-TAG-BACKGROUND-BLUE:rgba(16,174,255,0.1);--weui-TAG-TEXT-ORANGE:rgba(250,157,59,0.6);--weui-TAG-TEXT-GREEN:rgba(6,174,86,0.6);--weui-TAG-TEXT-BLUE:rgba(16,174,255,0.6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0:#111;--weui-BG-1:#1e1e1e;--weui-BG-2:#191919;--weui-BG-3:#202020;--weui-BG-4:#404040;--weui-BG-5:#2c2c2c;--weui-BLUE-100:#10aeff;--weui-BLUE-120:#0c8bcc;--weui-BLUE-170:#04344d;--weui-BLUE-80:#3fbeff;--weui-BLUE-90:#28b6ff;--weui-BLUE-BG-100:#48a6e2;--weui-BLUE-BG-110:#4095cb;--weui-BLUE-BG-130:#32749e;--weui-BLUE-BG-90:#5aafe4;--weui-BRAND-100:#07c160;--weui-BRAND-120:#059a4c;--weui-BRAND-170:#023a1c;--weui-BRAND-80:#38cd7f;--weui-BRAND-90:#20c770;--weui-BRAND-BG-100:#2aae67;--weui-BRAND-BG-110:#259c5c;--weui-BRAND-BG-130:#1d7a48;--weui-BRAND-BG-90:#3eb575;--weui-FG-0:hsla(0,0%,100%,0.8);--weui-FG-0_5:hsla(0,0%,100%,0.6);--weui-FG-1:hsla(0,0%,100%,0.5);--weui-FG-2:hsla(0,0%,100%,0.3);--weui-FG-3:hsla(0,0%,100%,0.1);--weui-FG-4:hsla(0,0%,100%,0.15);--weui-GLYPH-0:hsla(0,0%,100%,0.8);--weui-GLYPH-1:hsla(0,0%,100%,0.5);--weui-GLYPH-2:hsla(0,0%,100%,0.3);--weui-GLYPH-WHITE-0:hsla(0,0%,100%,0.8);--weui-GLYPH-WHITE-1:hsla(0,0%,100%,0.5);--weui-GLYPH-WHITE-2:hsla(0,0%,100%,0.3);--weui-GLYPH-WHITE-3:#fff;--weui-GREEN-100:#74a800;--weui-GREEN-120:#5c8600;--weui-GREEN-170:#233200;--weui-GREEN-80:#8fb933;--weui-GREEN-90:#82b01a;--weui-GREEN-BG-100:#789833;--weui-GREEN-BG-110:#6b882d;--weui-GREEN-BG-130:#65802b;--weui-GREEN-BG-90:#85a247;--weui-INDIGO-100:#1196ff;--weui-INDIGO-120:#0d78cc;--weui-INDIGO-170:#052d4d;--weui-INDIGO-80:#40abff;--weui-INDIGO-90:#28a0ff;--weui-INDIGO-BG-100:#0d78cc;--weui-INDIGO-BG-110:#0b6bb7;--weui-INDIGO-BG-130:#09548f;--weui-INDIGO-BG-90:#2585d1;--weui-LIGHTGREEN-100:#3eb575;--weui-LIGHTGREEN-120:#31905d;--weui-LIGHTGREEN-170:#123522;--weui-LIGHTGREEN-80:#64c390;--weui-LIGHTGREEN-90:#51bc83;--weui-LIGHTGREEN-BG-100:#31905d;--weui-LIGHTGREEN-BG-110:#2c8153;--weui-LIGHTGREEN-BG-130:#226541;--weui-LIGHTGREEN-BG-90:#31905d;--weui-LINK-100:#7d90a9;--weui-LINK-120:#647387;--weui-LINK-170:#252a32;--weui-LINK-80:#97a6ba;--weui-LINK-90:#899ab1;--weui-LINKFINDER-100:#dee9ff;--weui-MATERIAL-ATTACHMENTCOLUMN:rgba(32,32,32,0.93);--weui-MATERIAL-NAVIGATIONBAR:rgba(18,18,18,0.9);--weui-MATERIAL-REGULAR:rgba(37,37,37,0.6);--weui-MATERIAL-THICK:rgba(34,34,34,0.9);--weui-MATERIAL-THIN:rgba(95,95,95,0.4);--weui-MATERIAL-TOOLBAR:rgba(35,35,35,0.93);--weui-ORANGE-100:#c87d2f;--weui-ORANGE-120:#a06425;--weui-ORANGE-170:#3b250e;--weui-ORANGE-80:#d39758;--weui-ORANGE-90:#cd8943;--weui-ORANGE-BG-100:#bb6000;--weui-ORANGE-BG-110:#a85600;--weui-ORANGE-BG-130:#824300;--weui-ORANGE-BG-90:#c1701a;--weui-ORANGERED-100:#ff6146;--weui-OVERLAY:rgba(0,0,0,0.8);--weui-OVERLAY-WHITE:hsla(0,0%,94.9%,0.8);--weui-PURPLE-100:#8183ff;--weui-PURPLE-120:#6768cc;--weui-PURPLE-170:#26274c;--weui-PURPLE-80:#9a9bff;--weui-PURPLE-90:#8d8fff;--weui-PURPLE-BG-100:#6768cc;--weui-PURPLE-BG-110:#5c5db7;--weui-PURPLE-BG-130:#48498f;--weui-PURPLE-BG-90:#7677d1;--weui-RED-100:#fa5151;--weui-RED-120:#c84040;--weui-RED-170:#4b1818;--weui-RED-80:#fb7373;--weui-RED-90:#fa6262;--weui-RED-BG-100:#cf5148;--weui-RED-BG-110:#ba4940;--weui-RED-BG-130:#913832;--weui-RED-BG-90:#d3625a;--weui-SECONDARY-BG:hsla(0,0%,100%,0.1);--weui-SEPARATOR-0:hsla(0,0%,100%,0.05);--weui-SEPARATOR-1:hsla(0,0%,100%,0.15);--weui-STATELAYER-HOVERED:rgba(0,0,0,0.02);--weui-STATELAYER-PRESSED:hsla(0,0%,100%,0.1);--weui-STATELAYER-PRESSEDSTRENGTHENED:hsla(0,0%,100%,0.2);--weui-YELLOW-100:#cc9c00;--weui-YELLOW-120:#a37c00;--weui-YELLOW-170:#3d2f00;--weui-YELLOW-80:#d6af33;--weui-YELLOW-90:#d1a519;--weui-YELLOW-BG-100:#bf9100;--weui-YELLOW-BG-110:#ab8200;--weui-YELLOW-BG-130:#866500;--weui-YELLOW-BG-90:#c59c1a;--weui-FG-HALF:hsla(0,0%,100%,0.6);--weui-RED:#fa5151;--weui-ORANGERED:#ff6146;--weui-ORANGE:#c87d2f;--weui-YELLOW:#cc9c00;--weui-GREEN:#74a800;--weui-LIGHTGREEN:#3eb575;--weui-TEXTGREEN:#259c5c;--weui-BRAND:#07c160;--weui-BLUE:#10aeff;--weui-INDIGO:#1196ff;--weui-PURPLE:#8183ff;--weui-LINK:#7d90a9;--weui-REDORANGE:#ff6146;--weui-TAG-TEXT-BLACK:hsla(0,0%,100%,0.5);--weui-TAG-BACKGROUND-BLACK:hsla(0,0%,100%,0.05);--weui-WHITE:hsla(0,0%,100%,0.8);--weui-FG:#fff;--weui-BG:#000;--weui-FG-5:hsla(0,0%,100%,0.1);--weui-TAG-BACKGROUND-ORANGE:rgba(250,157,59,0.1);--weui-TAG-BACKGROUND-GREEN:rgba(6,174,86,0.1);--weui-TAG-TEXT-RED:rgba(250,81,81,0.6);--weui-TAG-BACKGROUND-RED:rgba(250,81,81,0.1);--weui-TAG-BACKGROUND-BLUE:rgba(16,174,255,0.1);--weui-TAG-TEXT-ORANGE:rgba(250,157,59,0.6);--weui-TAG-TEXT-GREEN:rgba(6,174,86,0.6);--weui-TAG-TEXT-BLUE:rgba(16,174,255,0.6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0:#ededed;--weui-BG-1:#f7f7f7;--weui-BG-2:#fff;--weui-BG-3:#f7f7f7;--weui-BG-4:#4c4c4c;--weui-BG-5:#fff;--weui-BLUE-100:#007dbb;--weui-BLUE-120:#3fbeff;--weui-BLUE-170:#b7e6ff;--weui-BLUE-80:#0c8bcc;--weui-BLUE-90:#0e9ce6;--weui-BLUE-BG-100:#48a6e2;--weui-BLUE-BG-110:#5aafe4;--weui-BLUE-BG-130:#7fc0ea;--weui-BLUE-BG-90:#4095cb;--weui-BRAND-100:#018942;--weui-BRAND-120:#38cd7f;--weui-BRAND-170:#b4ecce;--weui-BRAND-80:#059a4c;--weui-BRAND-90:#06ae56;--weui-BRAND-BG-100:#2aae67;--weui-BRAND-BG-110:#3eb575;--weui-BRAND-BG-130:#69c694;--weui-BRAND-BG-90:#259c5c;--weui-FG-0:#000;--weui-FG-0_5:#000;--weui-FG-1:rgba(0,0,0,0.6);--weui-FG-2:rgba(0,0,0,0.42);--weui-FG-3:rgba(0,0,0,0.1);--weui-FG-4:rgba(0,0,0,0.15);--weui-GLYPH-0:#000;--weui-GLYPH-1:rgba(0,0,0,0.6);--weui-GLYPH-2:rgba(0,0,0,0.42);--weui-GLYPH-WHITE-0:hsla(0,0%,100%,0.85);--weui-GLYPH-WHITE-1:hsla(0,0%,100%,0.55);--weui-GLYPH-WHITE-2:hsla(0,0%,100%,0.35);--weui-GLYPH-WHITE-3:#fff;--weui-GREEN-100:#4f8400;--weui-GREEN-120:#a7db33;--weui-GREEN-170:#def1b3;--weui-GREEN-80:#74a800;--weui-GREEN-90:#82bd00;--weui-GREEN-BG-100:#96be40;--weui-GREEN-BG-110:#a0c452;--weui-GREEN-BG-130:#b5d179;--weui-GREEN-BG-90:#86aa39;--weui-INDIGO-100:#0075e2;--weui-INDIGO-120:#439df1;--weui-INDIGO-170:#b8daf9;--weui-INDIGO-80:#106abe;--weui-INDIGO-90:#1277d6;--weui-INDIGO-BG-100:#2b77bf;--weui-INDIGO-BG-110:#3f84c5;--weui-INDIGO-BG-130:#6ba0d2;--weui-INDIGO-BG-90:#266aab;--weui-LIGHTGREEN-100:#2e8800;--weui-LIGHTGREEN-120:#aaef87;--weui-LIGHTGREEN-170:#def9d1;--weui-LIGHTGREEN-80:#77bc54;--weui-LIGHTGREEN-90:#85d35e;--weui-LIGHTGREEN-BG-100:#72cf60;--weui-LIGHTGREEN-BG-110:#80d370;--weui-LIGHTGREEN-BG-130:#9cdd90;--weui-LIGHTGREEN-BG-90:#66b956;--weui-LINK-100:#576b95;--weui-LINK-120:#7888aa;--weui-LINK-170:#ccd2de;--weui-LINK-80:#455577;--weui-LINK-90:#4e6085;--weui-LINKFINDER-100:#002666;--weui-MATERIAL-ATTACHMENTCOLUMN:hsla(0,0%,96.1%,0.95);--weui-MATERIAL-NAVIGATIONBAR:hsla(0,0%,92.9%,0.94);--weui-MATERIAL-REGULAR:hsla(0,0%,96.9%,0.3);--weui-MATERIAL-THICK:hsla(0,0%,96.9%,0.8);--weui-MATERIAL-THIN:hsla(0,0%,100%,0.2);--weui-MATERIAL-TOOLBAR:hsla(0,0%,96.5%,0.82);--weui-ORANGE-100:#e17719;--weui-ORANGE-120:#fbb062;--weui-ORANGE-170:#fde1c3;--weui-ORANGE-80:#c87d2f;--weui-ORANGE-90:#e08c34;--weui-ORANGE-BG-100:#ea7800;--weui-ORANGE-BG-110:#ec8519;--weui-ORANGE-BG-130:#f0a04d;--weui-ORANGE-BG-90:#d26b00;--weui-ORANGERED-100:#d14730;--weui-OVERLAY:rgba(0,0,0,0.5);--weui-OVERLAY-WHITE:hsla(0,0%,94.9%,0.8);--weui-PURPLE-100:#6265f1;--weui-PURPLE-120:#8385f3;--weui-PURPLE-170:#d0d1fa;--weui-PURPLE-80:#5052c0;--weui-PURPLE-90:#595cd7;--weui-PURPLE-BG-100:#6769ba;--weui-PURPLE-BG-110:#7678c1;--weui-PURPLE-BG-130:#9496ce;--weui-PURPLE-BG-90:#5c5ea7;--weui-RED-100:#dc3636;--weui-RED-120:#fb7373;--weui-RED-170:#fdcaca;--weui-RED-80:#c84040;--weui-RED-90:#e14949;--weui-RED-BG-100:#cf5148;--weui-RED-BG-110:#d3625a;--weui-RED-BG-130:#dd847e;--weui-RED-BG-90:#b94840;--weui-SECONDARY-BG:rgba(0,0,0,0.1);--weui-SEPARATOR-0:rgba(0,0,0,0.1);--weui-SEPARATOR-1:rgba(0,0,0,0.15);--weui-STATELAYER-HOVERED:rgba(0,0,0,0.02);--weui-STATELAYER-PRESSED:rgba(0,0,0,0.1);--weui-STATELAYER-PRESSEDSTRENGTHENED:rgba(0,0,0,0.2);--weui-YELLOW-100:#bb8e00;--weui-YELLOW-120:#ffcf33;--weui-YELLOW-170:#ffecb2;--weui-YELLOW-80:#cc9c00;--weui-YELLOW-90:#e6af00;--weui-YELLOW-BG-100:#efb600;--weui-YELLOW-BG-110:#f0bd19;--weui-YELLOW-BG-130:#f3cc4d;--weui-YELLOW-BG-90:#d7a400;--weui-FG-HALF:#000;--weui-RED:#dc3636;--weui-ORANGERED:#d14730;--weui-ORANGE:#e17719;--weui-YELLOW:#bb8e00;--weui-GREEN:#4f8400;--weui-LIGHTGREEN:#2e8800;--weui-TEXTGREEN:#06ae56;--weui-BRAND:#018942;--weui-BLUE:#007dbb;--weui-INDIGO:#0075e2;--weui-PURPLE:#6265f1;--weui-LINK:#576b95;--weui-TAG-TEXT-ORANGE:#e17719;--weui-TAG-TEXT-GREEN:#06ae56;--weui-TAG-TEXT-BLUE:#007dbb;--weui-REDORANGE:#d14730;--weui-TAG-TEXT-BLACK:rgba(0,0,0,0.5);--weui-WHITE:#fff;--weui-BG:#fff;--weui-FG:#000;--weui-FG-5:rgba(0,0,0,0.05);--weui-TAG-BACKGROUND-ORANGE:rgba(225,119,25,0.1);--weui-TAG-BACKGROUND-GREEN:rgba(6,174,86,0.1);--weui-TAG-TEXT-RED:rgba(250,81,81,0.6);--weui-TAG-BACKGROUND-RED:rgba(250,81,81,0.1);--weui-TAG-BACKGROUND-BLUE:rgba(0,125,187,0.1);--weui-TAG-BACKGROUND-BLACK:rgba(0,0,0,0.05)}@media (prefers-color-scheme:dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0:#111;--weui-BG-1:#1e1e1e;--weui-BG-2:#191919;--weui-BG-3:#202020;--weui-BG-4:#404040;--weui-BG-5:#2c2c2c;--weui-BLUE-100:#10aeff;--weui-BLUE-120:#0c8bcc;--weui-BLUE-170:#04344d;--weui-BLUE-80:#3fbeff;--weui-BLUE-90:#28b6ff;--weui-BLUE-BG-100:#48a6e2;--weui-BLUE-BG-110:#4095cb;--weui-BLUE-BG-130:#32749e;--weui-BLUE-BG-90:#5aafe4;--weui-BRAND-100:#07c160;--weui-BRAND-120:#059a4c;--weui-BRAND-170:#023a1c;--weui-BRAND-80:#38cd7f;--weui-BRAND-90:#20c770;--weui-BRAND-BG-100:#2aae67;--weui-BRAND-BG-110:#259c5c;--weui-BRAND-BG-130:#1d7a48;--weui-BRAND-BG-90:#3eb575;--weui-FG-0:hsla(0,0%,100%,0.85);--weui-FG-0_5:hsla(0,0%,100%,0.65);--weui-FG-1:hsla(0,0%,100%,0.55);--weui-FG-2:hsla(0,0%,100%,0.35);--weui-FG-3:hsla(0,0%,100%,0.1);--weui-FG-4:hsla(0,0%,100%,0.15);--weui-GLYPH-0:hsla(0,0%,100%,0.85);--weui-GLYPH-1:hsla(0,0%,100%,0.55);--weui-GLYPH-2:hsla(0,0%,100%,0.35);--weui-GLYPH-WHITE-0:hsla(0,0%,100%,0.85);--weui-GLYPH-WHITE-1:hsla(0,0%,100%,0.55);--weui-GLYPH-WHITE-2:hsla(0,0%,100%,0.35);--weui-GLYPH-WHITE-3:#fff;--weui-GREEN-100:#74a800;--weui-GREEN-120:#5c8600;--weui-GREEN-170:#233200;--weui-GREEN-80:#8fb933;--weui-GREEN-90:#82b01a;--weui-GREEN-BG-100:#789833;--weui-GREEN-BG-110:#6b882d;--weui-GREEN-BG-130:#65802b;--weui-GREEN-BG-90:#85a247;--weui-INDIGO-100:#1196ff;--weui-INDIGO-120:#0d78cc;--weui-INDIGO-170:#052d4d;--weui-INDIGO-80:#40abff;--weui-INDIGO-90:#28a0ff;--weui-INDIGO-BG-100:#0d78cc;--weui-INDIGO-BG-110:#0b6bb7;--weui-INDIGO-BG-130:#09548f;--weui-INDIGO-BG-90:#2585d1;--weui-LIGHTGREEN-100:#3eb575;--weui-LIGHTGREEN-120:#31905d;--weui-LIGHTGREEN-170:#123522;--weui-LIGHTGREEN-80:#64c390;--weui-LIGHTGREEN-90:#51bc83;--weui-LIGHTGREEN-BG-100:#31905d;--weui-LIGHTGREEN-BG-110:#2c8153;--weui-LIGHTGREEN-BG-130:#226541;--weui-LIGHTGREEN-BG-90:#31905d;--weui-LINK-100:#7d90a9;--weui-LINK-120:#647387;--weui-LINK-170:#252a32;--weui-LINK-80:#97a6ba;--weui-LINK-90:#899ab1;--weui-LINKFINDER-100:#dee9ff;--weui-MATERIAL-ATTACHMENTCOLUMN:rgba(32,32,32,0.93);--weui-MATERIAL-NAVIGATIONBAR:rgba(18,18,18,0.9);--weui-MATERIAL-REGULAR:rgba(37,37,37,0.6);--weui-MATERIAL-THICK:rgba(34,34,34,0.9);--weui-MATERIAL-THIN:hsla(0,0%,96.1%,0.4);--weui-MATERIAL-TOOLBAR:rgba(35,35,35,0.93);--weui-ORANGE-100:#c87d2f;--weui-ORANGE-120:#a06425;--weui-ORANGE-170:#3b250e;--weui-ORANGE-80:#d39758;--weui-ORANGE-90:#cd8943;--weui-ORANGE-BG-100:#bb6000;--weui-ORANGE-BG-110:#a85600;--weui-ORANGE-BG-130:#824300;--weui-ORANGE-BG-90:#c1701a;--weui-ORANGERED-100:#ff6146;--weui-OVERLAY:rgba(0,0,0,0.8);--weui-OVERLAY-WHITE:hsla(0,0%,94.9%,0.8);--weui-PURPLE-100:#8183ff;--weui-PURPLE-120:#6768cc;--weui-PURPLE-170:#26274c;--weui-PURPLE-80:#9a9bff;--weui-PURPLE-90:#8d8fff;--weui-PURPLE-BG-100:#6768cc;--weui-PURPLE-BG-110:#5c5db7;--weui-PURPLE-BG-130:#48498f;--weui-PURPLE-BG-90:#7677d1;--weui-RED-100:#fa5151;--weui-RED-120:#c84040;--weui-RED-170:#4b1818;--weui-RED-80:#fb7373;--weui-RED-90:#fa6262;--weui-RED-BG-100:#cf5148;--weui-RED-BG-110:#ba4940;--weui-RED-BG-130:#913832;--weui-RED-BG-90:#d3625a;--weui-SECONDARY-BG:hsla(0,0%,100%,0.15);--weui-SEPARATOR-0:hsla(0,0%,100%,0.05);--weui-SEPARATOR-1:hsla(0,0%,100%,0.15);--weui-STATELAYER-HOVERED:rgba(0,0,0,0.02);--weui-STATELAYER-PRESSED:hsla(0,0%,100%,0.1);--weui-STATELAYER-PRESSEDSTRENGTHENED:hsla(0,0%,100%,0.2);--weui-YELLOW-100:#cc9c00;--weui-YELLOW-120:#a37c00;--weui-YELLOW-170:#3d2f00;--weui-YELLOW-80:#d6af33;--weui-YELLOW-90:#d1a519;--weui-YELLOW-BG-100:#bf9100;--weui-YELLOW-BG-110:#ab8200;--weui-YELLOW-BG-130:#866500;--weui-YELLOW-BG-90:#c59c1a;--weui-FG-HALF:hsla(0,0%,100%,0.65);--weui-RED:#fa5151;--weui-ORANGERED:#ff6146;--weui-ORANGE:#c87d2f;--weui-YELLOW:#cc9c00;--weui-GREEN:#74a800;--weui-LIGHTGREEN:#3eb575;--weui-TEXTGREEN:#259c5c;--weui-BRAND:#07c160;--weui-BLUE:#10aeff;--weui-INDIGO:#1196ff;--weui-PURPLE:#8183ff;--weui-LINK:#7d90a9;--weui-REDORANGE:#ff6146;--weui-TAG-BACKGROUND-BLACK:hsla(0,0%,100%,0.05);--weui-FG:#fff;--weui-WHITE:hsla(0,0%,100%,0.8);--weui-FG-5:hsla(0,0%,100%,0.1);--weui-TAG-BACKGROUND-ORANGE:rgba(250,157,59,0.1);--weui-TAG-BACKGROUND-GREEN:rgba(6,174,86,0.1);--weui-TAG-TEXT-RED:rgba(250,81,81,0.6);--weui-TAG-BACKGROUND-RED:rgba(250,81,81,0.1);--weui-TAG-BACKGROUND-BLUE:rgba(16,174,255,0.1);--weui-TAG-TEXT-ORANGE:rgba(250,157,59,0.6);--weui-BG:#000;--weui-TAG-TEXT-GREEN:rgba(6,174,86,0.6);--weui-TAG-TEXT-BLUE:rgba(16,174,255,0.6);--weui-TAG-TEXT-BLACK:hsla(0,0%,100%,0.5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0:#111;--weui-BG-1:#1e1e1e;--weui-BG-2:#191919;--weui-BG-3:#202020;--weui-BG-4:#404040;--weui-BG-5:#2c2c2c;--weui-BLUE-100:#10aeff;--weui-BLUE-120:#0c8bcc;--weui-BLUE-170:#04344d;--weui-BLUE-80:#3fbeff;--weui-BLUE-90:#28b6ff;--weui-BLUE-BG-100:#48a6e2;--weui-BLUE-BG-110:#4095cb;--weui-BLUE-BG-130:#32749e;--weui-BLUE-BG-90:#5aafe4;--weui-BRAND-100:#07c160;--weui-BRAND-120:#059a4c;--weui-BRAND-170:#023a1c;--weui-BRAND-80:#38cd7f;--weui-BRAND-90:#20c770;--weui-BRAND-BG-100:#2aae67;--weui-BRAND-BG-110:#259c5c;--weui-BRAND-BG-130:#1d7a48;--weui-BRAND-BG-90:#3eb575;--weui-FG-0:hsla(0,0%,100%,0.85);--weui-FG-0_5:hsla(0,0%,100%,0.65);--weui-FG-1:hsla(0,0%,100%,0.55);--weui-FG-2:hsla(0,0%,100%,0.35);--weui-FG-3:hsla(0,0%,100%,0.1);--weui-FG-4:hsla(0,0%,100%,0.15);--weui-GLYPH-0:hsla(0,0%,100%,0.85);--weui-GLYPH-1:hsla(0,0%,100%,0.55);--weui-GLYPH-2:hsla(0,0%,100%,0.35);--weui-GLYPH-WHITE-0:hsla(0,0%,100%,0.85);--weui-GLYPH-WHITE-1:hsla(0,0%,100%,0.55);--weui-GLYPH-WHITE-2:hsla(0,0%,100%,0.35);--weui-GLYPH-WHITE-3:#fff;--weui-GREEN-100:#74a800;--weui-GREEN-120:#5c8600;--weui-GREEN-170:#233200;--weui-GREEN-80:#8fb933;--weui-GREEN-90:#82b01a;--weui-GREEN-BG-100:#789833;--weui-GREEN-BG-110:#6b882d;--weui-GREEN-BG-130:#65802b;--weui-GREEN-BG-90:#85a247;--weui-INDIGO-100:#1196ff;--weui-INDIGO-120:#0d78cc;--weui-INDIGO-170:#052d4d;--weui-INDIGO-80:#40abff;--weui-INDIGO-90:#28a0ff;--weui-INDIGO-BG-100:#0d78cc;--weui-INDIGO-BG-110:#0b6bb7;--weui-INDIGO-BG-130:#09548f;--weui-INDIGO-BG-90:#2585d1;--weui-LIGHTGREEN-100:#3eb575;--weui-LIGHTGREEN-120:#31905d;--weui-LIGHTGREEN-170:#123522;--weui-LIGHTGREEN-80:#64c390;--weui-LIGHTGREEN-90:#51bc83;--weui-LIGHTGREEN-BG-100:#31905d;--weui-LIGHTGREEN-BG-110:#2c8153;--weui-LIGHTGREEN-BG-130:#226541;--weui-LIGHTGREEN-BG-90:#31905d;--weui-LINK-100:#7d90a9;--weui-LINK-120:#647387;--weui-LINK-170:#252a32;--weui-LINK-80:#97a6ba;--weui-LINK-90:#899ab1;--weui-LINKFINDER-100:#dee9ff;--weui-MATERIAL-ATTACHMENTCOLUMN:rgba(32,32,32,0.93);--weui-MATERIAL-NAVIGATIONBAR:rgba(18,18,18,0.9);--weui-MATERIAL-REGULAR:rgba(37,37,37,0.6);--weui-MATERIAL-THICK:rgba(34,34,34,0.9);--weui-MATERIAL-THIN:hsla(0,0%,96.1%,0.4);--weui-MATERIAL-TOOLBAR:rgba(35,35,35,0.93);--weui-ORANGE-100:#c87d2f;--weui-ORANGE-120:#a06425;--weui-ORANGE-170:#3b250e;--weui-ORANGE-80:#d39758;--weui-ORANGE-90:#cd8943;--weui-ORANGE-BG-100:#bb6000;--weui-ORANGE-BG-110:#a85600;--weui-ORANGE-BG-130:#824300;--weui-ORANGE-BG-90:#c1701a;--weui-ORANGERED-100:#ff6146;--weui-OVERLAY:rgba(0,0,0,0.8);--weui-OVERLAY-WHITE:hsla(0,0%,94.9%,0.8);--weui-PURPLE-100:#8183ff;--weui-PURPLE-120:#6768cc;--weui-PURPLE-170:#26274c;--weui-PURPLE-80:#9a9bff;--weui-PURPLE-90:#8d8fff;--weui-PURPLE-BG-100:#6768cc;--weui-PURPLE-BG-110:#5c5db7;--weui-PURPLE-BG-130:#48498f;--weui-PURPLE-BG-90:#7677d1;--weui-RED-100:#fa5151;--weui-RED-120:#c84040;--weui-RED-170:#4b1818;--weui-RED-80:#fb7373;--weui-RED-90:#fa6262;--weui-RED-BG-100:#cf5148;--weui-RED-BG-110:#ba4940;--weui-RED-BG-130:#913832;--weui-RED-BG-90:#d3625a;--weui-SECONDARY-BG:hsla(0,0%,100%,0.15);--weui-SEPARATOR-0:hsla(0,0%,100%,0.05);--weui-SEPARATOR-1:hsla(0,0%,100%,0.15);--weui-STATELAYER-HOVERED:rgba(0,0,0,0.02);--weui-STATELAYER-PRESSED:hsla(0,0%,100%,0.1);--weui-STATELAYER-PRESSEDSTRENGTHENED:hsla(0,0%,100%,0.2);--weui-YELLOW-100:#cc9c00;--weui-YELLOW-120:#a37c00;--weui-YELLOW-170:#3d2f00;--weui-YELLOW-80:#d6af33;--weui-YELLOW-90:#d1a519;--weui-YELLOW-BG-100:#bf9100;--weui-YELLOW-BG-110:#ab8200;--weui-YELLOW-BG-130:#866500;--weui-YELLOW-BG-90:#c59c1a;--weui-FG-HALF:hsla(0,0%,100%,0.65);--weui-RED:#fa5151;--weui-ORANGERED:#ff6146;--weui-ORANGE:#c87d2f;--weui-YELLOW:#cc9c00;--weui-GREEN:#74a800;--weui-LIGHTGREEN:#3eb575;--weui-TEXTGREEN:#259c5c;--weui-BRAND:#07c160;--weui-BLUE:#10aeff;--weui-INDIGO:#1196ff;--weui-PURPLE:#8183ff;--weui-LINK:#7d90a9;--weui-REDORANGE:#ff6146;--weui-TAG-BACKGROUND-BLACK:hsla(0,0%,100%,0.05);--weui-FG:#fff;--weui-WHITE:hsla(0,0%,100%,0.8);--weui-FG-5:hsla(0,0%,100%,0.1);--weui-TAG-BACKGROUND-ORANGE:rgba(250,157,59,0.1);--weui-TAG-BACKGROUND-GREEN:rgba(6,174,86,0.1);--weui-TAG-TEXT-RED:rgba(250,81,81,0.6);--weui-TAG-BACKGROUND-RED:rgba(250,81,81,0.1);--weui-TAG-BACKGROUND-BLUE:rgba(16,174,255,0.1);--weui-TAG-TEXT-ORANGE:rgba(250,157,59,0.6);--weui-BG:#000;--weui-TAG-TEXT-GREEN:rgba(6,174,86,0.6);--weui-TAG-TEXT-BLUE:rgba(16,174,255,0.6);--weui-TAG-TEXT-BLACK:hsla(0,0%,100%,0.5)}.weui-flex__item{min-width:0}.weui-flex_align-center{align-items:center}.weui-icon-filled-arrow{-webkit-mask-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M10.157 12.711L4.5 18.368l-1.414-1.414 4.95-4.95-4.95-4.95L4.5 5.64l5.657 5.657a1 1 0 0 1 0 1.414z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M10.157 12.711L4.5 18.368l-1.414-1.414 4.95-4.95-4.95-4.95L4.5 5.64l5.657 5.657a1 1 0 0 1 0 1.414z'/%3E%3C/svg%3E")}.weui-icon-outlined-arrow{-webkit-mask-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M2.454 6.58l1.06-1.06 5.78 5.779a.996.996 0 0 1 0 1.413l-5.78 5.779-1.06-1.061 5.425-5.425-5.425-5.424z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M2.454 6.58l1.06-1.06 5.78 5.779a.996.996 0 0 1 0 1.413l-5.78 5.779-1.06-1.061 5.425-5.425-5.425-5.424z'/%3E%3C/svg%3E")}.weui-icon-medium-channels{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2.69 5.047c.43-1.043 1.103-1.306 1.59-1.343 1.078-.069 2.79.644 6.622 7.004.28.467.713 1.204 1.095 1.858.381-.654.814-1.391 1.095-1.858 3.83-6.36 5.544-7.073 6.62-7.004.489.037 1.162.3 1.592 1.343 1.1 2.662-.598 10.758-2.31 13.768-.46.811-1.118 1.493-2.101 1.487-1.931 0-3.851-2.889-4.896-4.77-1.046 1.881-2.966 4.77-4.896 4.77-.984.006-1.642-.676-2.101-1.487C3.288 15.805 1.589 7.71 2.69 5.047zm6.713 6.564C7.513 8.475 6.228 6.875 5.369 6.08c-.419-.389-.685-.536-.817-.592a.556.556 0 00-.102-.034l-.008.01a1.113 1.113 0 00-.134.25l-.001.002c-.13.313-.242 1.013-.212 2.136.028 1.066.177 2.329.416 3.633.488 2.662 1.297 5.213 2.01 6.465l.001.003c.166.292.31.456.413.536.075.06.109.064.155.063h.01c.08 0 .388-.062.935-.549.514-.457 1.043-1.116 1.537-1.852a21.642 21.642 0 001.248-2.128l-.255-.437c-.4-.687-.869-1.488-1.162-1.975zm5.188 0c1.89-3.136 3.174-4.736 4.033-5.531.42-.389.686-.536.817-.592a.554.554 0 01.102-.034l.008.01c.029.038.079.115.135.25v.002c.13.313.242 1.013.213 2.136-.029 1.066-.177 2.329-.417 3.633-.488 2.662-1.297 5.213-2.01 6.465l-.001.003c-.165.292-.31.456-.413.536-.075.06-.108.064-.155.063h-.01c-.08 0-.388-.062-.935-.549-.514-.457-1.042-1.116-1.537-1.852a21.645 21.645 0 01-1.248-2.128l.255-.437c.4-.687.87-1.488 1.163-1.975z' fill='%23000' fill-opacity='.9'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2.69 5.047c.43-1.043 1.103-1.306 1.59-1.343 1.078-.069 2.79.644 6.622 7.004.28.467.713 1.204 1.095 1.858.381-.654.814-1.391 1.095-1.858 3.83-6.36 5.544-7.073 6.62-7.004.489.037 1.162.3 1.592 1.343 1.1 2.662-.598 10.758-2.31 13.768-.46.811-1.118 1.493-2.101 1.487-1.931 0-3.851-2.889-4.896-4.77-1.046 1.881-2.966 4.77-4.896 4.77-.984.006-1.642-.676-2.101-1.487C3.288 15.805 1.589 7.71 2.69 5.047zm6.713 6.564C7.513 8.475 6.228 6.875 5.369 6.08c-.419-.389-.685-.536-.817-.592a.556.556 0 00-.102-.034l-.008.01a1.113 1.113 0 00-.134.25l-.001.002c-.13.313-.242 1.013-.212 2.136.028 1.066.177 2.329.416 3.633.488 2.662 1.297 5.213 2.01 6.465l.001.003c.166.292.31.456.413.536.075.06.109.064.155.063h.01c.08 0 .388-.062.935-.549.514-.457 1.043-1.116 1.537-1.852a21.642 21.642 0 001.248-2.128l-.255-.437c-.4-.687-.869-1.488-1.162-1.975zm5.188 0c1.89-3.136 3.174-4.736 4.033-5.531.42-.389.686-.536.817-.592a.554.554 0 01.102-.034l.008.01c.029.038.079.115.135.25v.002c.13.313.242 1.013.213 2.136-.029 1.066-.177 2.329-.417 3.633-.488 2.662-1.297 5.213-2.01 6.465l-.001.003c-.165.292-.31.456-.413.536-.075.06-.108.064-.155.063h-.01c-.08 0-.388-.062-.935-.549-.514-.457-1.042-1.116-1.537-1.852a21.645 21.645 0 01-1.248-2.128l.255-.437c.4-.687.87-1.488 1.163-1.975z' fill='%23000' fill-opacity='.9'/%3E%3C/svg%3E");color:var(--weui-ORANGE)}[tabindex]{outline:0}.wx-root{pointer-events:auto;font-family:system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif}.wx-root,.wx_card_root{position:relative}.wxw_hide{display:none!important}.wx_uninteractive{pointer-events:none}.wx-root,body{--APPMSGCARD-BG:#fafafa}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--APPMSGCARD-BG:#1e1e1e}@media (prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--APPMSGCARD-BG:#1e1e1e}}.wx-root,body{--APPMSGCARD-LINE-BG:rgba(0,0,0,0.07)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--APPMSGCARD-LINE-BG:hsla(0,0%,100%,0.07)}@media (prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--APPMSGCARD-LINE-BG:hsla(0,0%,100%,0.07)}}.appmsg_card_context{position:relative;background-color:var(--APPMSGCARD-BG);border-radius:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.appmsg_card_context:hover{cursor:pointer}:host(.wx_tap_highlight_active) .wx_tap_link{opacity:.5}:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#f3f3f3}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:rgba(0,0,0,.05)}@media (prefers-color-scheme:dark){:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#252525}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:hsla(0,0%,100%,.1)}}.wx_css_active :active{opacity:.5}.pages_ban_msg_wrp{position:relative}.pages_ban_msg{background:var(--weui-BG-3);color:var(--weui-FG-2);font-size:14px;font-weight:400;font-style:normal;line-height:1.4;position:absolute;z-index:50;top:0;left:0;width:100%;height:100%;padding:16px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;text-align:center;border-radius:4px}.pages_ban_msg a,.pages_ban_msg button{cursor:pointer}.pages_ban_msg_web{background:hsla(0,0%,96.9%,.95);color:var(--weui-FG-1)}.weui-icon-filled-listen-later{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M7.15 3v2.35H9.5v1.8H7.15V9.5h-1.8V7.15H3v-1.8h2.35V3h1.8zM11 5.35h10v1.8H11v-1.8zm10 6.5H5v1.8h16v-1.8zm0 6H5v1.8h16v-1.8z' fill='%23000'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M7.15 3v2.35H9.5v1.8H7.15V9.5h-1.8V7.15H3v-1.8h2.35V3h1.8zM11 5.35h10v1.8H11v-1.8zm10 6.5H5v1.8h16v-1.8zm0 6H5v1.8h16v-1.8z' fill='%23000'/%3E%3C/svg%3E")}.weui-icon-filled-listen-later-added{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M7.53 8.53l5.5-5.5-1.06-1.06L7 6.94 4.53 4.47 3.47 5.53l3 3 .53.53.53-.53zM21 5.5h-7.7V7H21V5.5zM5 11.85h16v1.5H5v-1.5zm0 6h16v1.5H5v-1.5z' fill='%23000'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M13 5.35h8v1.8h-8v-1.8zm8 6.5H5v1.8h16v-1.8zm0 6H5v1.8h16v-1.8z' fill='%23000'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M7.53 8.53l5.5-5.5-1.06-1.06L7 6.94 4.53 4.47 3.47 5.53l3 3 .53.53.53-.53zM21 5.5h-7.7V7H21V5.5zM5 11.85h16v1.5H5v-1.5zm0 6h16v1.5H5v-1.5z' fill='%23000'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M13 5.35h8v1.8h-8v-1.8zm8 6.5H5v1.8h16v-1.8zm0 6H5v1.8h16v-1.8z' fill='%23000'/%3E%3C/svg%3E")}.weui-icon-filled-play{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M7.496 4.855l10.985 6.277a1 1 0 010 1.736L7.496 19.145A1 1 0 016 18.277V5.723a1 1 0 011.496-.868z' fill='%23000' fill-opacity='.9'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M7.496 4.855l10.985 6.277a1 1 0 010 1.736L7.496 19.145A1 1 0 016 18.277V5.723a1 1 0 011.496-.868z' fill='%23000' fill-opacity='.9'/%3E%3C/svg%3E")}.weui-icon-filled-pause{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.5 5.5a1 1 0 011-1h2a1 1 0 011 1v13a1 1 0 01-1 1h-2a1 1 0 01-1-1v-13zm9 0a1 1 0 011-1h2a1 1 0 011 1v13a1 1 0 01-1 1h-2a1 1 0 01-1-1v-13z' fill='%23000' fill-opacity='.9'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.5 5.5a1 1 0 011-1h2a1 1 0 011 1v13a1 1 0 01-1 1h-2a1 1 0 01-1-1v-13zm9 0a1 1 0 011-1h2a1 1 0 011 1v13a1 1 0 01-1 1h-2a1 1 0 01-1-1v-13z' fill='%23000' fill-opacity='.9'/%3E%3C/svg%3E")}.audio_card{overflow:hidden;line-height:1.4;-webkit-tap-highlight-color:rgba(0,0,0,0)}.audio_card_bd{display:block}.audio_card_title{display:block;font-weight:500;font-size:17px;color:var(--weui-FG-0);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.audio_card_desc-time{margin-top:12px;align-items:center}.audio_card_desc{margin-top:2px;font-size:14px;color:var(--weui-FG-2)}.audio_card_desc_meta{flex-shrink:0}.audio_card_desc_meta+.audio_card_desc_meta{margin-left:8px}.audio_card_nickname{width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;flex-shrink:1}.audio_card_opr{margin-left:8px;display:flex}.audio_card_opr .weui-btn_icon{flex-shrink:0;margin-left:16px;color:var(--weui-FG-0)}.audio_card_ft{display:block;color:var(--weui-FG-2);font-size:14px;position:relative}.audio_card_ft:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid var(--APPMSGCARD-LINE-BG);color:var(--APPMSGCARD-LINE-BG);transform-origin:0 0;transform:scaleY(.5);left:16px;right:16px}.common-web.audio_card{width:382px;margin:0 auto}.audio_card_progress_wrp{display:block;position:relative;height:4px;outline:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.audio_card_progress{position:absolute;height:2px;left:0;right:0;top:50%;transform:translateY(-50%);background:rgba(0,0,0,.1);border-radius:2px;overflow:hidden}.audio_card_progress_inner{position:absolute;top:0;left:0;height:100%;background:var(--weui-FG-0);z-index:1}.audio_card_progress_buffer{position:absolute;top:0;left:0;bottom:0;background:rgba(0,0,0,.19)}.audio_card_progress_loading{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.audio_card_progress_loading:before{position:absolute;top:0;bottom:0;left:0;width:200%;animation:slidein 6s linear infinite normal;background-image:repeating-linear-gradient(-15deg,rgba(0,0,0,.19),rgba(0,0,0,.19) 2px,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 4px)}.audio_card_progress_handle{outline:0;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;z-index:2;width:14px;height:14px;top:50%;margin:-7px 0 0 -7px}.audio_card_progress_handle:before{content:"";position:absolute;width:4px;height:4px;top:50%;left:50%;margin-top:-2px;margin-left:-2px;background:var(--weui-FG-0);border-radius:50%;transition:width .15s linear,height .15s linear}.audio_card_progress_handle.audio_card_progress_handle{position:absolute}.audio_card_progress_handle:active:before{width:8px;height:8px;margin-top:-4px;margin-left:-4px}@keyframes slidein{0%{transform:translateX(-50%)}to{transform:translateX(0)}}.audio_card_switch_btn .weui-icon-filled-pause,.share_audio_playing .audio_card_switch_btn .weui-icon-filled-play{display:none}.share_audio_playing .audio_card_switch_btn .weui-icon-filled-pause{display:inline-block}.audio_card_bd{padding:16px}.audio_card_progress_wrp{margin-top:16px}.wx-root[data-weui-theme=dark] .audio_card_progress{background:hsla(0,0%,100%,.1)}.wx-root[data-weui-theme=dark] .audio_card_progress_buffer{background:hsla(0,0%,100%,.19)}.wx-root[data-weui-theme=dark] .audio_card_progress_loading:before{background-image:repeating-linear-gradient(-15deg,hsla(0,0%,100%,.19),hsla(0,0%,100%,.19) 2px,hsla(0,0%,100%,.1) 0,hsla(0,0%,100%,.1) 4px)}@media (prefers-color-scheme:dark){.wx-root:not([data-weui-theme=light]) .audio_card_progress{background:hsla(0,0%,100%,.1)}.wx-root:not([data-weui-theme=light]) .audio_card_progress_buffer{background:hsla(0,0%,100%,.19)}.wx-root:not([data-weui-theme=light]) .audio_card_progress_loading:before{background-image:repeating-linear-gradient(-15deg,hsla(0,0%,100%,.19),hsla(0,0%,100%,.19) 2px,hsla(0,0%,100%,.1) 0,hsla(0,0%,100%,.1) 4px)}}.audio_card_thumb{display:block;flex-shrink:0;font-size:64px;width:1em;height:1em;background-size:cover;margin-right:12px;border-radius:2px;position:relative;background-color:#e3e4e5}.audio_card .pages_ban_msg{flex-direction:column;flex-wrap:wrap}.audio_card .pages_ban_msg:before{content:"";display:block;width:20px;height:20px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2 12c0 5.523 4.477 10 10 10s10-4.477 10-10S17.523 2 12 2 2 6.477 2 12zm18.8 0a8.8 8.8 0 11-17.6 0 8.8 8.8 0 0117.6 0zm-8.2-2v7h-1.2v-7h1.2zM12 9a1 1 0 100-2 1 1 0 000 2z' fill='%23000' fill-opacity='.3'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:cover;margin-bottom:4px}.wx_hover_card:before{border-radius:8px;border:1px solid rgba(7,193,96,.3)}.wx_hover_card:before,.wx_selected_card:before{content:" ";position:absolute;top:0;left:0;right:0;bottom:0;box-sizing:border-box;pointer-events:none}.wx_selected_card:before{border-radius:8px;border:1.5px solid #07c160;background:rgba(7,193,96,.1)}.audio_card_album{padding:16px;position:relative}.audio_card_album:after{position:absolute;left:0;top:0;right:0;bottom:0;border-bottom-left-radius:8px;border-bottom-right-radius:8px;background:var(--weui-TAG-BACKGROUND-BLACK);overflow:hidden}.wx_tap_highlight_active .audio_card_album:after{content:""}.audio_card_album_name{color:var(--weui-FG-1);display:block;width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.audio_card_album_num{flex-shrink:0;margin-left:20px;display:flex;align-items:center}.audio_card_album_num .weui-icon-outlined-arrow{width:.8em;height:1.8em;margin-left:2px}.audio_card_bd{padding:24px 16px}.audio_card_progress_wrp{margin-bottom:-8px}.audio_album_card .audio_card_bd{padding:16px}.audio_album_card .audio_card_progress_wrp{margin-bottom:-12px}.audio_album_card.share_audio_pause .audio_card_ft:before,.audio_album_card.share_audio_playing .audio_card_ft:before{display:none}
</style>
<div class="common-webchat wx-root wx_tap_card appmsg_card_context audio_card wx_mpaudio_card wx_card_root js_wx_mpaudio_card share_audio_pause">
<span class="audio_card_bd">
<span>
<span role="link" tabindex="0" class="audio_card_info weui-flex__item weui-flex weui-flex_align-center">
<img class="audio_card_thumb" src="" alt="">
<span role="option" class="weui-flex__item">
<strong class="audio_card_title"></strong>
<span class="audio_card_desc weui-flex weui-flex_align-center">
<span class="audio_card_desc_meta audio_card_nickname">
<span class="weui-hidden_abs">,</span>
<span class="audio_card_nickname_inner"></span>
</span>
</span>
</span>
</span>
<span class="weui-flex audio_card_desc-time">
<span class="weui-flex__item audio_card_desc js_duration js_duration1">
<span class="weui-hidden_abs">,</span><span class="text"></span></span>
<span class="weui-flex__item audio_card_desc js_duration js_duration2">
<span style="position: relative; display: inline-block;">
<span style="opacity: 0; display: inline-block;" aria-hidden="true">00:00</span>
<span style="position: absolute; left: 0; top: 0;" class="start"></span>
</span>
<span style="position: relative; display: inline-block;">/</span>
<span style="position: relative; display: inline-block;">
<span style="opacity: 0; display: inline-block;" aria-hidden="true">00:00</span>
<span style="position: absolute; right: 0; top: 0;" class="end"></span>
</span>
</span>
<span class="audio_card_opr">
<button aria-label="稍后听" class="weui-btn_icon js_audio_listen_later" style="visibility: hidden;">
<i class="weui-icon-filled-listen-later"></i>
</button>
<button aria-label="Play" class="weui-btn_icon audio_card_switch_btn js_voice_play" title="按住option + 上下方向键可调音量">
<i class="weui-icon-filled-play"></i>
<i class="weui-icon-filled-pause"></i>
</button>
</span>
</span>
</span>
<span id="audio_progress_bar" class="js_audio_progress_bar">
<span id="voice_seekRange" class="audio_card_progress_wrp js_audio_card_progress_wrp">
<span class="audio_card_progress">
<span id="voice_progress" class="audio_card_progress_inner js_audio_card_progress_inner" style="width: 10%;"></span>
<span id="voice_buffer" class="audio_card_progress_buffer js_audio_card_progress_buffer" style="width: 100%;"></span>
<span id="voice_loading" class="audio_card_progress_loading js_audio_card_progress_loading" style="display: none;"></span>
</span>
<span
tabindex="0"
role="option"
title="按住option + 左右方向键可调"
id="voice_playdot"
class="js_audio_card_progress_handle audio_card_progress_handle weui-wa-hotarea"
style="display: block; left: 10%;">
<span class="weui-hidden_abs">
<span id="voice_percent_desc" class="js_voice_percent_desc">进度条</span>
<span id="voice_percent" class="js_voice_percent">10%</span>
</span>
</span>
</span>
</span>
</span>
<!---->
<!---->
</div>
<audio style="height:0;width:0;display:none" src=""></audio>
</template>
`;
let customElementTemplate = '';
if (hasMpAudio) {
customElementTemplate += mpAudioTemplate;
customElementTemplate += '<script type="text/javascript" src="./assets/mp-common-mpaudio.js"></script>';
const url = '/custom-elements/mp-common-mpaudio.js?v=2';
let scriptFile: Blob | null;
const mpCommonMpAudioJsCache = await getAssetCache(url);
if (mpCommonMpAudioJsCache) {
scriptFile = mpCommonMpAudioJsCache.file;
} else {
scriptFile = await request<Blob>(url, { retry: 1, retryDelay: 500 });
await updateAssetCache({ url: url, file: scriptFile, fakeid: fakeid });
}
zip.file(`assets/mp-common-mpaudio.js`, scriptFile);
}
const indexHTML = `<!DOCTYPE html>
<html lang="zh_CN">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0,viewport-fit=cover">
<title>${title}</title>
${localLinks}
<style>
#page-content,
#js_article_bottom_bar,
.__page_content__ {
max-width: 667px;
margin: 0 auto;
}
img {
max-width: 100%;
}
.sns_opr_btn::before {
width: 16px;
height: 16px;
margin-right: 3px;
}
</style>
</head>
<body class="${bodyCls}">
${customElementTemplate}
${pageContentHTML}
${jsArticleBottomBarHTML}
${readNum !== -1 ? '<p class="__page_content__">阅读量 ' + readNum + '</p>' : ''}
<!-- 评论数据 -->
${commentHTML}
</body>
</html>`;
zip.file('index.html', indexHTML);
return zip;
}
export function gotoLink(url: string) {
window.open(url);
}
// 计算最佳并发量
export function bestConcurrencyCount(proxyCount: number): number {
return proxyCount > 5 ? proxyCount - 3 : Math.max(proxyCount - 2, 1);
}
// 检测用户浏览器是否为 Chrome
export function isChromeBrowser() {
const userAgent = navigator.userAgent.toLowerCase();
if (userAgent.includes('micromessenger')) {
// 微信内置浏览器
return false;
}
if (!userAgent.includes('chrome')) {
// 非 Chromium 内核
return false;
}
if (typeof (navigator as any).brave === 'object') {
// Brave 浏览器
return false;
}
// catch-all
return true;
}