karin-plugin-kkk 2.31.0 → 2.31.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +73 -0
- package/lib/build-metadata.json +5 -5
- package/lib/core_chunk/amagi.js +1 -1
- package/lib/core_chunk/amagiClient.js +1 -1
- package/lib/core_chunk/{index-CN7AJkHp.d.mts → index-DNlQJ2Zs.d.mts} +11 -3
- package/lib/core_chunk/main.js +989 -2111
- package/lib/core_chunk/richtext.d.mts +2 -2
- package/lib/core_chunk/richtext.js +2 -2
- package/lib/core_chunk/template.d.mts +491 -709
- package/lib/core_chunk/vendor.js +94555 -167433
- package/lib/karin-plugin-kkk.css +85 -283
- package/lib/root.js +1 -1
- package/package.json +3 -2
package/lib/core_chunk/main.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as __toESM } from "./rolldown-runtime.js";
|
|
2
|
-
import { $ as
|
|
2
|
+
import { $ as SiGooglephotos, $t as Moon, A as RiHashtag, An as CircleEllipsis, At as Square, B as RiThumbUpFill, Bn as Bookmark, Bt as ScanLine, C as AiFillHeart, Cn as CornerDownLeft, Ct as UserPlus, D as Markdown, Dn as Clapperboard, Dt as Terminal, E as AiOutlineVideoCamera, En as Clock, Et as Trash2, F as RiMessage3Fill, Fn as ChartColumn, Ft as Shield, G as RiVideoLine, Gn as clsx, Gt as Quote, H as RiTrophyFill, Hn as ArrowDownToLine, Ht as RotateCcw, I as RiPieChart2Fill, In as Camera, It as ShieldCheck, J as SiSamsung, Jn as require_react, Jt as Plus, K as SiXiaomi, Kn as require_jsx_runtime, Kt as QrCode, L as RiShareForwardFill, Ln as Calendar, Lt as Share2, M as RiHeart3Line, Mn as CircleCheckBig, Mt as Sparkles, N as RiHeartLine, Nn as CircleAlert, Nt as Smartphone, O as RiArrowRightFill, On as CircleQuestionMark, Ot as Sun, P as RiLiveLine, Pn as Check, Pt as ShoppingBag, Q as SiHonor, Qn as zod_default, Qt as Music, R as RiStarFill, Rn as Box, Rt as Settings2, S as BiImage, Sn as Cpu, St as User, T as AiFillStar, Tn as Code, Tt as TriangleAlert, U as RiUserFollowLine, Un as Chip, Ut as RefreshCw, V as RiTiktokFill, Vn as BellRing, Vt as Save, W as RiVerifiedBadgeFill, Wn as Button, Wt as Radio, X as SiOneplus, Xn as Chalk, Xt as Pencil, Y as SiOppo, Yn as require_protobufjs, Yt as Play, Z as SiHuawei, Zn as Xhshow, Zt as Palette, _ as MdSchedule, _n as Eye, _t as X, a as VictoryScatter, an as LoaderCircle, at as m, b as FaTiktok, bn as Download, bt as Users, c as VictoryChart, cn as Info, ct as c, d as VictoryTheme, dn as Hash, dt as fromUnixTime, en as Monitor, et as SiGithub, f as rehypeHighlight, fn as GitBranch, ft as formatDistanceToNow, g as MdLocationOn, gn as FilePlay, gt as Zap, h as MdLightbulbOutline, hn as FileText, ht as twMerge, i as require_heic_decode, in as MapPin, it as o, j as RiHeart3Fill, jn as CircleCheck, jt as SquarePen, k as RiGroupLine, kn as CircleFadingArrowUp, kt as Star, l as VictoryAxis, ln as Image$1, lt as zhCN, m as MdInfoOutline, mn as Gamepad2, mt as differenceInSeconds, n as require_lib, nn as Menu, nt as SiApple, o as VictoryPie, on as Link, ot as a, p as MdFitScreen, pn as Gift, pt as format, q as SiVivo, qn as require_server_node, qt as Puzzle, r as require_jpeg_js, rn as Maximize, rt as SiAnthropic, s as VictoryLine, sn as LayoutTemplate, st as n, t as createProxyMiddleware, tn as MessageCircle, tt as SiBilibili, u as VictoryLabel, un as Heart, ut as parse, v as FaCommentDots, vn as EyeOff, vt as WandSparkles, w as AiFillPushpin, wn as Copy, wt as Upload, x as FaUserGroup, xn as Crown, xt as UsersRound, y as FaMusic, yn as ExternalLink, yt as Video, z as RiStarLine, zn as Bot, zt as Search } from "./vendor.js";
|
|
3
3
|
import "node:module";
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import path, { resolve } from "node:path";
|
|
@@ -15,8 +15,10 @@ import { karinPathBase, karinPathTemp as karinPathTemp$1 } from "node-karin/root
|
|
|
15
15
|
import sqlite3 from "node-karin/sqlite3";
|
|
16
16
|
import YAML from "node-karin/yaml";
|
|
17
17
|
import util from "node:util";
|
|
18
|
+
import { generate, scan } from "@ikenxuan/qrcode";
|
|
18
19
|
import { Transform } from "node:stream";
|
|
19
20
|
import { pipeline } from "node:stream/promises";
|
|
21
|
+
import { inflateSync } from "node:zlib";
|
|
20
22
|
import { embedWatermarkToPngBytes } from "@ikenxuan/watermark";
|
|
21
23
|
import { snapka } from "@karinjs/plugin-puppeteer";
|
|
22
24
|
import { newInjectedPage } from "fingerprint-injector";
|
|
@@ -3280,7 +3282,6 @@ var XBogus = class {
|
|
|
3280
3282
|
const array2 = this.md5StrToArray(this.md5(this.md5StrToArray("d41d8cd98f00b204e9800998ecf8427e")));
|
|
3281
3283
|
const urlEncryptedArray = this.md5Encrypt(urlPath);
|
|
3282
3284
|
const timestamp = Math.floor(Date.now() / 1e3);
|
|
3283
|
-
const ct = 536919696;
|
|
3284
3285
|
const newArray = [
|
|
3285
3286
|
64,
|
|
3286
3287
|
1,
|
|
@@ -3296,10 +3297,10 @@ var XBogus = class {
|
|
|
3296
3297
|
timestamp >> 16 & 255,
|
|
3297
3298
|
timestamp >> 8 & 255,
|
|
3298
3299
|
timestamp & 255,
|
|
3299
|
-
|
|
3300
|
-
|
|
3301
|
-
|
|
3302
|
-
|
|
3300
|
+
32,
|
|
3301
|
+
0,
|
|
3302
|
+
190,
|
|
3303
|
+
144
|
|
3303
3304
|
];
|
|
3304
3305
|
let xorResult = newArray[0];
|
|
3305
3306
|
for (let i = 1; i < newArray.length; i++) xorResult ^= newArray[i];
|
|
@@ -6296,7 +6297,7 @@ var captureKuaishouEncodeStack = () => {
|
|
|
6296
6297
|
* @returns 用于 `SECS.s` 的栈尾字符串
|
|
6297
6298
|
*/
|
|
6298
6299
|
var deriveKuaishouSecsStackTail = (stack = captureKuaishouEncodeStack()) => {
|
|
6299
|
-
return stack.length > KUAISHOU_SECS_STACK_LIMIT ? stack.slice(-
|
|
6300
|
+
return stack.length > KUAISHOU_SECS_STACK_LIMIT ? stack.slice(-100) : stack;
|
|
6300
6301
|
};
|
|
6301
6302
|
/**
|
|
6302
6303
|
* 构造快手 `window.SECS` 的纯算法等价状态。
|
|
@@ -10906,585 +10907,6 @@ var formatBuildTime = (isoString) => {
|
|
|
10906
10907
|
const date = new Date(isoString);
|
|
10907
10908
|
return `${date.getFullYear()}年${String(date.getMonth() + 1).padStart(2, "0")}月${String(date.getDate()).padStart(2, "0")}日 ${String(date.getHours()).padStart(2, "0")}:${String(date.getMinutes()).padStart(2, "0")}`;
|
|
10908
10909
|
};
|
|
10909
|
-
//#endregion
|
|
10910
|
-
//#region src/module/utils/QRCodeScanner.ts
|
|
10911
|
-
var import_heic_decode = /* @__PURE__ */ __toESM(require_heic_decode(), 1);
|
|
10912
|
-
var import_jpeg_js = /* @__PURE__ */ __toESM(require_jpeg_js(), 1);
|
|
10913
|
-
var import_jsQR = /* @__PURE__ */ __toESM(require_jsQR(), 1);
|
|
10914
|
-
var import_png = require_png();
|
|
10915
|
-
/**
|
|
10916
|
-
* 二维码扫描工具类
|
|
10917
|
-
*
|
|
10918
|
-
* 使用纯 JavaScript 实现,无需任何 native 模块依赖
|
|
10919
|
-
*
|
|
10920
|
-
* 支持的图片格式:
|
|
10921
|
-
* - PNG (使用 pngjs)
|
|
10922
|
-
* - JPEG/JPG (使用 jpeg-js)
|
|
10923
|
-
* - HEIC/HEIF (使用 heic-decode,基于 WASM)
|
|
10924
|
-
*
|
|
10925
|
-
* 注意:所有图片解码库均为纯 JavaScript/WASM 实现,
|
|
10926
|
-
* 不依赖任何 native 模块,可在任何平台上运行
|
|
10927
|
-
*/
|
|
10928
|
-
var QRCodeScanner = class {
|
|
10929
|
-
/**
|
|
10930
|
-
* 从图片 URL 识别二维码
|
|
10931
|
-
* @param imageUrl 图片 URL
|
|
10932
|
-
* @returns 二维码内容,如果没有识别到则返回 null
|
|
10933
|
-
*/
|
|
10934
|
-
static async scanFromUrl(imageUrl) {
|
|
10935
|
-
try {
|
|
10936
|
-
const response = await axios.get(imageUrl, { responseType: "arraybuffer" });
|
|
10937
|
-
const buffer = Buffer.from(response.data);
|
|
10938
|
-
if (!this.detectImageFormat(buffer)) {
|
|
10939
|
-
logger.debug("URL 内容不是支持的图片格式,跳过二维码扫描");
|
|
10940
|
-
return null;
|
|
10941
|
-
}
|
|
10942
|
-
return this.scanFromBuffer(buffer);
|
|
10943
|
-
} catch (error) {
|
|
10944
|
-
logger.error("识别二维码时发生错误:", error);
|
|
10945
|
-
return null;
|
|
10946
|
-
}
|
|
10947
|
-
}
|
|
10948
|
-
/**
|
|
10949
|
-
* 提取图片的一个区域
|
|
10950
|
-
* @param imageData 原始图片数据
|
|
10951
|
-
* @param x 起始 x 坐标
|
|
10952
|
-
* @param y 起始 y 坐标
|
|
10953
|
-
* @param width 区域宽度
|
|
10954
|
-
* @param height 区域高度
|
|
10955
|
-
* @returns 区域图片数据
|
|
10956
|
-
*/
|
|
10957
|
-
static extractRegion(imageData, x, y, width, height) {
|
|
10958
|
-
const newData = new Uint8ClampedArray(width * height * 4);
|
|
10959
|
-
for (let dy = 0; dy < height; dy++) for (let dx = 0; dx < width; dx++) {
|
|
10960
|
-
const srcX = x + dx;
|
|
10961
|
-
const srcY = y + dy;
|
|
10962
|
-
if (srcX >= imageData.width || srcY >= imageData.height) continue;
|
|
10963
|
-
const srcIndex = (srcY * imageData.width + srcX) * 4;
|
|
10964
|
-
const dstIndex = (dy * width + dx) * 4;
|
|
10965
|
-
newData[dstIndex] = imageData.data[srcIndex];
|
|
10966
|
-
newData[dstIndex + 1] = imageData.data[srcIndex + 1];
|
|
10967
|
-
newData[dstIndex + 2] = imageData.data[srcIndex + 2];
|
|
10968
|
-
newData[dstIndex + 3] = imageData.data[srcIndex + 3];
|
|
10969
|
-
}
|
|
10970
|
-
return {
|
|
10971
|
-
width,
|
|
10972
|
-
height,
|
|
10973
|
-
data: newData
|
|
10974
|
-
};
|
|
10975
|
-
}
|
|
10976
|
-
/**
|
|
10977
|
-
* 增强图片对比度(用于提高二维码识别率)
|
|
10978
|
-
* @param imageData 图片数据
|
|
10979
|
-
* @returns 增强后的图片数据
|
|
10980
|
-
*/
|
|
10981
|
-
static enhanceContrast(imageData) {
|
|
10982
|
-
const { width, height, data } = imageData;
|
|
10983
|
-
const newData = new Uint8ClampedArray(data.length);
|
|
10984
|
-
const histogram = new Array(256).fill(0);
|
|
10985
|
-
for (let i = 0; i < data.length; i += 4) {
|
|
10986
|
-
const gray = Math.floor(.299 * data[i] + .587 * data[i + 1] + .114 * data[i + 2]);
|
|
10987
|
-
histogram[gray]++;
|
|
10988
|
-
}
|
|
10989
|
-
const cdf = new Array(256).fill(0);
|
|
10990
|
-
cdf[0] = histogram[0];
|
|
10991
|
-
for (let i = 1; i < 256; i++) cdf[i] = cdf[i - 1] + histogram[i];
|
|
10992
|
-
const totalPixels = width * height;
|
|
10993
|
-
const cdfMin = cdf.find((v) => v > 0) || 0;
|
|
10994
|
-
for (let i = 0; i < data.length; i += 4) {
|
|
10995
|
-
const gray = Math.floor(.299 * data[i] + .587 * data[i + 1] + .114 * data[i + 2]);
|
|
10996
|
-
const newGray = Math.floor((cdf[gray] - cdfMin) / (totalPixels - cdfMin) * 255);
|
|
10997
|
-
newData[i] = newGray;
|
|
10998
|
-
newData[i + 1] = newGray;
|
|
10999
|
-
newData[i + 2] = newGray;
|
|
11000
|
-
newData[i + 3] = data[i + 3];
|
|
11001
|
-
}
|
|
11002
|
-
return {
|
|
11003
|
-
width,
|
|
11004
|
-
height,
|
|
11005
|
-
data: newData
|
|
11006
|
-
};
|
|
11007
|
-
}
|
|
11008
|
-
/**
|
|
11009
|
-
* 二值化处理(用于提高小二维码识别率)
|
|
11010
|
-
* @param imageData 图片数据
|
|
11011
|
-
* @param threshold 阈值(0-255),默认自动计算
|
|
11012
|
-
* @returns 二值化后的图片数据
|
|
11013
|
-
*/
|
|
11014
|
-
static binarize(imageData, threshold) {
|
|
11015
|
-
const { width, height, data } = imageData;
|
|
11016
|
-
const newData = new Uint8ClampedArray(data.length);
|
|
11017
|
-
if (threshold === void 0) {
|
|
11018
|
-
const histogram = new Array(256).fill(0);
|
|
11019
|
-
for (let i = 0; i < data.length; i += 4) {
|
|
11020
|
-
const gray = Math.floor(.299 * data[i] + .587 * data[i + 1] + .114 * data[i + 2]);
|
|
11021
|
-
histogram[gray]++;
|
|
11022
|
-
}
|
|
11023
|
-
const total = width * height;
|
|
11024
|
-
let sum = 0;
|
|
11025
|
-
for (let i = 0; i < 256; i++) sum += i * histogram[i];
|
|
11026
|
-
let sumB = 0;
|
|
11027
|
-
let wB = 0;
|
|
11028
|
-
let wF = 0;
|
|
11029
|
-
let maxVariance = 0;
|
|
11030
|
-
threshold = 0;
|
|
11031
|
-
for (let t = 0; t < 256; t++) {
|
|
11032
|
-
wB += histogram[t];
|
|
11033
|
-
if (wB === 0) continue;
|
|
11034
|
-
wF = total - wB;
|
|
11035
|
-
if (wF === 0) break;
|
|
11036
|
-
sumB += t * histogram[t];
|
|
11037
|
-
const mB = sumB / wB;
|
|
11038
|
-
const mF = (sum - sumB) / wF;
|
|
11039
|
-
const variance = wB * wF * (mB - mF) * (mB - mF);
|
|
11040
|
-
if (variance > maxVariance) {
|
|
11041
|
-
maxVariance = variance;
|
|
11042
|
-
threshold = t;
|
|
11043
|
-
}
|
|
11044
|
-
}
|
|
11045
|
-
}
|
|
11046
|
-
for (let i = 0; i < data.length; i += 4) {
|
|
11047
|
-
const binary = Math.floor(.299 * data[i] + .587 * data[i + 1] + .114 * data[i + 2]) > threshold ? 255 : 0;
|
|
11048
|
-
newData[i] = binary;
|
|
11049
|
-
newData[i + 1] = binary;
|
|
11050
|
-
newData[i + 2] = binary;
|
|
11051
|
-
newData[i + 3] = data[i + 3];
|
|
11052
|
-
}
|
|
11053
|
-
return {
|
|
11054
|
-
width,
|
|
11055
|
-
height,
|
|
11056
|
-
data: newData
|
|
11057
|
-
};
|
|
11058
|
-
}
|
|
11059
|
-
/**
|
|
11060
|
-
* 锐化处理(增强边缘)
|
|
11061
|
-
* @param imageData 图片数据
|
|
11062
|
-
* @returns 锐化后的图片数据
|
|
11063
|
-
*/
|
|
11064
|
-
static sharpen(imageData) {
|
|
11065
|
-
const { width, height, data } = imageData;
|
|
11066
|
-
const newData = new Uint8ClampedArray(data.length);
|
|
11067
|
-
const kernel = [
|
|
11068
|
-
0,
|
|
11069
|
-
-1,
|
|
11070
|
-
0,
|
|
11071
|
-
-1,
|
|
11072
|
-
5,
|
|
11073
|
-
-1,
|
|
11074
|
-
0,
|
|
11075
|
-
-1,
|
|
11076
|
-
0
|
|
11077
|
-
];
|
|
11078
|
-
for (let y = 1; y < height - 1; y++) for (let x = 1; x < width - 1; x++) {
|
|
11079
|
-
let r = 0, g = 0, b = 0;
|
|
11080
|
-
for (let ky = -1; ky <= 1; ky++) for (let kx = -1; kx <= 1; kx++) {
|
|
11081
|
-
const idx = ((y + ky) * width + (x + kx)) * 4;
|
|
11082
|
-
const k = kernel[(ky + 1) * 3 + (kx + 1)];
|
|
11083
|
-
r += data[idx] * k;
|
|
11084
|
-
g += data[idx + 1] * k;
|
|
11085
|
-
b += data[idx + 2] * k;
|
|
11086
|
-
}
|
|
11087
|
-
const idx = (y * width + x) * 4;
|
|
11088
|
-
newData[idx] = Math.max(0, Math.min(255, r));
|
|
11089
|
-
newData[idx + 1] = Math.max(0, Math.min(255, g));
|
|
11090
|
-
newData[idx + 2] = Math.max(0, Math.min(255, b));
|
|
11091
|
-
newData[idx + 3] = data[idx + 3];
|
|
11092
|
-
}
|
|
11093
|
-
for (let x = 0; x < width; x++) {
|
|
11094
|
-
const topIdx = x * 4;
|
|
11095
|
-
const bottomIdx = ((height - 1) * width + x) * 4;
|
|
11096
|
-
for (let c = 0; c < 4; c++) {
|
|
11097
|
-
newData[topIdx + c] = data[topIdx + c];
|
|
11098
|
-
newData[bottomIdx + c] = data[bottomIdx + c];
|
|
11099
|
-
}
|
|
11100
|
-
}
|
|
11101
|
-
for (let y = 0; y < height; y++) {
|
|
11102
|
-
const leftIdx = y * width * 4;
|
|
11103
|
-
const rightIdx = (y * width + width - 1) * 4;
|
|
11104
|
-
for (let c = 0; c < 4; c++) {
|
|
11105
|
-
newData[leftIdx + c] = data[leftIdx + c];
|
|
11106
|
-
newData[rightIdx + c] = data[rightIdx + c];
|
|
11107
|
-
}
|
|
11108
|
-
}
|
|
11109
|
-
return {
|
|
11110
|
-
width,
|
|
11111
|
-
height,
|
|
11112
|
-
data: newData
|
|
11113
|
-
};
|
|
11114
|
-
}
|
|
11115
|
-
/**
|
|
11116
|
-
* 在图片区域中尝试识别二维码
|
|
11117
|
-
* @param imageData 图片数据
|
|
11118
|
-
* @param regionName 区域名称(用于日志)
|
|
11119
|
-
* @returns 二维码内容或 null
|
|
11120
|
-
*/
|
|
11121
|
-
static tryRecognizeInRegion(imageData, regionName) {
|
|
11122
|
-
for (const strategy of [
|
|
11123
|
-
{
|
|
11124
|
-
name: "默认",
|
|
11125
|
-
enhance: false,
|
|
11126
|
-
binarize: false,
|
|
11127
|
-
sharpen: false,
|
|
11128
|
-
options: void 0
|
|
11129
|
-
},
|
|
11130
|
-
{
|
|
11131
|
-
name: "二值化",
|
|
11132
|
-
enhance: false,
|
|
11133
|
-
binarize: true,
|
|
11134
|
-
sharpen: false,
|
|
11135
|
-
options: void 0
|
|
11136
|
-
},
|
|
11137
|
-
{
|
|
11138
|
-
name: "锐化",
|
|
11139
|
-
enhance: false,
|
|
11140
|
-
binarize: false,
|
|
11141
|
-
sharpen: true,
|
|
11142
|
-
options: void 0
|
|
11143
|
-
},
|
|
11144
|
-
{
|
|
11145
|
-
name: "增强对比度",
|
|
11146
|
-
enhance: true,
|
|
11147
|
-
binarize: false,
|
|
11148
|
-
sharpen: false,
|
|
11149
|
-
options: void 0
|
|
11150
|
-
},
|
|
11151
|
-
{
|
|
11152
|
-
name: "增强+二值化",
|
|
11153
|
-
enhance: true,
|
|
11154
|
-
binarize: true,
|
|
11155
|
-
sharpen: false,
|
|
11156
|
-
options: void 0
|
|
11157
|
-
},
|
|
11158
|
-
{
|
|
11159
|
-
name: "锐化+二值化",
|
|
11160
|
-
enhance: false,
|
|
11161
|
-
binarize: true,
|
|
11162
|
-
sharpen: true,
|
|
11163
|
-
options: void 0
|
|
11164
|
-
},
|
|
11165
|
-
{
|
|
11166
|
-
name: "attemptBoth",
|
|
11167
|
-
enhance: false,
|
|
11168
|
-
binarize: false,
|
|
11169
|
-
sharpen: false,
|
|
11170
|
-
options: { inversionAttempts: "attemptBoth" }
|
|
11171
|
-
},
|
|
11172
|
-
{
|
|
11173
|
-
name: "二值化+attemptBoth",
|
|
11174
|
-
enhance: false,
|
|
11175
|
-
binarize: true,
|
|
11176
|
-
sharpen: false,
|
|
11177
|
-
options: { inversionAttempts: "attemptBoth" }
|
|
11178
|
-
}
|
|
11179
|
-
]) try {
|
|
11180
|
-
logger.debug(` 尝试策略: ${strategy.name}`);
|
|
11181
|
-
let processedData = imageData;
|
|
11182
|
-
if (strategy.sharpen) processedData = this.sharpen(processedData);
|
|
11183
|
-
if (strategy.enhance) processedData = this.enhanceContrast(processedData);
|
|
11184
|
-
if (strategy.binarize) processedData = this.binarize(processedData);
|
|
11185
|
-
const code = (0, import_jsQR.default)(processedData.data, processedData.width, processedData.height, strategy.options);
|
|
11186
|
-
if (code && code.data) {
|
|
11187
|
-
logger.debug(`✓ 成功识别二维码 [区域: ${regionName}] [策略: ${strategy.name}]`);
|
|
11188
|
-
logger.debug(` 二维码内容: ${code.data}`);
|
|
11189
|
-
return code.data;
|
|
11190
|
-
} else logger.debug(` 策略 ${strategy.name} 未识别到二维码`);
|
|
11191
|
-
} catch (err) {
|
|
11192
|
-
logger.debug(` 策略 ${strategy.name} 执行失败: ${err}`);
|
|
11193
|
-
}
|
|
11194
|
-
logger.debug(` 区域 ${regionName} 识别失败,尝试下一个区域`);
|
|
11195
|
-
return null;
|
|
11196
|
-
}
|
|
11197
|
-
/**
|
|
11198
|
-
* 检测图片格式
|
|
11199
|
-
* @param buffer 图片 Buffer
|
|
11200
|
-
* @returns 图片格式或 null
|
|
11201
|
-
*/
|
|
11202
|
-
static detectImageFormat(buffer) {
|
|
11203
|
-
if (buffer.length >= 8 && buffer[0] === 137 && buffer[1] === 80 && buffer[2] === 78 && buffer[3] === 71) return "png";
|
|
11204
|
-
if (buffer.length >= 3 && buffer[0] === 255 && buffer[1] === 216 && buffer[2] === 255) return "jpeg";
|
|
11205
|
-
if (buffer.length >= 12) {
|
|
11206
|
-
if (buffer.toString("ascii", 4, 8) === "ftyp") {
|
|
11207
|
-
const brand = buffer.toString("ascii", 8, 12);
|
|
11208
|
-
if (brand === "heic" || brand === "heix" || brand === "hevc" || brand === "hevx" || brand === "mif1" || brand === "msf1") return "heic";
|
|
11209
|
-
}
|
|
11210
|
-
}
|
|
11211
|
-
if (buffer.length >= 6 && buffer[0] === 71 && buffer[1] === 73 && buffer[2] === 70 && buffer[3] === 56) return "gif";
|
|
11212
|
-
if (buffer.length >= 2 && buffer[0] === 66 && buffer[1] === 77) return "bmp";
|
|
11213
|
-
if (buffer.length >= 12 && buffer[0] === 82 && buffer[1] === 73 && buffer[2] === 70 && buffer[3] === 70 && buffer[8] === 87 && buffer[9] === 69 && buffer[10] === 66 && buffer[11] === 80) return "webp";
|
|
11214
|
-
return null;
|
|
11215
|
-
}
|
|
11216
|
-
/**
|
|
11217
|
-
* 解析 PNG 图片
|
|
11218
|
-
* @param buffer 图片 Buffer
|
|
11219
|
-
* @returns 图片数据或 null
|
|
11220
|
-
*/
|
|
11221
|
-
static parsePNG(buffer) {
|
|
11222
|
-
try {
|
|
11223
|
-
const png = import_png.PNG.sync.read(buffer);
|
|
11224
|
-
logger.debug(`PNG 解析成功: ${png.width}x${png.height}`);
|
|
11225
|
-
return {
|
|
11226
|
-
width: png.width,
|
|
11227
|
-
height: png.height,
|
|
11228
|
-
data: Uint8ClampedArray.from(png.data)
|
|
11229
|
-
};
|
|
11230
|
-
} catch (err) {
|
|
11231
|
-
logger.warn("PNG 解析失败:", err);
|
|
11232
|
-
return null;
|
|
11233
|
-
}
|
|
11234
|
-
}
|
|
11235
|
-
/**
|
|
11236
|
-
* 解析 JPEG 图片
|
|
11237
|
-
* @param buffer 图片 Buffer
|
|
11238
|
-
* @returns 图片数据或 null
|
|
11239
|
-
*/
|
|
11240
|
-
static parseJPEG(buffer) {
|
|
11241
|
-
try {
|
|
11242
|
-
const decoded = import_jpeg_js.default.decode(buffer, { useTArray: true });
|
|
11243
|
-
logger.debug(`JPEG 解析成功: ${decoded.width}x${decoded.height}`);
|
|
11244
|
-
return {
|
|
11245
|
-
width: decoded.width,
|
|
11246
|
-
height: decoded.height,
|
|
11247
|
-
data: Uint8ClampedArray.from(decoded.data)
|
|
11248
|
-
};
|
|
11249
|
-
} catch (err) {
|
|
11250
|
-
logger.warn("JPEG 解析失败:", err);
|
|
11251
|
-
return null;
|
|
11252
|
-
}
|
|
11253
|
-
}
|
|
11254
|
-
/**
|
|
11255
|
-
* 解析 HEIC/HEIF 图片
|
|
11256
|
-
* @param buffer 图片 Buffer
|
|
11257
|
-
* @returns 图片数据或 null
|
|
11258
|
-
*/
|
|
11259
|
-
static async parseHEIC(buffer) {
|
|
11260
|
-
try {
|
|
11261
|
-
const decoded = await (0, import_heic_decode.default)({ buffer });
|
|
11262
|
-
logger.debug(`HEIC 解析成功: ${decoded.width}x${decoded.height}`);
|
|
11263
|
-
return {
|
|
11264
|
-
width: decoded.width,
|
|
11265
|
-
height: decoded.height,
|
|
11266
|
-
data: Uint8ClampedArray.from(decoded.data)
|
|
11267
|
-
};
|
|
11268
|
-
} catch (err) {
|
|
11269
|
-
logger.warn("HEIC 解析失败:", err);
|
|
11270
|
-
return null;
|
|
11271
|
-
}
|
|
11272
|
-
}
|
|
11273
|
-
/**
|
|
11274
|
-
* 解析图片 Buffer 为像素数据
|
|
11275
|
-
* @param buffer 图片 Buffer
|
|
11276
|
-
* @returns 图片数据或 null
|
|
11277
|
-
*/
|
|
11278
|
-
static async parseImageBuffer(buffer) {
|
|
11279
|
-
try {
|
|
11280
|
-
const format = this.detectImageFormat(buffer);
|
|
11281
|
-
logger.debug(`检测到图片格式: ${format || "未知"}`);
|
|
11282
|
-
if (!format) {
|
|
11283
|
-
logger.warn("无法识别图片格式");
|
|
11284
|
-
return null;
|
|
11285
|
-
}
|
|
11286
|
-
switch (format) {
|
|
11287
|
-
case "png": return this.parsePNG(buffer);
|
|
11288
|
-
case "jpeg": return this.parseJPEG(buffer);
|
|
11289
|
-
case "heic": return await this.parseHEIC(buffer);
|
|
11290
|
-
default:
|
|
11291
|
-
logger.warn(`不支持的图片格式: ${format}`);
|
|
11292
|
-
return null;
|
|
11293
|
-
}
|
|
11294
|
-
} catch (err) {
|
|
11295
|
-
logger.warn("图片解析失败:", err);
|
|
11296
|
-
return null;
|
|
11297
|
-
}
|
|
11298
|
-
}
|
|
11299
|
-
/**
|
|
11300
|
-
* 从图片 Buffer 识别二维码
|
|
11301
|
-
* @param buffer 图片 Buffer
|
|
11302
|
-
* @returns 二维码内容,如果没有识别到则返回 null
|
|
11303
|
-
*/
|
|
11304
|
-
static async scanFromBuffer(buffer) {
|
|
11305
|
-
try {
|
|
11306
|
-
const imageData = await this.parseImageBuffer(buffer);
|
|
11307
|
-
if (!imageData) return null;
|
|
11308
|
-
const { width, height } = imageData;
|
|
11309
|
-
const dataSizeMB = (width * height * 4 / 1024 / 1024).toFixed(2);
|
|
11310
|
-
logger.debug(`图片数据: ${width}x${height}, 内存占用: ${dataSizeMB}MB`);
|
|
11311
|
-
if (width <= 1024 && height <= 1024) {
|
|
11312
|
-
logger.debug("图片尺寸较小,使用全图识别策略");
|
|
11313
|
-
const result = this.tryRecognizeInRegion(imageData, "全图");
|
|
11314
|
-
if (result) return result;
|
|
11315
|
-
}
|
|
11316
|
-
logger.debug(`使用分块扫描策略 (${width}x${height})`);
|
|
11317
|
-
const scanRegions = [];
|
|
11318
|
-
const smallBlock = Math.min(400, Math.floor(Math.min(width, height) * .3));
|
|
11319
|
-
const mediumBlock = Math.min(600, Math.floor(Math.min(width, height) * .5));
|
|
11320
|
-
const largeBlock = Math.min(800, Math.floor(Math.max(width, height) * .6));
|
|
11321
|
-
logger.debug("添加四角小块扫描区域(优先)");
|
|
11322
|
-
scanRegions.push({
|
|
11323
|
-
name: "左上角-小",
|
|
11324
|
-
x: 0,
|
|
11325
|
-
y: 0,
|
|
11326
|
-
w: Math.min(smallBlock, width),
|
|
11327
|
-
h: Math.min(smallBlock, height)
|
|
11328
|
-
});
|
|
11329
|
-
scanRegions.push({
|
|
11330
|
-
name: "右上角-小",
|
|
11331
|
-
x: Math.max(0, width - smallBlock),
|
|
11332
|
-
y: 0,
|
|
11333
|
-
w: Math.min(smallBlock, width),
|
|
11334
|
-
h: Math.min(smallBlock, height)
|
|
11335
|
-
});
|
|
11336
|
-
scanRegions.push({
|
|
11337
|
-
name: "左下角-小",
|
|
11338
|
-
x: 0,
|
|
11339
|
-
y: Math.max(0, height - smallBlock),
|
|
11340
|
-
w: Math.min(smallBlock, width),
|
|
11341
|
-
h: Math.min(smallBlock, height)
|
|
11342
|
-
});
|
|
11343
|
-
scanRegions.push({
|
|
11344
|
-
name: "右下角-小",
|
|
11345
|
-
x: Math.max(0, width - smallBlock),
|
|
11346
|
-
y: Math.max(0, height - smallBlock),
|
|
11347
|
-
w: Math.min(smallBlock, width),
|
|
11348
|
-
h: Math.min(smallBlock, height)
|
|
11349
|
-
});
|
|
11350
|
-
logger.debug("添加四角中块扫描区域");
|
|
11351
|
-
scanRegions.push({
|
|
11352
|
-
name: "左上角-中",
|
|
11353
|
-
x: 0,
|
|
11354
|
-
y: 0,
|
|
11355
|
-
w: Math.min(mediumBlock, width),
|
|
11356
|
-
h: Math.min(mediumBlock, height)
|
|
11357
|
-
});
|
|
11358
|
-
scanRegions.push({
|
|
11359
|
-
name: "右上角-中",
|
|
11360
|
-
x: Math.max(0, width - mediumBlock),
|
|
11361
|
-
y: 0,
|
|
11362
|
-
w: Math.min(mediumBlock, width),
|
|
11363
|
-
h: Math.min(mediumBlock, height)
|
|
11364
|
-
});
|
|
11365
|
-
scanRegions.push({
|
|
11366
|
-
name: "左下角-中",
|
|
11367
|
-
x: 0,
|
|
11368
|
-
y: Math.max(0, height - mediumBlock),
|
|
11369
|
-
w: Math.min(mediumBlock, width),
|
|
11370
|
-
h: Math.min(mediumBlock, height)
|
|
11371
|
-
});
|
|
11372
|
-
scanRegions.push({
|
|
11373
|
-
name: "右下角-中",
|
|
11374
|
-
x: Math.max(0, width - mediumBlock),
|
|
11375
|
-
y: Math.max(0, height - mediumBlock),
|
|
11376
|
-
w: Math.min(mediumBlock, width),
|
|
11377
|
-
h: Math.min(mediumBlock, height)
|
|
11378
|
-
});
|
|
11379
|
-
logger.debug("添加四角大块扫描区域");
|
|
11380
|
-
const blockW = Math.min(largeBlock, width);
|
|
11381
|
-
const blockH = Math.min(largeBlock, height);
|
|
11382
|
-
scanRegions.push({
|
|
11383
|
-
name: "左上角-大",
|
|
11384
|
-
x: 0,
|
|
11385
|
-
y: 0,
|
|
11386
|
-
w: blockW,
|
|
11387
|
-
h: blockH
|
|
11388
|
-
});
|
|
11389
|
-
scanRegions.push({
|
|
11390
|
-
name: "右上角-大",
|
|
11391
|
-
x: Math.max(0, width - blockW),
|
|
11392
|
-
y: 0,
|
|
11393
|
-
w: blockW,
|
|
11394
|
-
h: blockH
|
|
11395
|
-
});
|
|
11396
|
-
scanRegions.push({
|
|
11397
|
-
name: "左下角-大",
|
|
11398
|
-
x: 0,
|
|
11399
|
-
y: Math.max(0, height - blockH),
|
|
11400
|
-
w: blockW,
|
|
11401
|
-
h: blockH
|
|
11402
|
-
});
|
|
11403
|
-
scanRegions.push({
|
|
11404
|
-
name: "右下角-大",
|
|
11405
|
-
x: Math.max(0, width - blockW),
|
|
11406
|
-
y: Math.max(0, height - blockH),
|
|
11407
|
-
w: blockW,
|
|
11408
|
-
h: blockH
|
|
11409
|
-
});
|
|
11410
|
-
if (width > mediumBlock * 1.5) {
|
|
11411
|
-
logger.debug("添加顶部/底部中间扫描区域");
|
|
11412
|
-
scanRegions.push({
|
|
11413
|
-
name: "顶部中-小",
|
|
11414
|
-
x: Math.floor((width - smallBlock) / 2),
|
|
11415
|
-
y: 0,
|
|
11416
|
-
w: Math.min(smallBlock, width),
|
|
11417
|
-
h: Math.min(smallBlock, height)
|
|
11418
|
-
});
|
|
11419
|
-
if (height > mediumBlock * 1.5) scanRegions.push({
|
|
11420
|
-
name: "底部中-小",
|
|
11421
|
-
x: Math.floor((width - smallBlock) / 2),
|
|
11422
|
-
y: Math.max(0, height - smallBlock),
|
|
11423
|
-
w: Math.min(smallBlock, width),
|
|
11424
|
-
h: Math.min(smallBlock, height)
|
|
11425
|
-
});
|
|
11426
|
-
}
|
|
11427
|
-
if (height > mediumBlock * 1.5) {
|
|
11428
|
-
logger.debug("添加左右中间扫描区域");
|
|
11429
|
-
const middleY = Math.floor((height - smallBlock) / 2);
|
|
11430
|
-
scanRegions.push({
|
|
11431
|
-
name: "左中-小",
|
|
11432
|
-
x: 0,
|
|
11433
|
-
y: middleY,
|
|
11434
|
-
w: Math.min(smallBlock, width),
|
|
11435
|
-
h: Math.min(smallBlock, height)
|
|
11436
|
-
});
|
|
11437
|
-
if (width > mediumBlock * 1.5) scanRegions.push({
|
|
11438
|
-
name: "右中-小",
|
|
11439
|
-
x: Math.max(0, width - smallBlock),
|
|
11440
|
-
y: middleY,
|
|
11441
|
-
w: Math.min(smallBlock, width),
|
|
11442
|
-
h: Math.min(smallBlock, height)
|
|
11443
|
-
});
|
|
11444
|
-
}
|
|
11445
|
-
if (width > mediumBlock && height > mediumBlock) {
|
|
11446
|
-
logger.debug("添加中心区域");
|
|
11447
|
-
scanRegions.push({
|
|
11448
|
-
name: "中心-小",
|
|
11449
|
-
x: Math.floor((width - smallBlock) / 2),
|
|
11450
|
-
y: Math.floor((height - smallBlock) / 2),
|
|
11451
|
-
w: Math.min(smallBlock, width),
|
|
11452
|
-
h: Math.min(smallBlock, height)
|
|
11453
|
-
});
|
|
11454
|
-
}
|
|
11455
|
-
logger.debug(`共生成 ${scanRegions.length} 个扫描区域,开始逐个扫描`);
|
|
11456
|
-
for (let i = 0; i < scanRegions.length; i++) {
|
|
11457
|
-
const region = scanRegions[i];
|
|
11458
|
-
logger.debug(`[${i + 1}/${scanRegions.length}] 扫描区域: ${region.name} (位置: ${region.x},${region.y}, 尺寸: ${region.w}x${region.h})`);
|
|
11459
|
-
const regionData = this.extractRegion(imageData, region.x, region.y, region.w, region.h);
|
|
11460
|
-
const result = this.tryRecognizeInRegion(regionData, region.name);
|
|
11461
|
-
if (result) {
|
|
11462
|
-
logger.debug(`二维码识别完成,共扫描了 ${i + 1}/${scanRegions.length} 个区域`);
|
|
11463
|
-
return result;
|
|
11464
|
-
}
|
|
11465
|
-
}
|
|
11466
|
-
logger.warn(`图片中未识别到二维码,已扫描所有 ${scanRegions.length} 个区域`);
|
|
11467
|
-
return null;
|
|
11468
|
-
} catch (error) {
|
|
11469
|
-
logger.error("解析图片时发生错误:", error);
|
|
11470
|
-
return null;
|
|
11471
|
-
}
|
|
11472
|
-
}
|
|
11473
|
-
/**
|
|
11474
|
-
* 检查二维码内容是否包含支持的平台链接
|
|
11475
|
-
* @param qrContent 二维码内容
|
|
11476
|
-
* @returns 是否包含支持的平台链接
|
|
11477
|
-
*/
|
|
11478
|
-
static isSupportedPlatform(qrContent) {
|
|
11479
|
-
return [
|
|
11480
|
-
/(https?:\/\/)?(www|v|jx|m|jingxuan)\.(douyin|iesdouyin)\.com/i,
|
|
11481
|
-
/https:\/\/aweme\.snssdk\.com\/aweme\/v1\/play/i,
|
|
11482
|
-
/(bilibili\.com|b23\.tv|t\.bilibili\.com|bili2233\.cn|\bBV[1-9a-zA-Z]{10}\b|\bav\d+\b)/i,
|
|
11483
|
-
/(快手.*快手|v\.kuaishou\.com|kuaishou\.com)/,
|
|
11484
|
-
/(xiaohongshu\.com|xhslink\.com)/
|
|
11485
|
-
].some((pattern) => pattern.test(qrContent));
|
|
11486
|
-
}
|
|
11487
|
-
};
|
|
11488
10910
|
/** 常用工具合集 */
|
|
11489
10911
|
var Common = new class Tools {
|
|
11490
10912
|
static VIDEO_PREVIEW_REMOVED_RETENTION_MS = 300 * 1e3;
|
|
@@ -11525,8 +10947,15 @@ var Common = new class Tools {
|
|
|
11525
10947
|
async tryScanImageQrCode(imageUrl, source) {
|
|
11526
10948
|
try {
|
|
11527
10949
|
logger.debug(`检测到${source}为图片,尝试识别二维码...`);
|
|
11528
|
-
const
|
|
11529
|
-
|
|
10950
|
+
const response = await axios.get(imageUrl, { responseType: "arraybuffer" });
|
|
10951
|
+
const qrContent = scan(Buffer.from(response.data));
|
|
10952
|
+
if (qrContent && [
|
|
10953
|
+
/(https?:\/\/)?(www|v|jx|m|jingxuan)\.(douyin|iesdouyin)\.com/i,
|
|
10954
|
+
/https:\/\/aweme\.snssdk\.com\/aweme\/v1\/play/i,
|
|
10955
|
+
/(bilibili\.com|b23\.tv|t\.bilibili\.com|bili2233\.cn|\bBV[1-9a-zA-Z]{10}\b|\bav\d+\b)/i,
|
|
10956
|
+
/(快手.*快手|v\.kuaishou\.com|kuaishou\.com)/,
|
|
10957
|
+
/(xiaohongshu\.com|xhslink\.com)/
|
|
10958
|
+
].some((pattern) => pattern.test(qrContent))) {
|
|
11530
10959
|
logger.debug(`从${source}二维码中识别到支持的平台链接: ${qrContent}`);
|
|
11531
10960
|
return qrContent;
|
|
11532
10961
|
} else if (qrContent) logger.debug(`识别到二维码内容但不是支持的平台: ${qrContent}`);
|
|
@@ -13565,6 +12994,11 @@ var PreviewLayout = ({ state }) => {
|
|
|
13565
12994
|
});
|
|
13566
12995
|
};
|
|
13567
12996
|
//#endregion
|
|
12997
|
+
//#region ../template/src/utils/cn.ts
|
|
12998
|
+
function cn(...inputs) {
|
|
12999
|
+
return twMerge(clsx(inputs));
|
|
13000
|
+
}
|
|
13001
|
+
//#endregion
|
|
13568
13002
|
//#region ../template/src/components/common/GlowImage.tsx
|
|
13569
13003
|
var GlowImage = ({ src, children, alt, className, imgClassName, mode = "blur-layer", blurRadius = 18, glowStrength = .6, scale = 1.06, shadowRadius = 28, crossOrigin }) => {
|
|
13570
13004
|
const [shadowColor, setShadowColor] = import_react.useState("rgba(255,255,255,0.5)");
|
|
@@ -14592,7 +14026,7 @@ var ViteLogo = ({ className = "w-auto h-12" }) => /* @__PURE__ */ (0, import_jsx
|
|
|
14592
14026
|
var DefaultLayout = ({ children, version, data, scale = 3, className = "", style = {}, watermarkTextBitSize }) => {
|
|
14593
14027
|
const { useDarkTheme } = data;
|
|
14594
14028
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
14595
|
-
className:
|
|
14029
|
+
className: cn("w-360 shrink-0 bg-background text-foreground font-[HarmonyOSHans-Regular]", useDarkTheme ? "dark" : "light", className),
|
|
14596
14030
|
"data-theme": useDarkTheme ? "dark" : "light",
|
|
14597
14031
|
id: "container",
|
|
14598
14032
|
style: {
|
|
@@ -14668,12 +14102,12 @@ var DefaultLayout = ({ children, version, data, scale = 3, className = "", style
|
|
|
14668
14102
|
className: "w-4 h-4"
|
|
14669
14103
|
}),
|
|
14670
14104
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
14671
|
-
className:
|
|
14105
|
+
className: cn(version.hasUpdate && "text-success", !version.hasUpdate && version.releaseType === "Preview" && "text-warning"),
|
|
14672
14106
|
children: version.hasUpdate ? "有可用更新" : version.releaseType
|
|
14673
14107
|
})
|
|
14674
14108
|
]
|
|
14675
14109
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
14676
|
-
className:
|
|
14110
|
+
className: cn("text-5xl font-bold tracking-wide", version.hasUpdate && "text-success", !version.hasUpdate && version.releaseType === "Preview" && "text-warning"),
|
|
14677
14111
|
children: ["v", version.pluginVersion]
|
|
14678
14112
|
})]
|
|
14679
14113
|
}),
|
|
@@ -14750,7 +14184,7 @@ var DefaultLayout = ({ children, version, data, scale = 3, className = "", style
|
|
|
14750
14184
|
var UsernameDisplay = ({ metadata, className, style }) => {
|
|
14751
14185
|
const vipColor = metadata.vipStatus === 1 ? metadata.nicknameColor ?? "#FB7299" : null;
|
|
14752
14186
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
14753
|
-
className:
|
|
14187
|
+
className: cn(!vipColor && "text-foreground", "font-bold", className),
|
|
14754
14188
|
style: {
|
|
14755
14189
|
...style,
|
|
14756
14190
|
...vipColor ? { color: vipColor } : {}
|
|
@@ -15182,14 +14616,14 @@ var BangumiBilibiliEpisodes = (props) => {
|
|
|
15182
14616
|
className: "flex justify-center items-center text-7xl font-bold select-text text-foreground",
|
|
15183
14617
|
children: day
|
|
15184
14618
|
}),
|
|
15185
|
-
!isLastOfAll && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className:
|
|
14619
|
+
!isLastOfAll && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cn("mt-8 w-1 bg-divider", episodesInSameDate > 1 ? "h-110" : "h-95") })
|
|
15186
14620
|
] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
15187
14621
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-1 h-10 bg-divider" }),
|
|
15188
14622
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "my-2 w-4 h-4 rounded-full bg-divider" }),
|
|
15189
|
-
(!isLastOfAll || episodesInSameDate > 1) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className:
|
|
14623
|
+
(!isLastOfAll || episodesInSameDate > 1) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cn("w-1 bg-divider", isLastOfDate ? "h-110" : "h-130") })
|
|
15190
14624
|
] })
|
|
15191
14625
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
15192
|
-
className:
|
|
14626
|
+
className: cn("flex-1 min-w-0", !isLastOfAll && isLastOfDate && "mb-20"),
|
|
15193
14627
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
15194
14628
|
className: "flex justify-between items-center mb-10",
|
|
15195
14629
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -15377,11 +14811,14 @@ var createParagraphNode = (nodes) => ({
|
|
|
15377
14811
|
nodes
|
|
15378
14812
|
});
|
|
15379
14813
|
/** 创建图片节点。 */
|
|
15380
|
-
var createImageNode = (src, alt) => ({
|
|
14814
|
+
var createImageNode = (src, alt, caption) => ({
|
|
15381
14815
|
type: "image",
|
|
15382
14816
|
src,
|
|
15383
|
-
alt
|
|
14817
|
+
alt,
|
|
14818
|
+
caption
|
|
15384
14819
|
});
|
|
14820
|
+
/** 创建水平分隔线节点。 */
|
|
14821
|
+
var createHorizontalRuleNode = () => ({ type: "horizontalRule" });
|
|
15385
14822
|
/** 创建引用块节点。 */
|
|
15386
14823
|
var createBlockquoteNode = (nodes) => ({
|
|
15387
14824
|
type: "blockquote",
|
|
@@ -15456,7 +14893,8 @@ var extractRichTextPlainText = (document) => {
|
|
|
15456
14893
|
case "blockquote":
|
|
15457
14894
|
case "listItem": return node.nodes.map(extractFromNode).join("");
|
|
15458
14895
|
case "list": return node.items.map(extractFromNode).join("");
|
|
15459
|
-
case "lineBreak":
|
|
14896
|
+
case "lineBreak":
|
|
14897
|
+
case "horizontalRule": return "";
|
|
15460
14898
|
case "image": return "";
|
|
15461
14899
|
case "codeBlock": return node.content;
|
|
15462
14900
|
case "linkCard": return node.title;
|
|
@@ -15804,15 +15242,24 @@ var renderNodeToReact = (node, index, options) => {
|
|
|
15804
15242
|
case "image": {
|
|
15805
15243
|
const safeSrc = sanitizeImageSource(node.src);
|
|
15806
15244
|
if (!safeSrc) return null;
|
|
15807
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.
|
|
15808
|
-
|
|
15809
|
-
|
|
15810
|
-
|
|
15811
|
-
|
|
15812
|
-
|
|
15813
|
-
|
|
15245
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
15246
|
+
"data-richtext-node": "image",
|
|
15247
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
15248
|
+
className: "rounded-4xl",
|
|
15249
|
+
src: safeSrc,
|
|
15250
|
+
alt: node.alt || "",
|
|
15251
|
+
referrerPolicy: "no-referrer",
|
|
15252
|
+
crossOrigin: "anonymous"
|
|
15253
|
+
}), node.caption && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
15254
|
+
className: "mt-6 text-center text-[36px] text-foreground/60 select-text",
|
|
15255
|
+
children: node.caption
|
|
15256
|
+
})]
|
|
15814
15257
|
}, `image-${index}`);
|
|
15815
15258
|
}
|
|
15259
|
+
case "horizontalRule": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
15260
|
+
className: "my-16 w-full h-px bg-border",
|
|
15261
|
+
"data-richtext-node": "horizontalRule"
|
|
15262
|
+
}, `hr-${index}`);
|
|
15816
15263
|
case "blockquote": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("blockquote", {
|
|
15817
15264
|
"data-richtext-node": "blockquote",
|
|
15818
15265
|
children: node.nodes.map((child, childIndex) => renderNodeToReact(child, childIndex, options))
|
|
@@ -15880,6 +15327,34 @@ var renderRichTextToReact = (document, options = {}) => {
|
|
|
15880
15327
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: document.nodes.map((node, index) => renderNodeToReact(node, index, options)) });
|
|
15881
15328
|
};
|
|
15882
15329
|
//#endregion
|
|
15330
|
+
//#region ../template/src/utils/QRcode.ts
|
|
15331
|
+
/**
|
|
15332
|
+
* Generates a QR code image in base64 format for the given text.
|
|
15333
|
+
*
|
|
15334
|
+
* @param {string} text - The text to encode in the QR code.
|
|
15335
|
+
* @param {boolean} [useDarkTheme=false] - Whether to use a dark theme for the QR code.
|
|
15336
|
+
* @return {string} The base64-encoded QR code image.
|
|
15337
|
+
*/
|
|
15338
|
+
var generateQRCode = (text, useDarkTheme = false) => {
|
|
15339
|
+
return `data:image/webp;base64,${generate({
|
|
15340
|
+
data: text,
|
|
15341
|
+
size: 1e3,
|
|
15342
|
+
dotsOptions: {
|
|
15343
|
+
dotType: "rounded",
|
|
15344
|
+
color: useDarkTheme ? "rgba(255, 255, 255, 0.9)" : "rgba(0, 0, 0, 0.8)"
|
|
15345
|
+
},
|
|
15346
|
+
cornersSquareOptions: {
|
|
15347
|
+
cornerType: "extra-rounded",
|
|
15348
|
+
color: useDarkTheme ? "rgba(255, 255, 255, 0.9)" : "rgba(0, 0, 0, 0.8)"
|
|
15349
|
+
},
|
|
15350
|
+
cornersDotOptions: {
|
|
15351
|
+
cornerType: "dot",
|
|
15352
|
+
color: useDarkTheme ? "rgba(255, 255, 255, 0.9)" : "rgba(0, 0, 0, 0.8)"
|
|
15353
|
+
},
|
|
15354
|
+
backgroundOptions: { transparent: true }
|
|
15355
|
+
}, "webp", "base64")}`;
|
|
15356
|
+
};
|
|
15357
|
+
//#endregion
|
|
15883
15358
|
//#region ../template/src/components/platforms/bilibili/Icons.tsx
|
|
15884
15359
|
/** B站官方点赞图标 */
|
|
15885
15360
|
var ThumbUpIcon = ({ className, size, variant = "solid" }) => {
|
|
@@ -16029,6 +15504,28 @@ var CoinIcon = ({ className, size, variant = "solid" }) => {
|
|
|
16029
15504
|
})
|
|
16030
15505
|
});
|
|
16031
15506
|
};
|
|
15507
|
+
/** B站官方浏览图标 */
|
|
15508
|
+
var ViewIcon = ({ className, size, variant = "solid" }) => {
|
|
15509
|
+
if (variant === "line") return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
15510
|
+
viewBox: "0 0 16 16",
|
|
15511
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
15512
|
+
className,
|
|
15513
|
+
fill: "currentColor",
|
|
15514
|
+
width: size,
|
|
15515
|
+
height: size,
|
|
15516
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M8 3.3320333333333334C6.321186666666667 3.3320333333333334 4.855333333333333 3.4174399999999996 3.820593333333333 3.5013466666666666C3.1014733333333333 3.5596599999999996 2.5440733333333334 4.109013333333333 2.48 4.821693333333333C2.4040466666666664 5.666533333333334 2.333333333333333 6.780666666666666 2.333333333333333 7.998666666666666C2.333333333333333 9.216733333333334 2.4040466666666664 10.330866666666665 2.48 11.175699999999999C2.5440733333333334 11.888366666666666 3.1014733333333333 12.437733333333334 3.820593333333333 12.496066666666666C4.855333333333333 12.579933333333333 6.321186666666667 12.665333333333333 8 12.665333333333333C9.678999999999998 12.665333333333333 11.144933333333334 12.579933333333333 12.179733333333333 12.496033333333333C12.898733333333332 12.4377 13.456 11.888533333333331 13.520066666666667 11.176033333333333C13.595999999999998 10.331533333333333 13.666666666666666 9.217633333333332 13.666666666666666 7.998666666666666C13.666666666666666 6.779766666666667 13.595999999999998 5.665846666666667 13.520066666666667 4.821366666666666C13.456 4.108866666666666 12.898733333333332 3.55968 12.179733333333333 3.5013666666666663C11.144933333333334 3.417453333333333 9.678999999999998 3.3320333333333334 8 3.3320333333333334zM3.7397666666666667 2.50462C4.794879999999999 2.41906 6.288386666666666 2.3320333333333334 8 2.3320333333333334C9.7118 2.3320333333333334 11.2054 2.4190733333333334 12.260533333333331 2.5046399999999998C13.458733333333331 2.6018133333333333 14.407866666666665 3.5285199999999994 14.516066666666667 4.73182C14.593933333333332 5.597933333333334 14.666666666666666 6.7427 14.666666666666666 7.998666666666666C14.666666666666666 9.2547 14.593933333333332 10.399466666666665 14.516066666666667 11.2656C14.407866666666665 12.468866666666665 13.458733333333331 13.395566666666667 12.260533333333331 13.492766666666665C11.2054 13.578333333333333 9.7118 13.665333333333333 8 13.665333333333333C6.288386666666666 13.665333333333333 4.794879999999999 13.578333333333333 3.7397666666666667 13.492799999999999C2.541373333333333 13.395599999999998 1.5922066666666668 12.468633333333333 1.4840200000000001 11.265266666666665C1.4061199999999998 10.3988 1.3333333333333333 9.253866666666667 1.3333333333333333 7.998666666666666C1.3333333333333333 6.743533333333333 1.4061199999999998 5.598579999999999 1.4840200000000001 4.732153333333333C1.5922066666666668 3.5287466666666667 2.541373333333333 2.601793333333333 3.7397666666666667 2.50462z" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M9.8092 7.3125C10.338433333333333 7.618066666666666 10.338433333333333 8.382 9.809166666666666 8.687533333333333L7.690799999999999 9.910599999999999C7.161566666666666 10.216133333333332 6.5 9.8342 6.500006666666666 9.223066666666666L6.500006666666666 6.776999999999999C6.500006666666666 6.165873333333334 7.161566666666666 5.783913333333333 7.690799999999999 6.089479999999999L9.8092 7.3125z" })]
|
|
15517
|
+
});
|
|
15518
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
|
|
15519
|
+
viewBox: "0 0 16 16",
|
|
15520
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
15521
|
+
className,
|
|
15522
|
+
fill: "currentColor",
|
|
15523
|
+
fillRule: "evenodd",
|
|
15524
|
+
width: size,
|
|
15525
|
+
height: size,
|
|
15526
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M3.7397666666666667 2.50462C4.794879999999999 2.41906 6.288386666666666 2.3320333333333334 8 2.3320333333333334C9.7118 2.3320333333333334 11.2054 2.4190733333333334 12.260533333333331 2.5046399999999998C13.458733333333331 2.6018133333333333 14.407866666666665 3.5285199999999994 14.516066666666667 4.73182C14.593933333333332 5.597933333333334 14.666666666666666 6.7427 14.666666666666666 7.998666666666666C14.666666666666666 9.2547 14.593933333333332 10.399466666666665 14.516066666666667 11.2656C14.407866666666665 12.468866666666665 13.458733333333331 13.395566666666667 12.260533333333331 13.492766666666665C11.2054 13.578333333333333 9.7118 13.665333333333333 8 13.665333333333333C6.288386666666666 13.665333333333333 4.794879999999999 13.578333333333333 3.7397666666666667 13.492799999999999C2.541373333333333 13.395599999999998 1.5922066666666668 12.468633333333333 1.4840200000000001 11.265266666666665C1.4061199999999998 10.3988 1.3333333333333333 9.253866666666667 1.3333333333333333 7.998666666666666C1.3333333333333333 6.743533333333333 1.4061199999999998 5.598579999999999 1.4840200000000001 4.732153333333333C1.5922066666666668 3.5287466666666667 2.541373333333333 2.601793333333333 3.7397666666666667 2.50462z M9.8092 7.3125L7.6908 6.0895C7.1616 5.7839 6.5 6.1659 6.5 6.777L6.5 9.2231C6.5 9.8342 7.1616 10.2161 7.6908 9.9106L9.8092 8.6875C10.3384 8.382 10.3384 7.6181 9.8092 7.3125z" })
|
|
15527
|
+
});
|
|
15528
|
+
};
|
|
16032
15529
|
/** B站官方评论图标 */
|
|
16033
15530
|
var CommentIcon = ({ className, size, variant = "solid" }) => {
|
|
16034
15531
|
if (variant === "line") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
|
|
@@ -16074,7 +15571,7 @@ var FansMedal = ({ detail }) => {
|
|
|
16074
15571
|
const nameColor = intToRgba(detail.medal_color_name);
|
|
16075
15572
|
const levelColor = intToRgba(detail.medal_color_level);
|
|
16076
15573
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16077
|
-
className:
|
|
15574
|
+
className: cn("inline-flex items-center shrink-0", "h-14 rounded-full border"),
|
|
16078
15575
|
style: {
|
|
16079
15576
|
borderColor,
|
|
16080
15577
|
backgroundImage: `linear-gradient(90deg, ${bgStart}, ${bgEnd})`
|
|
@@ -16086,7 +15583,7 @@ var FansMedal = ({ detail }) => {
|
|
|
16086
15583
|
referrerPolicy: "no-referrer",
|
|
16087
15584
|
crossOrigin: "anonymous"
|
|
16088
15585
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16089
|
-
className:
|
|
15586
|
+
className: cn("flex items-center", detail.first_icon ? "pr-4" : "px-4"),
|
|
16090
15587
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
16091
15588
|
className: "font-medium whitespace-nowrap text-3xl",
|
|
16092
15589
|
style: { color: nameColor },
|
|
@@ -16104,7 +15601,7 @@ var FansMedal = ({ detail }) => {
|
|
|
16104
15601
|
*/
|
|
16105
15602
|
var TopBadge = () => {
|
|
16106
15603
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
16107
|
-
className:
|
|
15604
|
+
className: cn("inline-flex justify-center items-center", "px-4 py-2 mr-4 mb-1 rounded-xl", "text-[45px] font-light leading-none", "align-baseline", "bg-[#ffedf5] text-[#ff799e]", "dark:bg-[#321b26] dark:text-[#cb5775]"),
|
|
16108
15605
|
children: "置顶"
|
|
16109
15606
|
});
|
|
16110
15607
|
};
|
|
@@ -16152,10 +15649,10 @@ var formatBilibiliLikeCount = (count) => {
|
|
|
16152
15649
|
};
|
|
16153
15650
|
var renderBilibiliUserName = (uname, unameColor, vipstatus) => {
|
|
16154
15651
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
16155
|
-
className: "inline-block leading-[1.2]",
|
|
15652
|
+
className: "inline-block leading-[1.2] font-medium whitespace-nowrap",
|
|
16156
15653
|
style: {
|
|
16157
15654
|
color: unameColor ?? "#888",
|
|
16158
|
-
fontWeight: vipstatus === 1 ?
|
|
15655
|
+
fontWeight: vipstatus === 1 ? 500 : void 0
|
|
16159
15656
|
},
|
|
16160
15657
|
children: uname
|
|
16161
15658
|
});
|
|
@@ -16178,21 +15675,15 @@ var BilibiliLogo = () => {
|
|
|
16178
15675
|
* @param props 组件属性
|
|
16179
15676
|
* @returns JSX元素
|
|
16180
15677
|
*/
|
|
16181
|
-
var QRCodeSection$
|
|
15678
|
+
var QRCodeSection$1 = ({ share_url, useDarkTheme }) => {
|
|
16182
15679
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16183
15680
|
className: "flex flex-col items-center",
|
|
16184
15681
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16185
15682
|
className: "flex justify-center items-center w-100 h-100 p-4",
|
|
16186
|
-
children:
|
|
16187
|
-
src:
|
|
15683
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
15684
|
+
src: generateQRCode(share_url, useDarkTheme),
|
|
16188
15685
|
alt: "二维码",
|
|
16189
15686
|
className: "object-contain w-full h-full rounded-lg"
|
|
16190
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16191
|
-
className: "flex flex-col justify-center items-center text-muted",
|
|
16192
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
16193
|
-
className: "text-lg",
|
|
16194
|
-
children: "二维码生成失败"
|
|
16195
|
-
})
|
|
16196
15687
|
})
|
|
16197
15688
|
})
|
|
16198
15689
|
});
|
|
@@ -16279,7 +15770,10 @@ var VideoInfoHeader$1 = (props) => {
|
|
|
16279
15770
|
})]
|
|
16280
15771
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16281
15772
|
className: "shrink-0",
|
|
16282
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(QRCodeSection$
|
|
15773
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(QRCodeSection$1, {
|
|
15774
|
+
share_url: props.share_url,
|
|
15775
|
+
useDarkTheme: props.useDarkTheme
|
|
15776
|
+
})
|
|
16283
15777
|
})]
|
|
16284
15778
|
})
|
|
16285
15779
|
});
|
|
@@ -16291,7 +15785,7 @@ var VideoInfoHeader$1 = (props) => {
|
|
|
16291
15785
|
*/
|
|
16292
15786
|
var CommentItemComponent$2 = ({ isLast = false, ...props }) => {
|
|
16293
15787
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16294
|
-
className:
|
|
15788
|
+
className: cn("flex relative px-10 py-10 max-w-full", { "pb-0": isLast }),
|
|
16295
15789
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16296
15790
|
className: "relative mr-[33.75px] shrink-0 w-50 h-50 flex items-center justify-center",
|
|
16297
15791
|
children: [
|
|
@@ -16640,10 +16134,7 @@ var BilibiliComment = import_react.memo((props) => {
|
|
|
16640
16134
|
className: "p-5",
|
|
16641
16135
|
children: [
|
|
16642
16136
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-20" }),
|
|
16643
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(VideoInfoHeader$1, {
|
|
16644
|
-
...processedData,
|
|
16645
|
-
qrCodeDataUrl: props.qrCodeDataUrl
|
|
16646
|
-
}),
|
|
16137
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(VideoInfoHeader$1, { ...processedData }),
|
|
16647
16138
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16648
16139
|
className: "overflow-hidden mt-8",
|
|
16649
16140
|
children: processedData.CommentsData.length > 0 ? processedData.CommentsData.map((comment, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommentItemComponent$2, {
|
|
@@ -16946,16 +16437,10 @@ var BilibiliArticleFooter = import_react.memo((props) => {
|
|
|
16946
16437
|
})]
|
|
16947
16438
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16948
16439
|
className: "flex flex-col items-center gap-4",
|
|
16949
|
-
children:
|
|
16950
|
-
src: props.
|
|
16440
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
16441
|
+
src: generateQRCode(props.data.share_url, props.data.useDarkTheme),
|
|
16951
16442
|
alt: "二维码",
|
|
16952
16443
|
className: "h-auto w-75 rounded-2xl"
|
|
16953
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16954
|
-
className: "flex justify-center items-center rounded-2xl bg-surface w-100 h-100",
|
|
16955
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
16956
|
-
className: "text-muted",
|
|
16957
|
-
children: "二维码"
|
|
16958
|
-
})
|
|
16959
16444
|
})
|
|
16960
16445
|
})]
|
|
16961
16446
|
});
|
|
@@ -16984,164 +16469,314 @@ var BilibiliArticleDynamic = import_react.memo((props) => {
|
|
|
16984
16469
|
});
|
|
16985
16470
|
BilibiliArticleDynamic.displayName = "BilibiliArticleDynamic";
|
|
16986
16471
|
//#endregion
|
|
16987
|
-
//#region ../template/src/components/platforms/bilibili/dynamic/
|
|
16472
|
+
//#region ../template/src/components/platforms/bilibili/dynamic/CommonComponents.tsx
|
|
16988
16473
|
/**
|
|
16989
|
-
* B
|
|
16474
|
+
* B站动态用户信息组件
|
|
16990
16475
|
*/
|
|
16991
|
-
var
|
|
16992
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
16993
|
-
|
|
16994
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16995
|
-
className: "flex items-center
|
|
16996
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.
|
|
16997
|
-
|
|
16998
|
-
|
|
16999
|
-
|
|
17000
|
-
|
|
17001
|
-
|
|
17002
|
-
|
|
16476
|
+
var BilibiliDynamicUserInfo = (props) => {
|
|
16477
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16478
|
+
className: "flex gap-10 items-center justify-between px-0 pb-0 pl-24 pr-10",
|
|
16479
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16480
|
+
className: "flex gap-10 items-center",
|
|
16481
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16482
|
+
className: "relative",
|
|
16483
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
16484
|
+
src: props.avatar_url,
|
|
16485
|
+
alt: "头像",
|
|
16486
|
+
className: "w-32 h-32 rounded-full shadow-medium",
|
|
16487
|
+
isCircular: true
|
|
16488
|
+
}), props.frame && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
16489
|
+
src: props.frame,
|
|
16490
|
+
alt: "头像框",
|
|
16491
|
+
className: "absolute inset-0 transform scale-180"
|
|
16492
|
+
})]
|
|
16493
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16494
|
+
className: "flex flex-col gap-8 text-7xl",
|
|
16495
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16496
|
+
className: "text-6xl font-bold select-text text-foreground",
|
|
16497
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UsernameDisplay, { metadata: props.usernameMeta })
|
|
16498
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16499
|
+
className: "flex gap-2 items-center text-4xl font-normal whitespace-nowrap text-muted",
|
|
16500
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(c, {
|
|
16501
|
+
size: 40,
|
|
16502
|
+
weight: "fill"
|
|
16503
|
+
}), props.create_time]
|
|
16504
|
+
})]
|
|
17003
16505
|
})]
|
|
17004
|
-
}),
|
|
17005
|
-
|
|
17006
|
-
|
|
16506
|
+
}), props.decoration_card && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16507
|
+
className: "shrink-0",
|
|
16508
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DecorationCard, { data: props.decoration_card })
|
|
16509
|
+
})]
|
|
16510
|
+
});
|
|
17007
16511
|
};
|
|
17008
16512
|
/**
|
|
17009
|
-
* B
|
|
16513
|
+
* B站动态状态组件
|
|
17010
16514
|
*/
|
|
17011
|
-
var
|
|
17012
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
17013
|
-
className: "flex flex-col
|
|
17014
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17015
|
-
className: "flex overflow-hidden relative flex-col flex-1 items-center w-11/12 rounded-5xl shadow-large",
|
|
17016
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
17017
|
-
src: props.data.image_url,
|
|
17018
|
-
alt: "封面",
|
|
17019
|
-
className: "object-contain w-full h-full rounded-3xl"
|
|
17020
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17021
|
-
className: "flex absolute bottom-12 right-16",
|
|
17022
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
17023
|
-
src: "/image/bilibili/play.svg",
|
|
17024
|
-
alt: "播放图标",
|
|
17025
|
-
className: "w-40 h-40"
|
|
17026
|
-
})
|
|
17027
|
-
})]
|
|
17028
|
-
})
|
|
17029
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-10" })] }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17030
|
-
className: "flex flex-col w-full leading-relaxed px-16",
|
|
16515
|
+
var BilibiliDynamicStatus = (props) => {
|
|
16516
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16517
|
+
className: "flex flex-col gap-10 px-18 w-full leading-relaxed",
|
|
17031
16518
|
children: [
|
|
17032
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
17033
|
-
className: "
|
|
17034
|
-
children:
|
|
17035
|
-
|
|
17036
|
-
|
|
17037
|
-
|
|
17038
|
-
|
|
17039
|
-
|
|
17040
|
-
|
|
17041
|
-
|
|
16519
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16520
|
+
className: "flex gap-6 items-center text-5xl font-light tracking-normal select-text text-foreground/70",
|
|
16521
|
+
children: [
|
|
16522
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16523
|
+
className: "flex gap-2 items-center",
|
|
16524
|
+
children: [
|
|
16525
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThumbUpIcon, {
|
|
16526
|
+
size: 50,
|
|
16527
|
+
className: "mt-2"
|
|
16528
|
+
}),
|
|
16529
|
+
props.dianzan,
|
|
16530
|
+
"点赞"
|
|
16531
|
+
]
|
|
16532
|
+
}),
|
|
16533
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "·" }),
|
|
16534
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16535
|
+
className: "flex gap-2 items-center",
|
|
16536
|
+
children: [
|
|
16537
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommentIcon, { size: 48 }),
|
|
16538
|
+
props.pinglun,
|
|
16539
|
+
"评论"
|
|
16540
|
+
]
|
|
16541
|
+
}),
|
|
16542
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "·" }),
|
|
16543
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16544
|
+
className: "flex gap-2 items-center",
|
|
16545
|
+
children: [
|
|
16546
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ShareIcon, { size: 48 }),
|
|
16547
|
+
props.share,
|
|
16548
|
+
"分享"
|
|
16549
|
+
]
|
|
16550
|
+
})
|
|
16551
|
+
]
|
|
17042
16552
|
}),
|
|
17043
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
17044
|
-
|
|
17045
|
-
|
|
17046
|
-
|
|
17047
|
-
|
|
17048
|
-
|
|
17049
|
-
|
|
17050
|
-
|
|
17051
|
-
|
|
17052
|
-
|
|
17053
|
-
})
|
|
16553
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16554
|
+
className: "flex gap-2 items-center text-5xl font-light tracking-normal select-text text-foreground/70",
|
|
16555
|
+
children: [
|
|
16556
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(c, {
|
|
16557
|
+
size: 52,
|
|
16558
|
+
weight: "fill"
|
|
16559
|
+
}),
|
|
16560
|
+
"图片生成于: ",
|
|
16561
|
+
props.render_time
|
|
16562
|
+
]
|
|
17054
16563
|
}),
|
|
17055
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-30" }),
|
|
17056
16564
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17057
|
-
className: "flex
|
|
16565
|
+
className: "flex gap-2 items-center text-5xl font-light tracking-normal select-text text-[#006A9E] dark:text-[#58B0D5]",
|
|
16566
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Link, { size: 46 }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: ["https://t.bilibili.com/", props.dynamic_id] })]
|
|
16567
|
+
})
|
|
16568
|
+
]
|
|
16569
|
+
});
|
|
16570
|
+
};
|
|
16571
|
+
/**
|
|
16572
|
+
* B站动态底部信息组件
|
|
16573
|
+
*/
|
|
16574
|
+
var BilibiliDynamicFooter = (props) => {
|
|
16575
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16576
|
+
className: "flex justify-between items-start px-20 pb-20",
|
|
16577
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16578
|
+
className: "flex flex-col gap-12",
|
|
16579
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16580
|
+
className: "flex gap-12 items-start",
|
|
17058
16581
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17059
|
-
className: "
|
|
17060
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.
|
|
17061
|
-
|
|
16582
|
+
className: "relative shrink-0",
|
|
16583
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
16584
|
+
src: props.avatar_url,
|
|
16585
|
+
alt: "头像",
|
|
16586
|
+
className: "rounded-full shadow-medium w-35 h-auto",
|
|
16587
|
+
isCircular: true
|
|
16588
|
+
}), props.frame && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
16589
|
+
src: props.frame,
|
|
16590
|
+
alt: "头像框",
|
|
16591
|
+
className: "absolute inset-0 transform scale-180"
|
|
16592
|
+
})]
|
|
16593
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16594
|
+
className: "flex flex-col gap-5",
|
|
16595
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16596
|
+
className: "text-7xl font-bold select-text",
|
|
16597
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UsernameDisplay, { metadata: props.usernameMeta })
|
|
16598
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16599
|
+
className: "flex gap-2 items-center text-4xl text-muted",
|
|
16600
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
16601
|
+
className: "text-muted select-text",
|
|
16602
|
+
children: ["UID: ", props.user_shortid]
|
|
16603
|
+
})
|
|
16604
|
+
})]
|
|
16605
|
+
})]
|
|
16606
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16607
|
+
className: "text-3xl flex gap-6 items-center text-foreground/70",
|
|
16608
|
+
children: [
|
|
16609
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16610
|
+
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
17062
16611
|
children: [
|
|
17063
16612
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17064
|
-
className: "flex gap-
|
|
17065
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThumbUpIcon, { size:
|
|
17066
|
-
className: "
|
|
17067
|
-
children:
|
|
17068
|
-
})]
|
|
17069
|
-
}),
|
|
17070
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17071
|
-
className: "flex gap-3 items-center",
|
|
17072
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommentIcon, { size: 48 }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
17073
|
-
className: "select-text",
|
|
17074
|
-
children: [props.data.pinglun, "评论"]
|
|
16613
|
+
className: "flex gap-1 items-center",
|
|
16614
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThumbUpIcon, { size: 36 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
16615
|
+
className: "text-muted",
|
|
16616
|
+
children: "获赞"
|
|
17075
16617
|
})]
|
|
17076
16618
|
}),
|
|
17077
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
17078
|
-
|
|
17079
|
-
|
|
17080
|
-
|
|
17081
|
-
children: [props.data.share, "分享"]
|
|
17082
|
-
})]
|
|
16619
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
16620
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
16621
|
+
className: "select-text font-medium text-4xl",
|
|
16622
|
+
children: props.total_favorited
|
|
17083
16623
|
})
|
|
17084
16624
|
]
|
|
17085
|
-
}),
|
|
17086
|
-
|
|
16625
|
+
}),
|
|
16626
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16627
|
+
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
17087
16628
|
children: [
|
|
17088
16629
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17089
|
-
className: "flex gap-
|
|
17090
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
17091
|
-
className: "
|
|
17092
|
-
children:
|
|
16630
|
+
className: "flex gap-1 items-center",
|
|
16631
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ViewIcon, { size: 36 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
16632
|
+
className: "text-muted",
|
|
16633
|
+
children: "关注"
|
|
17093
16634
|
})]
|
|
17094
16635
|
}),
|
|
16636
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
16637
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
16638
|
+
className: "select-text font-medium text-4xl",
|
|
16639
|
+
children: props.following_count
|
|
16640
|
+
})
|
|
16641
|
+
]
|
|
16642
|
+
}),
|
|
16643
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16644
|
+
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
16645
|
+
children: [
|
|
17095
16646
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17096
|
-
className: "flex gap-
|
|
17097
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
17098
|
-
|
|
17099
|
-
|
|
16647
|
+
className: "flex gap-1 items-center",
|
|
16648
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(o, {
|
|
16649
|
+
size: 36,
|
|
16650
|
+
weight: "fill"
|
|
16651
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
16652
|
+
className: "text-muted",
|
|
16653
|
+
children: "粉丝"
|
|
17100
16654
|
})]
|
|
17101
16655
|
}),
|
|
17102
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
17103
|
-
|
|
17104
|
-
|
|
17105
|
-
|
|
17106
|
-
children: ["视频时长: ", props.data.duration_text]
|
|
17107
|
-
})]
|
|
16656
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
16657
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
16658
|
+
className: "select-text font-medium text-4xl",
|
|
16659
|
+
children: props.fans
|
|
17108
16660
|
})
|
|
17109
16661
|
]
|
|
16662
|
+
})
|
|
16663
|
+
]
|
|
16664
|
+
})]
|
|
16665
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16666
|
+
className: "flex flex-col items-center gap-4",
|
|
16667
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
16668
|
+
src: generateQRCode(props.share_url, props.useDarkTheme),
|
|
16669
|
+
alt: "二维码",
|
|
16670
|
+
className: "h-auto w-75 rounded-2xl"
|
|
16671
|
+
})
|
|
16672
|
+
})]
|
|
16673
|
+
});
|
|
16674
|
+
};
|
|
16675
|
+
//#endregion
|
|
16676
|
+
//#region ../template/src/components/platforms/bilibili/dynamic/DYNAMIC_TYPE_AV.tsx
|
|
16677
|
+
/**
|
|
16678
|
+
* B站视频内容组件
|
|
16679
|
+
*/
|
|
16680
|
+
var BilibiliVideoContent = (props) => {
|
|
16681
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16682
|
+
className: "px-16",
|
|
16683
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16684
|
+
className: "px-12 py-12 rounded-8xl bg-surface-secondary",
|
|
16685
|
+
children: [props.data.image_url && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16686
|
+
className: "items-center",
|
|
16687
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16688
|
+
className: "flex overflow-hidden relative flex-col flex-1 items-center rounded-5xl shadow-large",
|
|
16689
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
16690
|
+
src: props.data.image_url,
|
|
16691
|
+
alt: "封面",
|
|
16692
|
+
className: "object-contain w-full h-full rounded-3xl"
|
|
16693
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16694
|
+
className: "flex absolute bottom-12 right-16",
|
|
16695
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
16696
|
+
src: "/image/bilibili/play.svg",
|
|
16697
|
+
alt: "播放图标",
|
|
16698
|
+
className: "w-40 h-40"
|
|
16699
|
+
})
|
|
17110
16700
|
})]
|
|
17111
|
-
})
|
|
17112
|
-
|
|
17113
|
-
|
|
17114
|
-
|
|
17115
|
-
|
|
17116
|
-
|
|
17117
|
-
|
|
17118
|
-
|
|
17119
|
-
}
|
|
17120
|
-
|
|
17121
|
-
|
|
17122
|
-
className: "
|
|
17123
|
-
|
|
17124
|
-
}),
|
|
17125
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17126
|
-
className: "flex gap-3 items-center",
|
|
17127
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Hash, { size: 32 }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
17128
|
-
className: "select-text",
|
|
17129
|
-
children: ["动态ID: ", props.data.dynamic_id]
|
|
17130
|
-
})]
|
|
16701
|
+
})
|
|
16702
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-10" })] }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16703
|
+
className: "flex flex-col w-full leading-relaxed",
|
|
16704
|
+
children: [
|
|
16705
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16706
|
+
className: "relative items-center text-6xl font-bold tracking-wider wrap-break-word text-foreground leading-tight",
|
|
16707
|
+
children: props.data.text && renderRichTextToReact(props.data.text, {
|
|
16708
|
+
at: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16709
|
+
topic: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16710
|
+
lottery: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16711
|
+
webLink: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16712
|
+
vote: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16713
|
+
viewPicture: { className: "text-[#006A9E] dark:text-[#58B0D5]" }
|
|
17131
16714
|
})
|
|
17132
|
-
|
|
17133
|
-
|
|
17134
|
-
|
|
17135
|
-
|
|
17136
|
-
|
|
17137
|
-
|
|
16715
|
+
}),
|
|
16716
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-10" }),
|
|
16717
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16718
|
+
className: "text-5xl text-muted leading-normal wrap-break-word break-keep",
|
|
16719
|
+
children: props.data.desc && renderRichTextToReact(props.data.desc, {
|
|
16720
|
+
at: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16721
|
+
topic: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16722
|
+
lottery: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16723
|
+
webLink: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16724
|
+
vote: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16725
|
+
viewPicture: { className: "text-[#006A9E] dark:text-[#58B0D5]" }
|
|
16726
|
+
})
|
|
16727
|
+
}),
|
|
16728
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-20" }),
|
|
16729
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16730
|
+
className: "flex flex-col gap-8 text-foreground/70",
|
|
16731
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16732
|
+
className: "flex gap-12 items-center text-5xl font-light tracking-normal",
|
|
16733
|
+
children: [
|
|
16734
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16735
|
+
className: "flex gap-3 items-center",
|
|
16736
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CoinIcon, { size: 52 }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
16737
|
+
className: "select-text",
|
|
16738
|
+
children: [props.data.coin, "硬币"]
|
|
16739
|
+
})]
|
|
16740
|
+
}),
|
|
16741
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16742
|
+
className: "flex gap-3 items-center",
|
|
16743
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ViewIcon, {
|
|
16744
|
+
size: 52,
|
|
16745
|
+
variant: "solid"
|
|
16746
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
16747
|
+
className: "select-text",
|
|
16748
|
+
children: [props.data.view, "播放"]
|
|
16749
|
+
})]
|
|
16750
|
+
}),
|
|
16751
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16752
|
+
className: "flex gap-3 items-center text-5xl font-light tracking-normal",
|
|
16753
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(c, {
|
|
16754
|
+
size: 52,
|
|
16755
|
+
weight: "fill"
|
|
16756
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
16757
|
+
className: "select-text",
|
|
16758
|
+
children: [
|
|
16759
|
+
"时长(",
|
|
16760
|
+
props.data.page_length,
|
|
16761
|
+
"P): ",
|
|
16762
|
+
props.data.duration_text
|
|
16763
|
+
]
|
|
16764
|
+
})]
|
|
16765
|
+
})
|
|
16766
|
+
]
|
|
16767
|
+
})
|
|
16768
|
+
}),
|
|
16769
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-2" })
|
|
16770
|
+
]
|
|
16771
|
+
})]
|
|
16772
|
+
})
|
|
16773
|
+
});
|
|
17138
16774
|
};
|
|
17139
16775
|
/**
|
|
17140
|
-
* B
|
|
16776
|
+
* B站视频动态共创者组件
|
|
17141
16777
|
*/
|
|
17142
|
-
var
|
|
16778
|
+
var BilibiliVideoStaff = (props) => {
|
|
17143
16779
|
const otherStaff = props.data.staff?.filter((member) => member.mid !== Number(props.data.user_shortid)) || [];
|
|
17144
|
-
const currentUserRole = props.data.staff?.find((member) => member.mid === Number(props.data.user_shortid))?.title;
|
|
17145
16780
|
const listRef = import_react.useRef(null);
|
|
17146
16781
|
const [visibleCount, setVisibleCount] = import_react.useState(otherStaff.length);
|
|
17147
16782
|
import_react.useEffect(() => {
|
|
@@ -17156,167 +16791,59 @@ var BilibiliVideoDynamicFooter = (props) => {
|
|
|
17156
16791
|
window.addEventListener("resize", calc);
|
|
17157
16792
|
return () => window.removeEventListener("resize", calc);
|
|
17158
16793
|
}, [otherStaff.length]);
|
|
17159
|
-
|
|
17160
|
-
|
|
17161
|
-
|
|
17162
|
-
|
|
17163
|
-
|
|
17164
|
-
|
|
17165
|
-
|
|
17166
|
-
|
|
17167
|
-
|
|
17168
|
-
|
|
17169
|
-
|
|
17170
|
-
|
|
17171
|
-
|
|
17172
|
-
|
|
17173
|
-
|
|
17174
|
-
isCircular: true
|
|
17175
|
-
})
|
|
17176
|
-
}),
|
|
17177
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17178
|
-
className: "overflow-hidden mt-6 w-full text-3xl font-medium leading-tight text-center truncate whitespace-nowrap select-text text-foreground",
|
|
17179
|
-
children: member.name
|
|
17180
|
-
}),
|
|
17181
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17182
|
-
className: "overflow-hidden mt-2 w-full text-3xl leading-tight text-center truncate whitespace-nowrap select-text text-muted",
|
|
17183
|
-
children: member.title
|
|
17184
|
-
})
|
|
17185
|
-
]
|
|
17186
|
-
}, member.mid)), otherStaff.length > visibleCount && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17187
|
-
className: "flex flex-col items-center min-w-42 w-42 shrink-0",
|
|
17188
|
-
children: [
|
|
17189
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17190
|
-
className: "flex justify-center items-center rounded-full bg-surface-secondary w-30 h-30",
|
|
17191
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17192
|
-
className: "text-[42px] leading-none text-muted",
|
|
17193
|
-
children: "···"
|
|
17194
|
-
})
|
|
17195
|
-
}),
|
|
17196
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17197
|
-
className: "overflow-hidden mt-6 w-full text-3xl font-medium leading-tight text-center truncate whitespace-nowrap select-text text-foreground",
|
|
17198
|
-
children: [
|
|
17199
|
-
"还有",
|
|
17200
|
-
otherStaff.length - visibleCount,
|
|
17201
|
-
"人"
|
|
17202
|
-
]
|
|
17203
|
-
}),
|
|
17204
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17205
|
-
className: "overflow-hidden mt-2 w-full text-3xl leading-tight text-center truncate whitespace-nowrap select-text text-muted",
|
|
17206
|
-
children: "共创"
|
|
17207
|
-
})
|
|
17208
|
-
]
|
|
17209
|
-
})]
|
|
17210
|
-
})
|
|
17211
|
-
}),
|
|
17212
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-15" }),
|
|
17213
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17214
|
-
className: "flex justify-between items-start px-20 pb-20",
|
|
17215
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17216
|
-
className: "flex flex-col gap-12",
|
|
17217
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17218
|
-
className: "flex gap-12 items-start",
|
|
17219
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17220
|
-
className: "relative shrink-0",
|
|
17221
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
17222
|
-
src: props.data.avatar_url,
|
|
17223
|
-
alt: "头像",
|
|
17224
|
-
className: "rounded-full shadow-medium w-35 h-auto",
|
|
16794
|
+
if (otherStaff.length === 0) return null;
|
|
16795
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16796
|
+
className: "flex flex-col px-20 w-full",
|
|
16797
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16798
|
+
ref: listRef,
|
|
16799
|
+
className: "flex overflow-hidden gap-8 py-1 w-full",
|
|
16800
|
+
children: [otherStaff.slice(0, visibleCount).map((member) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16801
|
+
className: "flex flex-col items-center min-w-42 w-42 shrink-0",
|
|
16802
|
+
children: [
|
|
16803
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16804
|
+
className: "flex justify-center items-center bg-white rounded-full w-30 h-30",
|
|
16805
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
16806
|
+
src: member.face,
|
|
16807
|
+
alt: member.name,
|
|
16808
|
+
className: "object-cover w-28 h-28 rounded-full",
|
|
17225
16809
|
isCircular: true
|
|
17226
|
-
}), props.data.frame && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
17227
|
-
src: props.data.frame,
|
|
17228
|
-
alt: "头像框",
|
|
17229
|
-
className: "absolute inset-0 transform scale-180"
|
|
17230
|
-
})]
|
|
17231
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17232
|
-
className: "flex flex-col gap-5",
|
|
17233
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17234
|
-
className: "text-7xl font-bold select-text text-foreground",
|
|
17235
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UsernameDisplay, { metadata: props.data.usernameMeta })
|
|
17236
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17237
|
-
className: "flex gap-2 items-center text-4xl text-muted",
|
|
17238
|
-
children: [
|
|
17239
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Hash, { size: 32 }),
|
|
17240
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: ["UID: ", props.data.user_shortid] }),
|
|
17241
|
-
currentUserRole && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17242
|
-
className: "ml-5 px-3 py-1 rounded-xl bg-surface-secondary text-3xl",
|
|
17243
|
-
children: currentUserRole
|
|
17244
|
-
})
|
|
17245
|
-
]
|
|
17246
|
-
})]
|
|
17247
|
-
})]
|
|
17248
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17249
|
-
className: "text-3xl flex gap-6 items-center text-foreground/70",
|
|
17250
|
-
children: [
|
|
17251
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17252
|
-
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
17253
|
-
children: [
|
|
17254
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17255
|
-
className: "flex gap-1 items-center",
|
|
17256
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThumbUpIcon, { size: 28 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17257
|
-
className: "text-muted",
|
|
17258
|
-
children: "获赞"
|
|
17259
|
-
})]
|
|
17260
|
-
}),
|
|
17261
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
17262
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17263
|
-
className: "select-text font-medium text-4xl",
|
|
17264
|
-
children: props.data.total_favorited
|
|
17265
|
-
})
|
|
17266
|
-
]
|
|
17267
|
-
}),
|
|
17268
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17269
|
-
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
17270
|
-
children: [
|
|
17271
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17272
|
-
className: "flex gap-1 items-center",
|
|
17273
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Eye, { size: 28 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17274
|
-
className: "text-muted",
|
|
17275
|
-
children: "关注"
|
|
17276
|
-
})]
|
|
17277
|
-
}),
|
|
17278
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
17279
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17280
|
-
className: "select-text font-medium text-4xl",
|
|
17281
|
-
children: props.data.following_count
|
|
17282
|
-
})
|
|
17283
|
-
]
|
|
17284
|
-
}),
|
|
17285
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17286
|
-
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
17287
|
-
children: [
|
|
17288
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17289
|
-
className: "flex gap-1 items-center",
|
|
17290
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(UsersRound, { size: 28 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17291
|
-
className: "text-muted",
|
|
17292
|
-
children: "粉丝"
|
|
17293
|
-
})]
|
|
17294
|
-
}),
|
|
17295
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
17296
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17297
|
-
className: "select-text font-medium text-4xl",
|
|
17298
|
-
children: props.data.fans
|
|
17299
|
-
})
|
|
17300
|
-
]
|
|
17301
16810
|
})
|
|
17302
|
-
|
|
17303
|
-
|
|
17304
|
-
|
|
17305
|
-
|
|
17306
|
-
|
|
17307
|
-
|
|
17308
|
-
|
|
17309
|
-
|
|
17310
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17311
|
-
className: "flex justify-center items-center rounded-xl bg-surface w-100 h-100",
|
|
17312
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17313
|
-
className: "text-muted",
|
|
17314
|
-
children: "二维码"
|
|
16811
|
+
}),
|
|
16812
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16813
|
+
className: "overflow-hidden mt-6 w-full text-3xl font-medium leading-tight text-center truncate whitespace-nowrap select-text text-foreground",
|
|
16814
|
+
children: member.name
|
|
16815
|
+
}),
|
|
16816
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16817
|
+
className: "overflow-hidden mt-2 w-full text-3xl leading-tight text-center truncate whitespace-nowrap select-text text-muted",
|
|
16818
|
+
children: member.title
|
|
17315
16819
|
})
|
|
17316
|
-
|
|
16820
|
+
]
|
|
16821
|
+
}, member.mid)), otherStaff.length > visibleCount && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16822
|
+
className: "flex flex-col items-center min-w-42 w-42 shrink-0",
|
|
16823
|
+
children: [
|
|
16824
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16825
|
+
className: "flex justify-center items-center rounded-full bg-surface-secondary w-30 h-30",
|
|
16826
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
16827
|
+
className: "text-[42px] leading-none text-muted",
|
|
16828
|
+
children: "···"
|
|
16829
|
+
})
|
|
16830
|
+
}),
|
|
16831
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16832
|
+
className: "overflow-hidden mt-6 w-full text-3xl font-medium leading-tight text-center truncate whitespace-nowrap select-text text-foreground",
|
|
16833
|
+
children: [
|
|
16834
|
+
"还有",
|
|
16835
|
+
otherStaff.length - visibleCount,
|
|
16836
|
+
"人"
|
|
16837
|
+
]
|
|
16838
|
+
}),
|
|
16839
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16840
|
+
className: "overflow-hidden mt-2 w-full text-3xl leading-tight text-center truncate whitespace-nowrap select-text text-muted",
|
|
16841
|
+
children: "共创"
|
|
16842
|
+
})
|
|
16843
|
+
]
|
|
17317
16844
|
})]
|
|
17318
|
-
})
|
|
17319
|
-
|
|
16845
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-15" })]
|
|
16846
|
+
});
|
|
17320
16847
|
};
|
|
17321
16848
|
/**
|
|
17322
16849
|
* B站视频动态组件
|
|
@@ -17327,9 +16854,39 @@ var BilibiliVideoDynamic = import_react.memo((props) => {
|
|
|
17327
16854
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17328
16855
|
className: "p-4",
|
|
17329
16856
|
children: [
|
|
17330
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
17331
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
17332
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
16857
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-25" }),
|
|
16858
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicUserInfo, { ...props.data }),
|
|
16859
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-15" }),
|
|
16860
|
+
props.data.dynamic_text && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
16861
|
+
className: "flex flex-col px-20 w-full leading-relaxed",
|
|
16862
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16863
|
+
className: "relative items-center text-5xl tracking-wider wrap-break-word text-foreground",
|
|
16864
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
16865
|
+
className: "text-[60px] tracking-[0.5px] leading-[1.6] whitespace-pre-wrap text-foreground select-text",
|
|
16866
|
+
style: {
|
|
16867
|
+
wordBreak: "break-word",
|
|
16868
|
+
overflowWrap: "break-word"
|
|
16869
|
+
},
|
|
16870
|
+
children: props.data.dynamic_text.nodes.length > 0 ? renderRichTextToReact(props.data.dynamic_text, {
|
|
16871
|
+
at: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16872
|
+
topic: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16873
|
+
lottery: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16874
|
+
webLink: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16875
|
+
vote: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
16876
|
+
viewPicture: { className: "text-[#006A9E] dark:text-[#58B0D5]" }
|
|
16877
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
16878
|
+
className: "text-default-foreground/50",
|
|
16879
|
+
children: "投稿了视频"
|
|
16880
|
+
})
|
|
16881
|
+
})
|
|
16882
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-15" })]
|
|
16883
|
+
}),
|
|
16884
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliVideoContent, { ...props }),
|
|
16885
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-15" }),
|
|
16886
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicStatus, { ...props.data }),
|
|
16887
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cn(props.data.staff && props.data.staff.length > 0 && "h-23", !props.data.staff && "h-40") }),
|
|
16888
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliVideoStaff, { ...props }),
|
|
16889
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicFooter, { ...props.data })
|
|
17333
16890
|
]
|
|
17334
16891
|
})
|
|
17335
16892
|
});
|
|
@@ -17343,7 +16900,7 @@ BilibiliVideoDynamic.displayName = "BilibiliVideoDynamic";
|
|
|
17343
16900
|
var BilibiliReserveCard = ({ reserve }) => {
|
|
17344
16901
|
if (!reserve) return null;
|
|
17345
16902
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17346
|
-
className: "overflow-hidden rounded-
|
|
16903
|
+
className: "overflow-hidden rounded-4xl bg-surface",
|
|
17347
16904
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17348
16905
|
className: "flex gap-8 justify-between items-center px-10 py-10",
|
|
17349
16906
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -17391,7 +16948,7 @@ var BilibiliVoteCard = ({ vote }) => {
|
|
|
17391
16948
|
if (!vote) return null;
|
|
17392
16949
|
const isEnded = vote.status === 4;
|
|
17393
16950
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17394
|
-
className: "overflow-hidden rounded-
|
|
16951
|
+
className: "overflow-hidden rounded-4xl bg-surface",
|
|
17395
16952
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17396
16953
|
className: "flex gap-8 items-center px-10 py-8",
|
|
17397
16954
|
children: [
|
|
@@ -17496,7 +17053,7 @@ var BilibiliUgcCard = ({ ugc }) => {
|
|
|
17496
17053
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
17497
17054
|
src: ugc.cover,
|
|
17498
17055
|
alt: ugc.title,
|
|
17499
|
-
className: "h-52 w-auto rounded-
|
|
17056
|
+
className: "h-52 w-auto rounded-4xl"
|
|
17500
17057
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17501
17058
|
className: "absolute bottom-7 right-7 px-3 py-1 rounded-lg bg-black/70 text-white text-3xl",
|
|
17502
17059
|
children: ugc.duration
|
|
@@ -17517,10 +17074,10 @@ var BilibiliUgcCard = ({ ugc }) => {
|
|
|
17517
17074
|
/**
|
|
17518
17075
|
* B站相关卡片容器组件
|
|
17519
17076
|
*/
|
|
17520
|
-
var BilibiliAdditionalCard = ({ additional }) => {
|
|
17077
|
+
var BilibiliAdditionalCard = ({ additional, gap = true, className }) => {
|
|
17521
17078
|
if (!additional) return null;
|
|
17522
17079
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17523
|
-
className: "px-20 pb-20",
|
|
17080
|
+
className: cn(gap && "px-20 pb-20", className),
|
|
17524
17081
|
children: [
|
|
17525
17082
|
additional.type === "ADDITIONAL_TYPE_RESERVE" && additional.reserve && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliReserveCard, { reserve: additional.reserve }),
|
|
17526
17083
|
additional.type === "ADDITIONAL_TYPE_VOTE" && additional.vote && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliVoteCard, { vote: additional.vote }),
|
|
@@ -17532,42 +17089,6 @@ var BilibiliAdditionalCard = ({ additional }) => {
|
|
|
17532
17089
|
//#endregion
|
|
17533
17090
|
//#region ../template/src/components/platforms/bilibili/dynamic/DYNAMIC_TYPE_DRAW.tsx
|
|
17534
17091
|
/**
|
|
17535
|
-
* B站动态用户信息组件
|
|
17536
|
-
*/
|
|
17537
|
-
var BilibiliDynamicUserInfo$1 = (props) => {
|
|
17538
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17539
|
-
className: "flex gap-10 items-center justify-between px-0 pb-0 pl-24 pr-10",
|
|
17540
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17541
|
-
className: "flex gap-10 items-center",
|
|
17542
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17543
|
-
className: "relative",
|
|
17544
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
17545
|
-
src: props.avatar_url,
|
|
17546
|
-
alt: "头像",
|
|
17547
|
-
className: "w-32 h-32 rounded-full shadow-medium",
|
|
17548
|
-
isCircular: true
|
|
17549
|
-
}), props.frame && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
17550
|
-
src: props.frame,
|
|
17551
|
-
alt: "头像框",
|
|
17552
|
-
className: "absolute inset-0 transform scale-180"
|
|
17553
|
-
})]
|
|
17554
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17555
|
-
className: "flex flex-col gap-8 text-7xl",
|
|
17556
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17557
|
-
className: "text-6xl font-bold select-text text-foreground",
|
|
17558
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UsernameDisplay, { metadata: props.usernameMeta })
|
|
17559
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17560
|
-
className: "flex gap-2 items-center text-4xl font-normal whitespace-nowrap text-muted",
|
|
17561
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Clock, { size: 36 }), props.create_time]
|
|
17562
|
-
})]
|
|
17563
|
-
})]
|
|
17564
|
-
}), props.decoration_card && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17565
|
-
className: "shrink-0",
|
|
17566
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DecorationCard, { data: props.decoration_card })
|
|
17567
|
-
})]
|
|
17568
|
-
});
|
|
17569
|
-
};
|
|
17570
|
-
/**
|
|
17571
17092
|
* B站动态内容组件
|
|
17572
17093
|
*/
|
|
17573
17094
|
var BilibiliDynamicContent = (props) => {
|
|
@@ -17679,16 +17200,16 @@ var BilibiliDynamicContent = (props) => {
|
|
|
17679
17200
|
})]
|
|
17680
17201
|
}),
|
|
17681
17202
|
layoutType === "vertical" && props.image_url.map((img, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17682
|
-
className: "flex
|
|
17203
|
+
className: "flex items-center",
|
|
17683
17204
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17684
17205
|
className: "flex overflow-hidden flex-col flex-1 items-center rounded-4xl shadow-large",
|
|
17685
17206
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
17686
17207
|
src: img.image_src,
|
|
17687
17208
|
alt: "封面",
|
|
17688
|
-
className: "object-contain w-full h-full rounded-
|
|
17209
|
+
className: "object-contain w-full h-full rounded-5xl"
|
|
17689
17210
|
})
|
|
17690
17211
|
})
|
|
17691
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-
|
|
17212
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-10" })] }, index)),
|
|
17692
17213
|
(layoutType === "waterfall" || layoutType === "grid") && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-18" })
|
|
17693
17214
|
]
|
|
17694
17215
|
}),
|
|
@@ -17696,163 +17217,6 @@ var BilibiliDynamicContent = (props) => {
|
|
|
17696
17217
|
] });
|
|
17697
17218
|
};
|
|
17698
17219
|
/**
|
|
17699
|
-
* B站动态状态组件
|
|
17700
|
-
*/
|
|
17701
|
-
var BilibiliDynamicStatus$1 = (props) => {
|
|
17702
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17703
|
-
className: "flex flex-col gap-10 px-20 w-full leading-relaxed",
|
|
17704
|
-
children: [
|
|
17705
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17706
|
-
className: "flex gap-6 items-center text-5xl font-light tracking-normal select-text text-foreground/70",
|
|
17707
|
-
children: [
|
|
17708
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17709
|
-
className: "flex gap-2 items-center",
|
|
17710
|
-
children: [
|
|
17711
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThumbUpIcon, { size: 48 }),
|
|
17712
|
-
props.dianzan,
|
|
17713
|
-
"点赞"
|
|
17714
|
-
]
|
|
17715
|
-
}),
|
|
17716
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "·" }),
|
|
17717
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17718
|
-
className: "flex gap-2 items-center",
|
|
17719
|
-
children: [
|
|
17720
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommentIcon, { size: 48 }),
|
|
17721
|
-
props.pinglun,
|
|
17722
|
-
"评论"
|
|
17723
|
-
]
|
|
17724
|
-
}),
|
|
17725
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "·" }),
|
|
17726
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17727
|
-
className: "flex gap-2 items-center",
|
|
17728
|
-
children: [
|
|
17729
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ShareIcon, { size: 48 }),
|
|
17730
|
-
props.share,
|
|
17731
|
-
"分享"
|
|
17732
|
-
]
|
|
17733
|
-
})
|
|
17734
|
-
]
|
|
17735
|
-
}),
|
|
17736
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17737
|
-
className: "flex gap-2 items-center text-5xl font-light tracking-normal select-text text-foreground/70",
|
|
17738
|
-
children: [
|
|
17739
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Clock, { size: 48 }),
|
|
17740
|
-
"图片生成于: ",
|
|
17741
|
-
props.render_time
|
|
17742
|
-
]
|
|
17743
|
-
}),
|
|
17744
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-3" })
|
|
17745
|
-
]
|
|
17746
|
-
});
|
|
17747
|
-
};
|
|
17748
|
-
/**
|
|
17749
|
-
* B站动态底部信息组件
|
|
17750
|
-
*/
|
|
17751
|
-
var BilibiliDynamicFooter$1 = (props) => {
|
|
17752
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17753
|
-
className: "flex justify-between items-start px-20 pb-20",
|
|
17754
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17755
|
-
className: "flex flex-col gap-12",
|
|
17756
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17757
|
-
className: "flex gap-12 items-start",
|
|
17758
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17759
|
-
className: "relative shrink-0",
|
|
17760
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
17761
|
-
src: props.avatar_url,
|
|
17762
|
-
alt: "头像",
|
|
17763
|
-
className: "rounded-full shadow-medium w-35 h-auto",
|
|
17764
|
-
isCircular: true
|
|
17765
|
-
}), props.frame && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
17766
|
-
src: props.frame,
|
|
17767
|
-
alt: "头像框",
|
|
17768
|
-
className: "absolute inset-0 transform scale-180"
|
|
17769
|
-
})]
|
|
17770
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17771
|
-
className: "flex flex-col gap-5",
|
|
17772
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17773
|
-
className: "text-7xl font-bold select-text",
|
|
17774
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UsernameDisplay, { metadata: props.usernameMeta })
|
|
17775
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17776
|
-
className: "flex gap-2 items-center text-4xl text-muted",
|
|
17777
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
17778
|
-
className: "text-muted select-text",
|
|
17779
|
-
children: ["UID: ", props.user_shortid]
|
|
17780
|
-
})
|
|
17781
|
-
})]
|
|
17782
|
-
})]
|
|
17783
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17784
|
-
className: "text-3xl flex gap-6 items-center text-foreground/70",
|
|
17785
|
-
children: [
|
|
17786
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17787
|
-
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
17788
|
-
children: [
|
|
17789
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17790
|
-
className: "flex gap-1 items-center",
|
|
17791
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThumbUpIcon, { size: 28 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17792
|
-
className: "text-muted",
|
|
17793
|
-
children: "获赞"
|
|
17794
|
-
})]
|
|
17795
|
-
}),
|
|
17796
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
17797
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17798
|
-
className: "select-text font-medium text-4xl",
|
|
17799
|
-
children: props.total_favorited
|
|
17800
|
-
})
|
|
17801
|
-
]
|
|
17802
|
-
}),
|
|
17803
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17804
|
-
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
17805
|
-
children: [
|
|
17806
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17807
|
-
className: "flex gap-1 items-center",
|
|
17808
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Eye, { size: 28 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17809
|
-
className: "text-muted",
|
|
17810
|
-
children: "关注"
|
|
17811
|
-
})]
|
|
17812
|
-
}),
|
|
17813
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
17814
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17815
|
-
className: "select-text font-medium text-4xl",
|
|
17816
|
-
children: props.following_count
|
|
17817
|
-
})
|
|
17818
|
-
]
|
|
17819
|
-
}),
|
|
17820
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17821
|
-
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
17822
|
-
children: [
|
|
17823
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17824
|
-
className: "flex gap-1 items-center",
|
|
17825
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(UsersRound, { size: 28 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17826
|
-
className: "text-muted",
|
|
17827
|
-
children: "粉丝"
|
|
17828
|
-
})]
|
|
17829
|
-
}),
|
|
17830
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
17831
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17832
|
-
className: "select-text font-medium text-4xl",
|
|
17833
|
-
children: props.fans
|
|
17834
|
-
})
|
|
17835
|
-
]
|
|
17836
|
-
})
|
|
17837
|
-
]
|
|
17838
|
-
})]
|
|
17839
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17840
|
-
className: "flex flex-col items-center gap-4",
|
|
17841
|
-
children: props.qrCodeDataUrl ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
17842
|
-
src: props.qrCodeDataUrl,
|
|
17843
|
-
alt: "二维码",
|
|
17844
|
-
className: "h-auto w-75 rounded-2xl"
|
|
17845
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17846
|
-
className: "flex justify-center items-center rounded-2xl bg-surface w-100 h-100",
|
|
17847
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
17848
|
-
className: "text-muted",
|
|
17849
|
-
children: "二维码"
|
|
17850
|
-
})
|
|
17851
|
-
})
|
|
17852
|
-
})]
|
|
17853
|
-
});
|
|
17854
|
-
};
|
|
17855
|
-
/**
|
|
17856
17220
|
* B站动态组件
|
|
17857
17221
|
*/
|
|
17858
17222
|
var BilibiliDrawDynamic = import_react.memo((props) => {
|
|
@@ -17862,13 +17226,7 @@ var BilibiliDrawDynamic = import_react.memo((props) => {
|
|
|
17862
17226
|
className: "p-4",
|
|
17863
17227
|
children: [
|
|
17864
17228
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-25" }),
|
|
17865
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicUserInfo
|
|
17866
|
-
avatar_url: props.data.avatar_url,
|
|
17867
|
-
frame: props.data.frame,
|
|
17868
|
-
usernameMeta: props.data.usernameMeta,
|
|
17869
|
-
create_time: props.data.create_time,
|
|
17870
|
-
decoration_card: props.data.decoration_card
|
|
17871
|
-
}),
|
|
17229
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicUserInfo, { ...props.data }),
|
|
17872
17230
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-15" }),
|
|
17873
17231
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicContent, {
|
|
17874
17232
|
title: props.data.title,
|
|
@@ -17877,25 +17235,9 @@ var BilibiliDrawDynamic = import_react.memo((props) => {
|
|
|
17877
17235
|
imageLayout: props.data.imageLayout,
|
|
17878
17236
|
additional: props.data.additional
|
|
17879
17237
|
}),
|
|
17880
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicStatus
|
|
17881
|
-
|
|
17882
|
-
|
|
17883
|
-
share: props.data.share,
|
|
17884
|
-
render_time: props.data.render_time
|
|
17885
|
-
}),
|
|
17886
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-23" }),
|
|
17887
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicFooter$1, {
|
|
17888
|
-
avatar_url: props.data.avatar_url,
|
|
17889
|
-
frame: props.data.frame,
|
|
17890
|
-
usernameMeta: props.data.usernameMeta,
|
|
17891
|
-
user_shortid: props.data.user_shortid,
|
|
17892
|
-
total_favorited: props.data.total_favorited,
|
|
17893
|
-
following_count: props.data.following_count,
|
|
17894
|
-
fans: props.data.fans,
|
|
17895
|
-
dynamicTYPE: props.data.dynamicTYPE,
|
|
17896
|
-
share_url: props.data.share_url,
|
|
17897
|
-
qrCodeDataUrl: props.qrCodeDataUrl
|
|
17898
|
-
})
|
|
17238
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicStatus, { ...props.data }),
|
|
17239
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-40" }),
|
|
17240
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicFooter, { ...props.data })
|
|
17899
17241
|
]
|
|
17900
17242
|
})
|
|
17901
17243
|
});
|
|
@@ -17904,47 +17246,11 @@ BilibiliDrawDynamic.displayName = "BilibiliDrawDynamic";
|
|
|
17904
17246
|
//#endregion
|
|
17905
17247
|
//#region ../template/src/components/platforms/bilibili/dynamic/DYNAMIC_TYPE_FORWARD.tsx
|
|
17906
17248
|
/**
|
|
17907
|
-
* B站转发动态用户信息组件
|
|
17908
|
-
*/
|
|
17909
|
-
var BilibiliForwardUserInfo = (props) => {
|
|
17910
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17911
|
-
className: "flex gap-10 items-center justify-between px-0 pb-0 pl-24 pr-10",
|
|
17912
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17913
|
-
className: "flex gap-10 items-center",
|
|
17914
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17915
|
-
className: "relative",
|
|
17916
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
17917
|
-
src: props.avatar_url,
|
|
17918
|
-
alt: "头像",
|
|
17919
|
-
className: "w-36 h-36 rounded-full shadow-medium",
|
|
17920
|
-
isCircular: true
|
|
17921
|
-
}), props.frame && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
17922
|
-
src: props.frame,
|
|
17923
|
-
alt: "头像框",
|
|
17924
|
-
className: "absolute inset-0 transform scale-180"
|
|
17925
|
-
})]
|
|
17926
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17927
|
-
className: "flex flex-col gap-8 text-7xl",
|
|
17928
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17929
|
-
className: "text-6xl font-bold select-text text-foreground",
|
|
17930
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UsernameDisplay, { metadata: props.usernameMeta })
|
|
17931
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17932
|
-
className: "flex gap-2 items-center text-4xl font-normal whitespace-nowrap text-muted",
|
|
17933
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Clock, { size: 36 }), props.create_time]
|
|
17934
|
-
})]
|
|
17935
|
-
})]
|
|
17936
|
-
}), props.decoration_card && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17937
|
-
className: "shrink-0",
|
|
17938
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DecorationCard, { data: props.decoration_card })
|
|
17939
|
-
})]
|
|
17940
|
-
});
|
|
17941
|
-
};
|
|
17942
|
-
/**
|
|
17943
17249
|
* 原始内容用户信息组件
|
|
17944
17250
|
*/
|
|
17945
17251
|
var OriginalUserInfo = (props) => {
|
|
17946
17252
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17947
|
-
className: "flex justify-between items-center
|
|
17253
|
+
className: "flex justify-between items-center pl-8 pr-0",
|
|
17948
17254
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17949
17255
|
className: "flex gap-10 items-center min-w-0",
|
|
17950
17256
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -17981,6 +17287,7 @@ var OriginalAVContent = ({ content }) => {
|
|
|
17981
17287
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17982
17288
|
className: "px-12 py-8 mt-4 w-full rounded-8xl bg-surface-secondary",
|
|
17983
17289
|
children: [
|
|
17290
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-10" }),
|
|
17984
17291
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(OriginalUserInfo, {
|
|
17985
17292
|
avatar_url: content.avatar_url,
|
|
17986
17293
|
frame: content.frame,
|
|
@@ -17988,10 +17295,11 @@ var OriginalAVContent = ({ content }) => {
|
|
|
17988
17295
|
create_time: content.create_time,
|
|
17989
17296
|
decoration_card: content.decoration_card
|
|
17990
17297
|
}),
|
|
17298
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-15" }),
|
|
17991
17299
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17992
|
-
className: "flex flex-col items-center
|
|
17300
|
+
className: "flex flex-col items-center",
|
|
17993
17301
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17994
|
-
className: "flex overflow-hidden relative flex-col items-center w-
|
|
17302
|
+
className: "flex overflow-hidden relative flex-col items-center w-full rounded-4xl rounded-10 aspect-video shadow-large",
|
|
17995
17303
|
children: [
|
|
17996
17304
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
17997
17305
|
src: content.cover,
|
|
@@ -18015,8 +17323,9 @@ var OriginalAVContent = ({ content }) => {
|
|
|
18015
17323
|
]
|
|
18016
17324
|
})
|
|
18017
17325
|
}),
|
|
17326
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-10" }),
|
|
18018
17327
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
18019
|
-
className: "
|
|
17328
|
+
className: "pl-2 text-6xl font-bold select-text leading-20 text-foreground",
|
|
18020
17329
|
children: content.title && renderRichTextToReact(content.title, {
|
|
18021
17330
|
at: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
18022
17331
|
topic: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
@@ -18025,7 +17334,8 @@ var OriginalAVContent = ({ content }) => {
|
|
|
18025
17334
|
vote: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
18026
17335
|
viewPicture: { className: "text-[#006A9E] dark:text-[#58B0D5]" }
|
|
18027
17336
|
})
|
|
18028
|
-
})
|
|
17337
|
+
}),
|
|
17338
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-4" })
|
|
18029
17339
|
]
|
|
18030
17340
|
});
|
|
18031
17341
|
};
|
|
@@ -18034,7 +17344,7 @@ var OriginalAVContent = ({ content }) => {
|
|
|
18034
17344
|
*/
|
|
18035
17345
|
var OriginalDrawContent = ({ content }) => {
|
|
18036
17346
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18037
|
-
className: "px-12 py-
|
|
17347
|
+
className: "px-12 py-12 mt-4 w-full rounded-8xl bg-surface-secondary",
|
|
18038
17348
|
children: [
|
|
18039
17349
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(OriginalUserInfo, {
|
|
18040
17350
|
avatar_url: content.avatar_url,
|
|
@@ -18043,30 +17353,28 @@ var OriginalDrawContent = ({ content }) => {
|
|
|
18043
17353
|
create_time: content.create_time,
|
|
18044
17354
|
decoration_card: content.decoration_card
|
|
18045
17355
|
}),
|
|
18046
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
18047
|
-
|
|
18048
|
-
|
|
18049
|
-
|
|
18050
|
-
|
|
18051
|
-
|
|
18052
|
-
|
|
18053
|
-
|
|
18054
|
-
|
|
18055
|
-
|
|
18056
|
-
|
|
18057
|
-
|
|
18058
|
-
|
|
18059
|
-
|
|
18060
|
-
|
|
18061
|
-
|
|
18062
|
-
|
|
18063
|
-
|
|
18064
|
-
|
|
18065
|
-
})]
|
|
18066
|
-
})
|
|
17356
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-15" }),
|
|
17357
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
17358
|
+
className: "text-5xl leading-relaxed text-foreground wrap-break-word",
|
|
17359
|
+
children: [content.title && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
17360
|
+
className: "text-6xl font-bold",
|
|
17361
|
+
children: [
|
|
17362
|
+
content.title,
|
|
17363
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("br", {}),
|
|
17364
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("br", {})
|
|
17365
|
+
]
|
|
17366
|
+
}), content.text && renderRichTextToReact(content.text, {
|
|
17367
|
+
at: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
17368
|
+
topic: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
17369
|
+
lottery: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
17370
|
+
webLink: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
17371
|
+
vote: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
17372
|
+
viewPicture: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
17373
|
+
iconScale: .8
|
|
17374
|
+
})]
|
|
18067
17375
|
}),
|
|
18068
17376
|
content.image_url && content.image_url.length === 1 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
18069
|
-
className: "flex justify-center py-11 pb-
|
|
17377
|
+
className: "flex justify-center py-11 pb-0",
|
|
18070
17378
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
18071
17379
|
className: "flex overflow-hidden flex-col items-center w-full rounded-4xl shadow-large",
|
|
18072
17380
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
@@ -18075,9 +17383,9 @@ var OriginalDrawContent = ({ content }) => {
|
|
|
18075
17383
|
className: "object-cover w-full h-full rounded-6"
|
|
18076
17384
|
})
|
|
18077
17385
|
})
|
|
18078
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.
|
|
17386
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
18079
17387
|
className: `grid gap-3 ${content.image_url?.length === 4 ? "grid-cols-2" : "grid-cols-3"}`,
|
|
18080
|
-
children:
|
|
17388
|
+
children: content.image_url?.map((img, index) => {
|
|
18081
17389
|
const total = content.image_url?.length || 0;
|
|
18082
17390
|
const cols = total === 4 ? 2 : 3;
|
|
18083
17391
|
const row = Math.floor(index / cols);
|
|
@@ -18100,10 +17408,10 @@ var OriginalDrawContent = ({ content }) => {
|
|
|
18100
17408
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
18101
17409
|
src: img.image_src,
|
|
18102
17410
|
alt: `图片${index + 1}`,
|
|
18103
|
-
className: "object-cover
|
|
17411
|
+
className: "object-cover w-full h-full"
|
|
18104
17412
|
})
|
|
18105
17413
|
}, index);
|
|
18106
|
-
})
|
|
17414
|
+
})
|
|
18107
17415
|
})
|
|
18108
17416
|
]
|
|
18109
17417
|
});
|
|
@@ -18114,27 +17422,35 @@ var OriginalDrawContent = ({ content }) => {
|
|
|
18114
17422
|
var OriginalWordContent = ({ content }) => {
|
|
18115
17423
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18116
17424
|
className: "px-12 py-8 mt-4 w-full rounded-8xl bg-surface-secondary",
|
|
18117
|
-
children: [
|
|
18118
|
-
|
|
18119
|
-
|
|
18120
|
-
|
|
18121
|
-
|
|
18122
|
-
|
|
18123
|
-
|
|
18124
|
-
|
|
18125
|
-
|
|
18126
|
-
className: "
|
|
18127
|
-
children:
|
|
18128
|
-
|
|
18129
|
-
|
|
18130
|
-
|
|
18131
|
-
|
|
18132
|
-
|
|
18133
|
-
|
|
18134
|
-
|
|
17425
|
+
children: [
|
|
17426
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(OriginalUserInfo, {
|
|
17427
|
+
avatar_url: content.avatar_url,
|
|
17428
|
+
frame: content.frame,
|
|
17429
|
+
usernameMeta: content.usernameMeta,
|
|
17430
|
+
create_time: content.create_time,
|
|
17431
|
+
decoration_card: content.decoration_card
|
|
17432
|
+
}),
|
|
17433
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17434
|
+
className: "py-4",
|
|
17435
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17436
|
+
className: "text-5xl leading-relaxed text-foreground wrap-break-word",
|
|
17437
|
+
children: content.text && renderRichTextToReact(content.text, {
|
|
17438
|
+
at: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
17439
|
+
topic: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
17440
|
+
lottery: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
17441
|
+
webLink: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
17442
|
+
vote: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
17443
|
+
viewPicture: { className: "text-[#006A9E] dark:text-[#58B0D5]" },
|
|
17444
|
+
iconScale: .8
|
|
17445
|
+
})
|
|
18135
17446
|
})
|
|
17447
|
+
}),
|
|
17448
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliAdditionalCard, {
|
|
17449
|
+
additional: content.additional,
|
|
17450
|
+
gap: false,
|
|
17451
|
+
className: "pb-4"
|
|
18136
17452
|
})
|
|
18137
|
-
|
|
17453
|
+
]
|
|
18138
17454
|
});
|
|
18139
17455
|
};
|
|
18140
17456
|
/**
|
|
@@ -18234,163 +17550,6 @@ var BilibiliForwardContent = (props) => {
|
|
|
18234
17550
|
] });
|
|
18235
17551
|
};
|
|
18236
17552
|
/**
|
|
18237
|
-
* B站转发动态状态组件
|
|
18238
|
-
*/
|
|
18239
|
-
var BilibiliForwardStatus = (props) => {
|
|
18240
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18241
|
-
className: "flex flex-col gap-10 px-20 w-full leading-relaxed",
|
|
18242
|
-
children: [
|
|
18243
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18244
|
-
className: "flex gap-6 items-center text-5xl font-light tracking-normal select-text text-foreground/70",
|
|
18245
|
-
children: [
|
|
18246
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18247
|
-
className: "flex gap-2 items-center",
|
|
18248
|
-
children: [
|
|
18249
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThumbUpIcon, { size: 48 }),
|
|
18250
|
-
props.dianzan,
|
|
18251
|
-
"点赞"
|
|
18252
|
-
]
|
|
18253
|
-
}),
|
|
18254
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "·" }),
|
|
18255
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18256
|
-
className: "flex gap-2 items-center",
|
|
18257
|
-
children: [
|
|
18258
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommentIcon, { size: 48 }),
|
|
18259
|
-
props.pinglun,
|
|
18260
|
-
"评论"
|
|
18261
|
-
]
|
|
18262
|
-
}),
|
|
18263
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "·" }),
|
|
18264
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18265
|
-
className: "flex gap-2 items-center",
|
|
18266
|
-
children: [
|
|
18267
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ShareIcon, { size: 48 }),
|
|
18268
|
-
props.share,
|
|
18269
|
-
"分享"
|
|
18270
|
-
]
|
|
18271
|
-
})
|
|
18272
|
-
]
|
|
18273
|
-
}),
|
|
18274
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18275
|
-
className: "flex gap-2 items-center text-5xl font-light tracking-normal select-text text-foreground/70",
|
|
18276
|
-
children: [
|
|
18277
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Clock, { size: 48 }),
|
|
18278
|
-
"图片生成于: ",
|
|
18279
|
-
props.render_time
|
|
18280
|
-
]
|
|
18281
|
-
}),
|
|
18282
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-3" })
|
|
18283
|
-
]
|
|
18284
|
-
});
|
|
18285
|
-
};
|
|
18286
|
-
/**
|
|
18287
|
-
* B站转发动态底部信息组件
|
|
18288
|
-
*/
|
|
18289
|
-
var BilibiliForwardFooter = (props) => {
|
|
18290
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18291
|
-
className: "flex justify-between items-start px-20 pb-20",
|
|
18292
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18293
|
-
className: "flex flex-col gap-12",
|
|
18294
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18295
|
-
className: "flex gap-12 items-start",
|
|
18296
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18297
|
-
className: "relative shrink-0",
|
|
18298
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
18299
|
-
src: props.avatar_url,
|
|
18300
|
-
alt: "头像",
|
|
18301
|
-
className: "rounded-full shadow-medium w-35 h-auto",
|
|
18302
|
-
isCircular: true
|
|
18303
|
-
}), props.frame && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
18304
|
-
src: props.frame,
|
|
18305
|
-
alt: "头像框",
|
|
18306
|
-
className: "absolute inset-0 transform scale-180"
|
|
18307
|
-
})]
|
|
18308
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18309
|
-
className: "flex flex-col gap-5",
|
|
18310
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
18311
|
-
className: "text-7xl font-bold select-text text-foreground",
|
|
18312
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UsernameDisplay, { metadata: props.usernameMeta })
|
|
18313
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18314
|
-
className: "flex gap-2 items-center text-4xl text-muted",
|
|
18315
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Hash, { size: 32 }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
18316
|
-
className: "select-text",
|
|
18317
|
-
children: ["UID: ", props.user_shortid]
|
|
18318
|
-
})]
|
|
18319
|
-
})]
|
|
18320
|
-
})]
|
|
18321
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18322
|
-
className: "text-3xl flex gap-6 items-center text-foreground/70",
|
|
18323
|
-
children: [
|
|
18324
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18325
|
-
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
18326
|
-
children: [
|
|
18327
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18328
|
-
className: "flex gap-1 items-center",
|
|
18329
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThumbUpIcon, { size: 28 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
18330
|
-
className: "text-muted",
|
|
18331
|
-
children: "获赞"
|
|
18332
|
-
})]
|
|
18333
|
-
}),
|
|
18334
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
18335
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
18336
|
-
className: "select-text font-medium text-4xl",
|
|
18337
|
-
children: props.total_favorited
|
|
18338
|
-
})
|
|
18339
|
-
]
|
|
18340
|
-
}),
|
|
18341
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18342
|
-
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
18343
|
-
children: [
|
|
18344
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18345
|
-
className: "flex gap-1 items-center",
|
|
18346
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Eye, { size: 28 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
18347
|
-
className: "text-muted",
|
|
18348
|
-
children: "关注"
|
|
18349
|
-
})]
|
|
18350
|
-
}),
|
|
18351
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
18352
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
18353
|
-
className: "select-text font-medium text-4xl",
|
|
18354
|
-
children: props.following_count
|
|
18355
|
-
})
|
|
18356
|
-
]
|
|
18357
|
-
}),
|
|
18358
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18359
|
-
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
18360
|
-
children: [
|
|
18361
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18362
|
-
className: "flex gap-1 items-center",
|
|
18363
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(UsersRound, { size: 28 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
18364
|
-
className: "text-muted",
|
|
18365
|
-
children: "粉丝"
|
|
18366
|
-
})]
|
|
18367
|
-
}),
|
|
18368
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
18369
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
18370
|
-
className: "select-text font-medium text-4xl",
|
|
18371
|
-
children: props.fans
|
|
18372
|
-
})
|
|
18373
|
-
]
|
|
18374
|
-
})
|
|
18375
|
-
]
|
|
18376
|
-
})]
|
|
18377
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
18378
|
-
className: "flex flex-col items-center gap-4",
|
|
18379
|
-
children: props.qrCodeDataUrl ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
18380
|
-
src: props.qrCodeDataUrl,
|
|
18381
|
-
alt: "二维码",
|
|
18382
|
-
className: "h-auto w-75 rounded-2xl"
|
|
18383
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
18384
|
-
className: "flex justify-center items-center rounded-2xl bg-surface w-100 h-100",
|
|
18385
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
18386
|
-
className: "text-muted",
|
|
18387
|
-
children: "二维码"
|
|
18388
|
-
})
|
|
18389
|
-
})
|
|
18390
|
-
})]
|
|
18391
|
-
});
|
|
18392
|
-
};
|
|
18393
|
-
/**
|
|
18394
17553
|
* B站转发动态组件
|
|
18395
17554
|
*/
|
|
18396
17555
|
var BilibiliForwardDynamic = import_react.memo((props) => {
|
|
@@ -18400,35 +17559,13 @@ var BilibiliForwardDynamic = import_react.memo((props) => {
|
|
|
18400
17559
|
className: "p-4",
|
|
18401
17560
|
children: [
|
|
18402
17561
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-25" }),
|
|
18403
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
18404
|
-
avatar_url: props.data.avatar_url,
|
|
18405
|
-
frame: props.data.frame,
|
|
18406
|
-
usernameMeta: props.data.usernameMeta,
|
|
18407
|
-
create_time: props.data.create_time,
|
|
18408
|
-
decoration_card: props.data.decoration_card
|
|
18409
|
-
}),
|
|
17562
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicUserInfo, { ...props.data }),
|
|
18410
17563
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-15" }),
|
|
18411
17564
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliForwardContent, { ...props.data }),
|
|
18412
17565
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-25" }),
|
|
18413
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
18414
|
-
|
|
18415
|
-
|
|
18416
|
-
share: props.data.share,
|
|
18417
|
-
render_time: props.data.render_time
|
|
18418
|
-
}),
|
|
18419
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-23" }),
|
|
18420
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliForwardFooter, {
|
|
18421
|
-
avatar_url: props.data.avatar_url,
|
|
18422
|
-
frame: props.data.frame,
|
|
18423
|
-
usernameMeta: props.data.usernameMeta,
|
|
18424
|
-
user_shortid: props.data.user_shortid,
|
|
18425
|
-
total_favorited: props.data.total_favorited,
|
|
18426
|
-
following_count: props.data.following_count,
|
|
18427
|
-
fans: props.data.fans,
|
|
18428
|
-
dynamicTYPE: props.data.dynamicTYPE,
|
|
18429
|
-
share_url: props.data.share_url,
|
|
18430
|
-
qrCodeDataUrl: props.qrCodeDataUrl
|
|
18431
|
-
})
|
|
17566
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicStatus, { ...props.data }),
|
|
17567
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-40" }),
|
|
17568
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicFooter, { ...props.data })
|
|
18432
17569
|
]
|
|
18433
17570
|
})
|
|
18434
17571
|
});
|
|
@@ -18483,7 +17620,7 @@ var getSingleLineFontSize = (content, base, min) => {
|
|
|
18483
17620
|
return min;
|
|
18484
17621
|
};
|
|
18485
17622
|
var BilibiliLiveDynamic = import_react.memo((props) => {
|
|
18486
|
-
const { data
|
|
17623
|
+
const { data } = props;
|
|
18487
17624
|
const isDark = data.useDarkTheme === true;
|
|
18488
17625
|
const { bgColor, primaryColor, secondaryColor, mutedColor, accentColor, deepColor, coverShade } = props.posterPalettes ? isDark ? props.posterPalettes.dark : props.posterPalettes.light : props.posterPalette ?? (isDark ? DARK_FALLBACK : LIGHT_FALLBACK);
|
|
18489
17626
|
const logo = isDark ? "/image/bilibili/bilibili-light.png" : "/image/bilibili/bilibili.png";
|
|
@@ -18943,8 +18080,8 @@ var BilibiliLiveDynamic = import_react.memo((props) => {
|
|
|
18943
18080
|
className: "absolute right-22 top-1/2 h-52 w-52 -translate-y-1/2 rounded-full blur-[48px]",
|
|
18944
18081
|
style: { backgroundColor: withAlphaFromCss(accentColor, isDark ? .16 : .1) }
|
|
18945
18082
|
}),
|
|
18946
|
-
|
|
18947
|
-
src:
|
|
18083
|
+
data.share_url ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
18084
|
+
src: generateQRCode(data.share_url, isDark),
|
|
18948
18085
|
alt: "二维码",
|
|
18949
18086
|
className: "relative h-100 w-100 object-contain drop-shadow-[0_20px_38px_rgba(0,0,0,0.18)]"
|
|
18950
18087
|
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
@@ -18969,42 +18106,6 @@ BilibiliLiveDynamic.displayName = "BilibiliLiveDynamic";
|
|
|
18969
18106
|
//#endregion
|
|
18970
18107
|
//#region ../template/src/components/platforms/bilibili/dynamic/DYNAMIC_TYPE_WORD.tsx
|
|
18971
18108
|
/**
|
|
18972
|
-
* B站动态用户信息组件
|
|
18973
|
-
*/
|
|
18974
|
-
var BilibiliDynamicUserInfo = (props) => {
|
|
18975
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18976
|
-
className: "flex gap-10 items-center justify-between px-0 pb-0 pl-24 pr-10",
|
|
18977
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18978
|
-
className: "flex gap-10 items-center",
|
|
18979
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18980
|
-
className: "relative",
|
|
18981
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
18982
|
-
src: props.avatar_url,
|
|
18983
|
-
alt: "头像",
|
|
18984
|
-
className: "w-32 h-32 rounded-full shadow-medium",
|
|
18985
|
-
isCircular: true
|
|
18986
|
-
}), props.frame && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
18987
|
-
src: props.frame,
|
|
18988
|
-
alt: "头像框",
|
|
18989
|
-
className: "absolute inset-0 transform scale-180"
|
|
18990
|
-
})]
|
|
18991
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18992
|
-
className: "flex flex-col gap-8 text-7xl",
|
|
18993
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
18994
|
-
className: "text-6xl font-bold select-text text-foreground",
|
|
18995
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UsernameDisplay, { metadata: props.usernameMeta })
|
|
18996
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
18997
|
-
className: "flex gap-2 items-center text-4xl font-normal whitespace-nowrap text-muted",
|
|
18998
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Clock, { size: 36 }), props.create_time]
|
|
18999
|
-
})]
|
|
19000
|
-
})]
|
|
19001
|
-
}), props.decoration_card && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
19002
|
-
className: "shrink-0",
|
|
19003
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DecorationCard, { data: props.decoration_card })
|
|
19004
|
-
})]
|
|
19005
|
-
});
|
|
19006
|
-
};
|
|
19007
|
-
/**
|
|
19008
18109
|
* B站纯文动态内容组件
|
|
19009
18110
|
*/
|
|
19010
18111
|
var BilibiliWordContent = (props) => {
|
|
@@ -19028,163 +18129,6 @@ var BilibiliWordContent = (props) => {
|
|
|
19028
18129
|
}), props.additional && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliAdditionalCard, { additional: props.additional })] });
|
|
19029
18130
|
};
|
|
19030
18131
|
/**
|
|
19031
|
-
* B站动态状态组件
|
|
19032
|
-
*/
|
|
19033
|
-
var BilibiliDynamicStatus = (props) => {
|
|
19034
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19035
|
-
className: "flex flex-col gap-10 px-20 w-full leading-relaxed",
|
|
19036
|
-
children: [
|
|
19037
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19038
|
-
className: "flex gap-6 items-center text-5xl font-light tracking-normal select-text text-foreground/70",
|
|
19039
|
-
children: [
|
|
19040
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19041
|
-
className: "flex gap-2 items-center",
|
|
19042
|
-
children: [
|
|
19043
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThumbUpIcon, { size: 48 }),
|
|
19044
|
-
props.dianzan,
|
|
19045
|
-
"点赞"
|
|
19046
|
-
]
|
|
19047
|
-
}),
|
|
19048
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "·" }),
|
|
19049
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19050
|
-
className: "flex gap-2 items-center",
|
|
19051
|
-
children: [
|
|
19052
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommentIcon, { size: 48 }),
|
|
19053
|
-
props.pinglun,
|
|
19054
|
-
"评论"
|
|
19055
|
-
]
|
|
19056
|
-
}),
|
|
19057
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "·" }),
|
|
19058
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19059
|
-
className: "flex gap-2 items-center",
|
|
19060
|
-
children: [
|
|
19061
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ShareIcon, { size: 48 }),
|
|
19062
|
-
props.share,
|
|
19063
|
-
"分享"
|
|
19064
|
-
]
|
|
19065
|
-
})
|
|
19066
|
-
]
|
|
19067
|
-
}),
|
|
19068
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19069
|
-
className: "flex gap-2 items-center text-5xl font-light tracking-normal select-text text-foreground/70",
|
|
19070
|
-
children: [
|
|
19071
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Clock, { size: 48 }),
|
|
19072
|
-
"图片生成于: ",
|
|
19073
|
-
props.render_time
|
|
19074
|
-
]
|
|
19075
|
-
}),
|
|
19076
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-3" })
|
|
19077
|
-
]
|
|
19078
|
-
});
|
|
19079
|
-
};
|
|
19080
|
-
/**
|
|
19081
|
-
* B站动态底部信息组件
|
|
19082
|
-
*/
|
|
19083
|
-
var BilibiliDynamicFooter = (props) => {
|
|
19084
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19085
|
-
className: "flex justify-between items-start px-20 pb-20",
|
|
19086
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19087
|
-
className: "flex flex-col gap-12",
|
|
19088
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19089
|
-
className: "flex gap-12 items-start",
|
|
19090
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19091
|
-
className: "relative shrink-0",
|
|
19092
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
19093
|
-
src: props.avatar_url,
|
|
19094
|
-
alt: "头像",
|
|
19095
|
-
className: "rounded-full shadow-medium w-35 h-auto",
|
|
19096
|
-
isCircular: true
|
|
19097
|
-
}), props.frame && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EnhancedImage, {
|
|
19098
|
-
src: props.frame,
|
|
19099
|
-
alt: "头像框",
|
|
19100
|
-
className: "absolute inset-0 transform scale-180"
|
|
19101
|
-
})]
|
|
19102
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19103
|
-
className: "flex flex-col gap-5",
|
|
19104
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
19105
|
-
className: "text-7xl font-bold select-text text-foreground",
|
|
19106
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UsernameDisplay, { metadata: props.usernameMeta })
|
|
19107
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
19108
|
-
className: "flex gap-2 items-center text-4xl text-muted",
|
|
19109
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
19110
|
-
className: "select-text",
|
|
19111
|
-
children: ["UID: ", props.user_shortid]
|
|
19112
|
-
})
|
|
19113
|
-
})]
|
|
19114
|
-
})]
|
|
19115
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19116
|
-
className: "text-3xl flex gap-6 items-center text-foreground/70",
|
|
19117
|
-
children: [
|
|
19118
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19119
|
-
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
19120
|
-
children: [
|
|
19121
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19122
|
-
className: "flex gap-1 items-center",
|
|
19123
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThumbUpIcon, { size: 28 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
19124
|
-
className: "text-muted",
|
|
19125
|
-
children: "获赞"
|
|
19126
|
-
})]
|
|
19127
|
-
}),
|
|
19128
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
19129
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
19130
|
-
className: "select-text font-medium text-4xl",
|
|
19131
|
-
children: props.total_favorited
|
|
19132
|
-
})
|
|
19133
|
-
]
|
|
19134
|
-
}),
|
|
19135
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19136
|
-
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
19137
|
-
children: [
|
|
19138
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19139
|
-
className: "flex gap-1 items-center",
|
|
19140
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Eye, { size: 28 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
19141
|
-
className: "text-muted",
|
|
19142
|
-
children: "关注"
|
|
19143
|
-
})]
|
|
19144
|
-
}),
|
|
19145
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
19146
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
19147
|
-
className: "select-text font-medium text-4xl",
|
|
19148
|
-
children: props.following_count
|
|
19149
|
-
})
|
|
19150
|
-
]
|
|
19151
|
-
}),
|
|
19152
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19153
|
-
className: "flex flex-col gap-1 items-start px-6 py-3 rounded-2xl bg-surface",
|
|
19154
|
-
children: [
|
|
19155
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19156
|
-
className: "flex gap-1 items-center",
|
|
19157
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(UsersRound, { size: 28 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
19158
|
-
className: "text-muted",
|
|
19159
|
-
children: "粉丝"
|
|
19160
|
-
})]
|
|
19161
|
-
}),
|
|
19162
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-px bg-border" }),
|
|
19163
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
19164
|
-
className: "select-text font-medium text-4xl",
|
|
19165
|
-
children: props.fans
|
|
19166
|
-
})
|
|
19167
|
-
]
|
|
19168
|
-
})
|
|
19169
|
-
]
|
|
19170
|
-
})]
|
|
19171
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
19172
|
-
className: "flex flex-col items-center gap-4",
|
|
19173
|
-
children: props.qrCodeDataUrl ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
19174
|
-
src: props.qrCodeDataUrl,
|
|
19175
|
-
alt: "二维码",
|
|
19176
|
-
className: "h-auto w-75 rounded-2xl"
|
|
19177
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
19178
|
-
className: "flex justify-center items-center rounded-2xl bg-surface w-100 h-100",
|
|
19179
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
19180
|
-
className: "text-muted",
|
|
19181
|
-
children: "二维码"
|
|
19182
|
-
})
|
|
19183
|
-
})
|
|
19184
|
-
})]
|
|
19185
|
-
});
|
|
19186
|
-
};
|
|
19187
|
-
/**
|
|
19188
18132
|
* B站纯文动态组件
|
|
19189
18133
|
*/
|
|
19190
18134
|
var BilibiliWordDynamic = import_react.memo((props) => {
|
|
@@ -19194,37 +18138,15 @@ var BilibiliWordDynamic = import_react.memo((props) => {
|
|
|
19194
18138
|
className: "p-4",
|
|
19195
18139
|
children: [
|
|
19196
18140
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-25" }),
|
|
19197
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicUserInfo, {
|
|
19198
|
-
avatar_url: props.data.avatar_url,
|
|
19199
|
-
frame: props.data.frame,
|
|
19200
|
-
usernameMeta: props.data.usernameMeta,
|
|
19201
|
-
create_time: props.data.create_time,
|
|
19202
|
-
decoration_card: props.data.decoration_card
|
|
19203
|
-
}),
|
|
18141
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicUserInfo, { ...props.data }),
|
|
19204
18142
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-15" }),
|
|
19205
18143
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliWordContent, {
|
|
19206
18144
|
text: props.data.text,
|
|
19207
18145
|
additional: props.data.additional
|
|
19208
18146
|
}),
|
|
19209
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicStatus, {
|
|
19210
|
-
dianzan: props.data.dianzan,
|
|
19211
|
-
pinglun: props.data.pinglun,
|
|
19212
|
-
share: props.data.share,
|
|
19213
|
-
render_time: props.data.render_time
|
|
19214
|
-
}),
|
|
18147
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicStatus, { ...props.data }),
|
|
19215
18148
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-23" }),
|
|
19216
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicFooter, {
|
|
19217
|
-
avatar_url: props.data.avatar_url,
|
|
19218
|
-
frame: props.data.frame,
|
|
19219
|
-
usernameMeta: props.data.usernameMeta,
|
|
19220
|
-
user_shortid: props.data.user_shortid,
|
|
19221
|
-
total_favorited: props.data.total_favorited,
|
|
19222
|
-
following_count: props.data.following_count,
|
|
19223
|
-
fans: props.data.fans,
|
|
19224
|
-
dynamicTYPE: props.data.dynamicTYPE,
|
|
19225
|
-
share_url: props.data.share_url,
|
|
19226
|
-
qrCodeDataUrl: props.qrCodeDataUrl
|
|
19227
|
-
})
|
|
18149
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BilibiliDynamicFooter, { ...props.data })
|
|
19228
18150
|
]
|
|
19229
18151
|
})
|
|
19230
18152
|
});
|
|
@@ -19239,7 +18161,7 @@ BilibiliWordDynamic.displayName = "BilibiliWordDynamic";
|
|
|
19239
18161
|
*/
|
|
19240
18162
|
var BilibiliQrcodeImg = import_react.memo((props) => {
|
|
19241
18163
|
const isDark = props.data?.useDarkTheme ?? false;
|
|
19242
|
-
const
|
|
18164
|
+
const qrCodeDataUrl = generateQRCode(props.data.share_url, isDark);
|
|
19243
18165
|
const theme = {
|
|
19244
18166
|
bg: isDark ? "#000000" : "#FFFFFF",
|
|
19245
18167
|
text: isDark ? "#FFFFFF" : "#000000",
|
|
@@ -20345,16 +19267,10 @@ var DouyinArticleWork = (props) => {
|
|
|
20345
19267
|
className: "flex justify-between items-start px-20 pb-20",
|
|
20346
19268
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(UserInfoSection$3, { ...props }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
20347
19269
|
className: "flex flex-col items-center gap-4",
|
|
20348
|
-
children:
|
|
20349
|
-
src: props.
|
|
19270
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
19271
|
+
src: generateQRCode(props.data.share_url, props.data.useDarkTheme),
|
|
20350
19272
|
alt: "二维码",
|
|
20351
19273
|
className: "h-auto w-75 rounded-xl"
|
|
20352
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
20353
|
-
className: "flex justify-center items-center rounded-2xl bg-surface w-100 h-100",
|
|
20354
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
20355
|
-
className: "text-muted",
|
|
20356
|
-
children: "二维码"
|
|
20357
|
-
})
|
|
20358
19274
|
})
|
|
20359
19275
|
})]
|
|
20360
19276
|
})
|
|
@@ -20401,24 +19317,15 @@ var formatPublishTime = (timestamp) => {
|
|
|
20401
19317
|
* @param props 组件属性
|
|
20402
19318
|
* @returns JSX元素
|
|
20403
19319
|
*/
|
|
20404
|
-
var QRCodeSection
|
|
19320
|
+
var QRCodeSection = (props) => {
|
|
20405
19321
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
20406
19322
|
className: "flex flex-col items-center",
|
|
20407
19323
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
20408
19324
|
className: "flex justify-center items-center w-100 h-100 p-4",
|
|
20409
|
-
children:
|
|
20410
|
-
src:
|
|
19325
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
19326
|
+
src: generateQRCode(props.share_url, props.useDarkTheme),
|
|
20411
19327
|
alt: "二维码",
|
|
20412
19328
|
className: "object-contain w-full h-full rounded-lg"
|
|
20413
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
20414
|
-
className: "flex flex-col justify-center items-center text-muted",
|
|
20415
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(QrCode, {
|
|
20416
|
-
width: 80,
|
|
20417
|
-
className: "mb-4"
|
|
20418
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
20419
|
-
className: "text-lg",
|
|
20420
|
-
children: "二维码生成失败"
|
|
20421
|
-
})]
|
|
20422
19329
|
})
|
|
20423
19330
|
})
|
|
20424
19331
|
});
|
|
@@ -20549,7 +19456,7 @@ var VideoInfoHeader = (props) => {
|
|
|
20549
19456
|
]
|
|
20550
19457
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
20551
19458
|
className: "shrink-0",
|
|
20552
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(QRCodeSection
|
|
19459
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(QRCodeSection, { ...props })
|
|
20553
19460
|
})]
|
|
20554
19461
|
})
|
|
20555
19462
|
});
|
|
@@ -20679,26 +19586,26 @@ var ReplyItemComponent = ({ reply, depth = 0, isLast, maxDepth = 6 }) => {
|
|
|
20679
19586
|
})
|
|
20680
19587
|
}), reply.children.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-0.5 bg-border-secondary h-full grow mt-3 rounded-t-full" })]
|
|
20681
19588
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
20682
|
-
className:
|
|
19589
|
+
className: cn("flex flex-col pl-6 min-w-0 gap-2", isLast && reply.children.length === 0 ? "pb-16" : "pb-6"),
|
|
20683
19590
|
children: [
|
|
20684
19591
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
20685
19592
|
className: "flex flex-nowrap items-center content-center w-full overflow-hidden",
|
|
20686
19593
|
children: [
|
|
20687
19594
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
20688
|
-
className:
|
|
19595
|
+
className: cn("mr-2 text-4xl font-normal text-muted", isNicknameLonger ? "min-w-0 truncate shrink" : "shrink-0"),
|
|
20689
19596
|
children: reply.nickname
|
|
20690
19597
|
}),
|
|
20691
19598
|
reply.label_text !== "" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
20692
|
-
className:
|
|
19599
|
+
className: cn("px-4 py-1 text-3xl rounded-xl mr-2", reply.label_text === "作者" ? "bg-[#fe2c55] text-white" : "bg-surface text-muted"),
|
|
20693
19600
|
children: reply.label_text
|
|
20694
19601
|
}),
|
|
20695
19602
|
reply.reply_to_username && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
20696
|
-
className:
|
|
19603
|
+
className: cn("flex items-center", !isNicknameLonger ? "overflow-hidden min-w-0 shrink" : "shrink-0"),
|
|
20697
19604
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(a, {
|
|
20698
19605
|
weight: "fill",
|
|
20699
19606
|
className: "w-7 h-auto mr-3.5 mx-1 text-muted shrink-0"
|
|
20700
19607
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
20701
|
-
className:
|
|
19608
|
+
className: cn("text-4xl font-normal text-muted", !isNicknameLonger && "truncate"),
|
|
20702
19609
|
children: reply.reply_to_username
|
|
20703
19610
|
})]
|
|
20704
19611
|
})
|
|
@@ -20768,7 +19675,7 @@ var ReplyItemComponent = ({ reply, depth = 0, isLast, maxDepth = 6 }) => {
|
|
|
20768
19675
|
*/
|
|
20769
19676
|
var CommentItemComponent$1 = (props) => {
|
|
20770
19677
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
20771
|
-
className:
|
|
19678
|
+
className: cn("flex flex-col px-6 pt-8", {
|
|
20772
19679
|
"pb-0": props.isLast,
|
|
20773
19680
|
"pb-10": !props.isLast
|
|
20774
19681
|
}),
|
|
@@ -20885,10 +19792,7 @@ var DouyinComment = import_react.memo((props) => {
|
|
|
20885
19792
|
className: "p-5 px-15",
|
|
20886
19793
|
children: [
|
|
20887
19794
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-20" }),
|
|
20888
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(VideoInfoHeader, {
|
|
20889
|
-
...props.data,
|
|
20890
|
-
qrCodeDataUrl: props.qrCodeDataUrl
|
|
20891
|
-
}),
|
|
19795
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(VideoInfoHeader, { ...props.data }),
|
|
20892
19796
|
randomSuggestWord && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
20893
19797
|
className: "mx-auto my-20 mb-5 ml-10",
|
|
20894
19798
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -21232,16 +20136,10 @@ var DouyinDynamic = (props) => {
|
|
|
21232
20136
|
className: "flex justify-between items-start px-20 pb-20",
|
|
21233
20137
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(UserInfoSection$2, { ...props }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
21234
20138
|
className: "flex flex-col items-center gap-4",
|
|
21235
|
-
children:
|
|
21236
|
-
src: props.
|
|
20139
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
20140
|
+
src: generateQRCode(props.data.share_url, props.data.useDarkTheme),
|
|
21237
20141
|
alt: "二维码",
|
|
21238
20142
|
className: "h-auto w-75 rounded-xl"
|
|
21239
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
21240
|
-
className: "flex justify-center items-center rounded-2xl bg-surface w-100 h-100",
|
|
21241
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
21242
|
-
className: "text-muted",
|
|
21243
|
-
children: "二维码"
|
|
21244
|
-
})
|
|
21245
20143
|
})
|
|
21246
20144
|
})]
|
|
21247
20145
|
})]
|
|
@@ -21400,8 +20298,8 @@ var DouyinFavoriteList = (props) => {
|
|
|
21400
20298
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-px w-full bg-linear-to-r from-surface-secondary via-border to-transparent" }),
|
|
21401
20299
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
21402
20300
|
className: "flex items-end gap-6",
|
|
21403
|
-
children: [
|
|
21404
|
-
src: props.
|
|
20301
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
20302
|
+
src: generateQRCode(props.data.share_url, props.data.useDarkTheme),
|
|
21405
20303
|
className: "w-65 h-auto rounded-2xl mix-blend-multiply",
|
|
21406
20304
|
alt: "QR"
|
|
21407
20305
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -21816,16 +20714,10 @@ var DouyinImageWork = (props) => {
|
|
|
21816
20714
|
className: "flex justify-between items-start px-20 pb-20",
|
|
21817
20715
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(UserInfoSection$1, { ...props }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
21818
20716
|
className: "flex flex-col items-center gap-4",
|
|
21819
|
-
children:
|
|
21820
|
-
src: props.
|
|
20717
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
20718
|
+
src: generateQRCode(props.data.share_url, props.data.useDarkTheme),
|
|
21821
20719
|
alt: "二维码",
|
|
21822
20720
|
className: "h-auto w-75 rounded-xl"
|
|
21823
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
21824
|
-
className: "flex justify-center items-center rounded-2xl bg-surface w-100 h-100",
|
|
21825
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
21826
|
-
className: "text-muted",
|
|
21827
|
-
children: "二维码"
|
|
21828
|
-
})
|
|
21829
20721
|
})
|
|
21830
20722
|
})]
|
|
21831
20723
|
})]
|
|
@@ -22058,7 +20950,7 @@ var InfoSection$1 = ({ data }) => {
|
|
|
22058
20950
|
/**
|
|
22059
20951
|
* 底部区域 - 主播信息 + 二维码 + 抖音Logo
|
|
22060
20952
|
*/
|
|
22061
|
-
var BottomSection = ({ data
|
|
20953
|
+
var BottomSection = ({ data }) => {
|
|
22062
20954
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
22063
20955
|
className: "flex justify-between items-end px-16 pt-24 pb-16",
|
|
22064
20956
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -22151,8 +21043,8 @@ var BottomSection = ({ data, qrCodeDataUrl }) => {
|
|
|
22151
21043
|
alt: "抖音",
|
|
22152
21044
|
className: "w-60 h-auto opacity-80 dark:opacity-70"
|
|
22153
21045
|
}),
|
|
22154
|
-
|
|
22155
|
-
src:
|
|
21046
|
+
generateQRCode(data.share_url, data.useDarkTheme) ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
21047
|
+
src: generateQRCode(data.share_url, data.useDarkTheme),
|
|
22156
21048
|
alt: "二维码",
|
|
22157
21049
|
className: "h-auto w-75"
|
|
22158
21050
|
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
@@ -22174,7 +21066,6 @@ var BottomSection = ({ data, qrCodeDataUrl }) => {
|
|
|
22174
21066
|
* 抖音直播组件
|
|
22175
21067
|
*/
|
|
22176
21068
|
var DouyinLive = (props) => {
|
|
22177
|
-
const { qrCodeDataUrl } = props;
|
|
22178
21069
|
const d = props.data;
|
|
22179
21070
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DefaultLayout, {
|
|
22180
21071
|
...props,
|
|
@@ -22184,10 +21075,7 @@ var DouyinLive = (props) => {
|
|
|
22184
21075
|
children: [
|
|
22185
21076
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CoverSection$1, { imageUrl: d.image_url }),
|
|
22186
21077
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(InfoSection$1, { data: d }),
|
|
22187
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BottomSection, {
|
|
22188
|
-
data: d,
|
|
22189
|
-
qrCodeDataUrl
|
|
22190
|
-
})
|
|
21078
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BottomSection, { data: d })
|
|
22191
21079
|
]
|
|
22192
21080
|
})]
|
|
22193
21081
|
});
|
|
@@ -22317,7 +21205,7 @@ var MusicAuthorInfoSection = ({ avatarUrl, username, userShortId, totalFavorited
|
|
|
22317
21205
|
* @param props 组件属性
|
|
22318
21206
|
* @returns JSX元素
|
|
22319
21207
|
*/
|
|
22320
|
-
var MusicQRCodeSection = ({
|
|
21208
|
+
var MusicQRCodeSection = ({ share_url, useDarkTheme }) => {
|
|
22321
21209
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
22322
21210
|
className: "flex flex-col-reverse items-center -mb-12 mr-18",
|
|
22323
21211
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -22326,7 +21214,7 @@ var MusicQRCodeSection = ({ qrCodeDataUrl }) => {
|
|
|
22326
21214
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
22327
21215
|
className: "p-2.5 rounded-sm border-[7px] border-dashed border-border",
|
|
22328
21216
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
22329
|
-
src:
|
|
21217
|
+
src: generateQRCode(share_url, useDarkTheme),
|
|
22330
21218
|
alt: "二维码",
|
|
22331
21219
|
className: "w-87.5 h-87.5 select-text"
|
|
22332
21220
|
})
|
|
@@ -22339,7 +21227,7 @@ var MusicQRCodeSection = ({ qrCodeDataUrl }) => {
|
|
|
22339
21227
|
* @returns JSX元素
|
|
22340
21228
|
*/
|
|
22341
21229
|
var DouyinMusicInfo = (props) => {
|
|
22342
|
-
const { data
|
|
21230
|
+
const { data } = props;
|
|
22343
21231
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DefaultLayout, {
|
|
22344
21232
|
...props,
|
|
22345
21233
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
@@ -22373,7 +21261,7 @@ var DouyinMusicInfo = (props) => {
|
|
|
22373
21261
|
fans: data.fans,
|
|
22374
21262
|
useDarkTheme: data.useDarkTheme
|
|
22375
21263
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MusicQRCodeSection, {
|
|
22376
|
-
|
|
21264
|
+
share_url: data.share_url,
|
|
22377
21265
|
useDarkTheme: data.useDarkTheme
|
|
22378
21266
|
})]
|
|
22379
21267
|
})
|
|
@@ -22389,7 +21277,7 @@ var DouyinMusicInfo = (props) => {
|
|
|
22389
21277
|
*/
|
|
22390
21278
|
var DouyinQrcodeImg = import_react.memo((props) => {
|
|
22391
21279
|
const isDark = props.data?.useDarkTheme ?? false;
|
|
22392
|
-
const qrCodeImage = props.data.
|
|
21280
|
+
const qrCodeImage = generateQRCode(props.data.share_url || "", isDark);
|
|
22393
21281
|
const theme = {
|
|
22394
21282
|
bg: isDark ? "#000000" : "#FFFFFF",
|
|
22395
21283
|
text: isDark ? "#FFFFFF" : "#000000",
|
|
@@ -22749,8 +21637,8 @@ var DouyinRecommendList = (props) => {
|
|
|
22749
21637
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-px w-full bg-linear-to-r from-surface-secondary via-border to-transparent" }),
|
|
22750
21638
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
22751
21639
|
className: "flex items-end gap-6",
|
|
22752
|
-
children: [
|
|
22753
|
-
src: props.
|
|
21640
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
21641
|
+
src: generateQRCode(props.data.share_url, props.data.useDarkTheme),
|
|
22754
21642
|
className: "w-65 h-auto rounded-2xl mix-blend-multiply",
|
|
22755
21643
|
alt: "QR"
|
|
22756
21644
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -24010,16 +22898,10 @@ var DouyinVideoWork = (props) => {
|
|
|
24010
22898
|
className: "flex justify-between items-start px-20 pb-20",
|
|
24011
22899
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(UserInfoSection, { ...props }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
24012
22900
|
className: "flex flex-col items-center gap-4",
|
|
24013
|
-
children:
|
|
24014
|
-
src: props.
|
|
22901
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
22902
|
+
src: generateQRCode(props.data.share_url, props.data.useDarkTheme),
|
|
24015
22903
|
alt: "二维码",
|
|
24016
22904
|
className: "h-auto w-75 rounded-xl"
|
|
24017
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
24018
|
-
className: "flex justify-center items-center rounded-2xl bg-surface w-100 h-100",
|
|
24019
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
24020
|
-
className: "text-muted",
|
|
24021
|
-
children: "二维码"
|
|
24022
|
-
})
|
|
24023
22905
|
})
|
|
24024
22906
|
})]
|
|
24025
22907
|
})]
|
|
@@ -24053,28 +22935,19 @@ var formatKuaishouLikeCount = (count) => {
|
|
|
24053
22935
|
* @param props 组件属性
|
|
24054
22936
|
* @returns JSX元素
|
|
24055
22937
|
*/
|
|
24056
|
-
var KuaishouQRCodeSection = (
|
|
22938
|
+
var KuaishouQRCodeSection = (props) => {
|
|
24057
22939
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
24058
22940
|
className: "flex flex-col items-center -mr-10",
|
|
24059
22941
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
24060
22942
|
className: "mt-20 flex items-center justify-center w-150 h-150 bg-surface rounded-lg shadow-medium",
|
|
24061
|
-
children:
|
|
24062
|
-
src:
|
|
22943
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
22944
|
+
src: generateQRCode(props.share_url, props.useDarkTheme),
|
|
24063
22945
|
alt: "二维码",
|
|
24064
22946
|
className: "object-contain w-full h-full"
|
|
24065
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
24066
|
-
className: "flex flex-col justify-center items-center text-muted",
|
|
24067
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(QrCode, {
|
|
24068
|
-
width: 80,
|
|
24069
|
-
className: "mb-4"
|
|
24070
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
24071
|
-
className: "text-lg",
|
|
24072
|
-
children: "二维码生成失败"
|
|
24073
|
-
})]
|
|
24074
22947
|
})
|
|
24075
22948
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
24076
22949
|
className: "mt-5 text-[45px] text-center text-foreground",
|
|
24077
|
-
children:
|
|
22950
|
+
children: props.Type === "视频" ? "视频直链(永久)" : props.Type === "图集" ? `图集分享链接 共${props.ImageLength}张` : "分享链接"
|
|
24078
22951
|
})]
|
|
24079
22952
|
});
|
|
24080
22953
|
};
|
|
@@ -24083,7 +22956,7 @@ var KuaishouQRCodeSection = ({ qrCodeDataUrl, type, imageLength }) => {
|
|
|
24083
22956
|
* @param props 组件属性
|
|
24084
22957
|
* @returns JSX元素
|
|
24085
22958
|
*/
|
|
24086
|
-
var KuaishouVideoInfoHeader = (
|
|
22959
|
+
var KuaishouVideoInfoHeader = (props) => {
|
|
24087
22960
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
24088
22961
|
className: "flex justify-between items-center max-w-300 mx-auto p-5",
|
|
24089
22962
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -24108,33 +22981,33 @@ var KuaishouVideoInfoHeader = ({ type, commentLength, videoSize, likeCount, view
|
|
|
24108
22981
|
className: "flex items-center p-2.5 tracking-[6px] text-[45px] text-left",
|
|
24109
22982
|
children: [
|
|
24110
22983
|
"评论数量:",
|
|
24111
|
-
|
|
22984
|
+
props.CommentLength,
|
|
24112
22985
|
"条"
|
|
24113
22986
|
]
|
|
24114
22987
|
}),
|
|
24115
|
-
|
|
22988
|
+
props.Type === "视频" && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
24116
22989
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
24117
22990
|
className: "flex items-center p-2.5 tracking-[6px] text-[45px] text-left",
|
|
24118
22991
|
children: [
|
|
24119
22992
|
"视频大小:",
|
|
24120
|
-
|
|
22993
|
+
props.VideoSize,
|
|
24121
22994
|
"MB"
|
|
24122
22995
|
]
|
|
24123
22996
|
}),
|
|
24124
22997
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
24125
22998
|
className: "flex items-center p-2.5 tracking-[6px] text-[45px] text-left",
|
|
24126
|
-
children: ["点赞数量:", likeCount]
|
|
22999
|
+
children: ["点赞数量:", props.likeCount]
|
|
24127
23000
|
}),
|
|
24128
23001
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
24129
23002
|
className: "flex items-center p-2.5 tracking-[6px] text-[45px] text-left",
|
|
24130
|
-
children: ["观看次数:", viewCount]
|
|
23003
|
+
children: ["观看次数:", props.viewCount]
|
|
24131
23004
|
})
|
|
24132
23005
|
] }),
|
|
24133
|
-
|
|
23006
|
+
props.Type === "图集" && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
24134
23007
|
className: "flex items-center p-2.5 tracking-[6px] text-[45px] text-left",
|
|
24135
23008
|
children: [
|
|
24136
23009
|
"图片数量:",
|
|
24137
|
-
|
|
23010
|
+
props.ImageLength,
|
|
24138
23011
|
"张"
|
|
24139
23012
|
]
|
|
24140
23013
|
})
|
|
@@ -24148,11 +23021,11 @@ var KuaishouVideoInfoHeader = ({ type, commentLength, videoSize, likeCount, view
|
|
|
24148
23021
|
* @param props 组件属性
|
|
24149
23022
|
* @returns JSX元素
|
|
24150
23023
|
*/
|
|
24151
|
-
var KuaishouCommentItemComponent = ({
|
|
23024
|
+
var KuaishouCommentItemComponent = ({ ...props }, isLast = false) => {
|
|
24152
23025
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
24153
23026
|
className: `flex px-10 pt-10 ${isLast ? "pb-0" : "pb-10"}`,
|
|
24154
23027
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
24155
|
-
src:
|
|
23028
|
+
src: props.userimageurl,
|
|
24156
23029
|
className: "mb-12.5 w-[187.5px] h-[187.5px] rounded-full mr-8 object-cover shadow-lg",
|
|
24157
23030
|
alt: "用户头像"
|
|
24158
23031
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -24162,7 +23035,7 @@ var KuaishouCommentItemComponent = ({ comment, isLast = false }) => {
|
|
|
24162
23035
|
className: "mb-12.5 text-[50px] text-foreground/70 relative flex items-center",
|
|
24163
23036
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
24164
23037
|
className: "font-medium",
|
|
24165
|
-
children:
|
|
23038
|
+
children: props.nickname
|
|
24166
23039
|
})
|
|
24167
23040
|
}),
|
|
24168
23041
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
@@ -24171,13 +23044,13 @@ var KuaishouCommentItemComponent = ({ comment, isLast = false }) => {
|
|
|
24171
23044
|
wordBreak: "break-word",
|
|
24172
23045
|
overflowWrap: "break-word"
|
|
24173
23046
|
},
|
|
24174
|
-
children: renderKuaishouCommentRichText(
|
|
23047
|
+
children: renderKuaishouCommentRichText(props.text)
|
|
24175
23048
|
}),
|
|
24176
|
-
(
|
|
23049
|
+
(props.commentimage || props.sticker) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
24177
23050
|
className: "flex my-5 overflow-hidden shadow-md rounded-2xl w-[95%] flex-1",
|
|
24178
23051
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
24179
23052
|
className: "object-contain w-full h-full rounded-2xl",
|
|
24180
|
-
src:
|
|
23053
|
+
src: props.commentimage || props.sticker,
|
|
24181
23054
|
alt: "评论图片"
|
|
24182
23055
|
})
|
|
24183
23056
|
}),
|
|
@@ -24188,17 +23061,17 @@ var KuaishouCommentItemComponent = ({ comment, isLast = false }) => {
|
|
|
24188
23061
|
children: [
|
|
24189
23062
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
24190
23063
|
className: "text-[45px] select-text",
|
|
24191
|
-
children: formatKuaishouCommentTime(
|
|
23064
|
+
children: formatKuaishouCommentTime(props.create_time)
|
|
24192
23065
|
}),
|
|
24193
|
-
|
|
23066
|
+
props.ip_label && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
24194
23067
|
className: "text-[45px] select-text",
|
|
24195
|
-
children:
|
|
23068
|
+
children: props.ip_label
|
|
24196
23069
|
}),
|
|
24197
|
-
|
|
23070
|
+
props.reply_comment_total && props.reply_comment_total > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
24198
23071
|
className: "text-[40px] text-foreground/70",
|
|
24199
23072
|
children: [
|
|
24200
23073
|
"共",
|
|
24201
|
-
|
|
23074
|
+
props.reply_comment_total,
|
|
24202
23075
|
"条回复"
|
|
24203
23076
|
]
|
|
24204
23077
|
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
@@ -24215,7 +23088,7 @@ var KuaishouCommentItemComponent = ({ comment, isLast = false }) => {
|
|
|
24215
23088
|
className: "stroke-current"
|
|
24216
23089
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
24217
23090
|
className: "text-[50px] select-text",
|
|
24218
|
-
children: formatKuaishouLikeCount(
|
|
23091
|
+
children: formatKuaishouLikeCount(props.digg_count)
|
|
24219
23092
|
})]
|
|
24220
23093
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
24221
23094
|
className: "flex items-center transition-colors cursor-pointer hover:text-accent",
|
|
@@ -24243,24 +23116,11 @@ var KuaishouComment = import_react.memo((props) => {
|
|
|
24243
23116
|
className: "p-5",
|
|
24244
23117
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
24245
23118
|
className: "flex justify-between items-center max-w-300 mx-auto p-5",
|
|
24246
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(KuaishouVideoInfoHeader, {
|
|
24247
|
-
type: props.data?.Type || "视频",
|
|
24248
|
-
commentLength: props.data?.CommentLength || 0,
|
|
24249
|
-
videoSize: props.data?.VideoSize,
|
|
24250
|
-
likeCount: props.data?.likeCount,
|
|
24251
|
-
viewCount: props.data?.viewCount,
|
|
24252
|
-
imageLength: props.data?.ImageLength,
|
|
24253
|
-
useDarkTheme: props.data?.useDarkTheme
|
|
24254
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(KuaishouQRCodeSection, {
|
|
24255
|
-
qrCodeDataUrl: props.qrCodeDataUrl || "",
|
|
24256
|
-
type: props.data?.Type || "视频",
|
|
24257
|
-
imageLength: props.data?.ImageLength,
|
|
24258
|
-
useDarkTheme: props.data?.useDarkTheme
|
|
24259
|
-
})]
|
|
23119
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(KuaishouVideoInfoHeader, { ...props.data }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(KuaishouQRCodeSection, { ...props.data })]
|
|
24260
23120
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
24261
23121
|
className: "overflow-auto mx-auto max-w-full",
|
|
24262
23122
|
children: commentsArray.length > 0 ? commentsArray.map((comment, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(KuaishouCommentItemComponent, {
|
|
24263
|
-
comment,
|
|
23123
|
+
...comment,
|
|
24264
23124
|
isLast: index === commentsArray.length - 1
|
|
24265
23125
|
}, comment.cid || index)) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
24266
23126
|
className: "flex justify-center items-center py-20 text-muted",
|
|
@@ -24296,7 +23156,7 @@ var InlineCalloutCode = ({ children, className }) => /* @__PURE__ */ (0, import_
|
|
|
24296
23156
|
*/
|
|
24297
23157
|
var Changelog = import_react.memo((props) => {
|
|
24298
23158
|
const isDark = props.data.useDarkTheme ?? false;
|
|
24299
|
-
const
|
|
23159
|
+
const share_url = props.data?.share_url || "";
|
|
24300
23160
|
const backgroundColors = isDark ? {
|
|
24301
23161
|
base: "#0a0a0a",
|
|
24302
23162
|
primary: "rgba(212, 175, 55, 0.28)",
|
|
@@ -24608,12 +23468,12 @@ var Changelog = import_react.memo((props) => {
|
|
|
24608
23468
|
children: props.data?.markdown ?? ""
|
|
24609
23469
|
})
|
|
24610
23470
|
}),
|
|
24611
|
-
|
|
23471
|
+
share_url && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
24612
23472
|
className: "flex flex-col items-center gap-12 py-8",
|
|
24613
23473
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
24614
23474
|
className: "w-120 h-auto",
|
|
24615
23475
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
24616
|
-
src:
|
|
23476
|
+
src: generateQRCode(share_url, isDark),
|
|
24617
23477
|
alt: "二维码",
|
|
24618
23478
|
className: "w-full h-full object-contain"
|
|
24619
23479
|
})
|
|
@@ -26120,7 +24980,7 @@ var SectionTitle = ({ icon, en, zh, color }) => /* @__PURE__ */ (0, import_jsx_r
|
|
|
26120
24980
|
* API错误显示组件 - 手机端 Apple 风格
|
|
26121
24981
|
*/
|
|
26122
24982
|
var handlerError = (props) => {
|
|
26123
|
-
const { data
|
|
24983
|
+
const { data } = props;
|
|
26124
24984
|
const isDark = data.useDarkTheme === true;
|
|
26125
24985
|
const businessError = data.type === "business_error" ? data.error : null;
|
|
26126
24986
|
const displayMethod = businessError?.businessName || data.method;
|
|
@@ -26395,7 +25255,7 @@ var handlerError = (props) => {
|
|
|
26395
25255
|
children: displayMethod
|
|
26396
25256
|
})]
|
|
26397
25257
|
}),
|
|
26398
|
-
data.isVerification &&
|
|
25258
|
+
data.isVerification && data.verificationUrl && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
26399
25259
|
className: "mb-16 p-12 rounded-[40px]",
|
|
26400
25260
|
style: { backgroundColor: isDark ? "rgba(0,0,0,0.25)" : "rgba(255,255,255,0.6)" },
|
|
26401
25261
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -26411,7 +25271,7 @@ var handlerError = (props) => {
|
|
|
26411
25271
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
26412
25272
|
className: "flex gap-16 items-center",
|
|
26413
25273
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
26414
|
-
src:
|
|
25274
|
+
src: generateQRCode(data.verificationUrl, isDark),
|
|
26415
25275
|
alt: "验证二维码",
|
|
26416
25276
|
className: "w-64 h-64 rounded-3xl"
|
|
26417
25277
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -27562,7 +26422,7 @@ var LivePhotoTip = import_react.memo((props) => {
|
|
|
27562
26422
|
]
|
|
27563
26423
|
}),
|
|
27564
26424
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27565
|
-
className: "relative z-10 flex flex-col min-h-360 px-
|
|
26425
|
+
className: "relative z-10 flex flex-col min-h-360 px-16 py-16",
|
|
27566
26426
|
children: [
|
|
27567
26427
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-20" }),
|
|
27568
26428
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -27571,7 +26431,7 @@ var LivePhotoTip = import_react.memo((props) => {
|
|
|
27571
26431
|
className: "rounded-full p-5 shrink-0",
|
|
27572
26432
|
style: { background: "radial-gradient(circle, " + (isDark ? "rgba(255,255,255,0.1)" : "rgba(0,0,0,0.06)") + " 0%, transparent 70%)" },
|
|
27573
26433
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ArrowDownToLine, {
|
|
27574
|
-
className: "w-
|
|
26434
|
+
className: "w-30 h-auto",
|
|
27575
26435
|
style: { color: primaryColor }
|
|
27576
26436
|
})
|
|
27577
26437
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
|
|
@@ -27579,9 +26439,9 @@ var LivePhotoTip = import_react.memo((props) => {
|
|
|
27579
26439
|
style: { color: accentColor },
|
|
27580
26440
|
children: "保存原图"
|
|
27581
26441
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
|
|
27582
|
-
className: "text-
|
|
26442
|
+
className: "text-5xl mt-1",
|
|
27583
26443
|
style: { color: mutedColor },
|
|
27584
|
-
children: "
|
|
26444
|
+
children: "点击「查看原图」后保存到相册即可识别为实况照片"
|
|
27585
26445
|
})] })]
|
|
27586
26446
|
}),
|
|
27587
26447
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -27667,7 +26527,7 @@ LivePhotoTip.displayName = "LivePhotoTip";
|
|
|
27667
26527
|
* @returns JSX元素
|
|
27668
26528
|
*/
|
|
27669
26529
|
var QrLogin = import_react.memo((props) => {
|
|
27670
|
-
const qrCodeDataUrl = props.
|
|
26530
|
+
const qrCodeDataUrl = props.data.qr_url ? generateQRCode(props.data.qr_url, props.data.useDarkTheme ?? false) : "";
|
|
27671
26531
|
const isDark = props.data.useDarkTheme ?? false;
|
|
27672
26532
|
const bgColor = isDark ? "#0f0f1a" : "#f8f6ff";
|
|
27673
26533
|
const secondaryColor = isDark ? "#a78bfa" : "#8b5cf6";
|
|
@@ -28454,7 +27314,7 @@ var VersionWarning = (props) => {
|
|
|
28454
27314
|
})
|
|
28455
27315
|
}),
|
|
28456
27316
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Puzzle, {
|
|
28457
|
-
className:
|
|
27317
|
+
className: cn("w-10 h-auto"),
|
|
28458
27318
|
style: { color: mutedColor }
|
|
28459
27319
|
}),
|
|
28460
27320
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
@@ -28724,35 +27584,11 @@ var formatXiaohongshuLikeCount = (count) => {
|
|
|
28724
27584
|
return count || "0";
|
|
28725
27585
|
};
|
|
28726
27586
|
/**
|
|
28727
|
-
* 二维码区域组件
|
|
28728
|
-
* @param props 组件属性
|
|
28729
|
-
* @returns JSX元素
|
|
28730
|
-
*/
|
|
28731
|
-
var QRCodeSection = ({ qrCodeDataUrl }) => {
|
|
28732
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
28733
|
-
className: "flex flex-col justify-center items-center p-5",
|
|
28734
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
28735
|
-
className: "flex overflow-hidden justify-center items-center bg-white w-110 h-110",
|
|
28736
|
-
children: qrCodeDataUrl ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
28737
|
-
src: qrCodeDataUrl,
|
|
28738
|
-
alt: "二维码",
|
|
28739
|
-
className: "object-contain"
|
|
28740
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(QrCode, {
|
|
28741
|
-
width: 200,
|
|
28742
|
-
className: "text-muted"
|
|
28743
|
-
})
|
|
28744
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
|
|
28745
|
-
className: "mt-5 text-[40px] text-muted text-center",
|
|
28746
|
-
children: "扫码查看原笔记"
|
|
28747
|
-
})]
|
|
28748
|
-
});
|
|
28749
|
-
};
|
|
28750
|
-
/**
|
|
28751
27587
|
* 笔记信息头部组件
|
|
28752
27588
|
* @param props 组件属性
|
|
28753
27589
|
* @returns JSX元素
|
|
28754
27590
|
*/
|
|
28755
|
-
var NoteInfoHeader = (
|
|
27591
|
+
var NoteInfoHeader = (props) => {
|
|
28756
27592
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
28757
27593
|
className: "flex justify-between items-center max-w-300 mx-auto p-5",
|
|
28758
27594
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -28775,27 +27611,40 @@ var NoteInfoHeader = ({ type, commentLength, imageLength, qrCodeDataUrl }) => {
|
|
|
28775
27611
|
children: [
|
|
28776
27612
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
28777
27613
|
className: "tracking-[6px] text-[45px] select-text",
|
|
28778
|
-
children: ["笔记类型:",
|
|
27614
|
+
children: ["笔记类型:", props.Type]
|
|
28779
27615
|
}),
|
|
28780
27616
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
28781
27617
|
className: "tracking-[6px] text-[45px] select-text",
|
|
28782
27618
|
children: [
|
|
28783
27619
|
"评论数量:",
|
|
28784
|
-
|
|
27620
|
+
props.CommentLength,
|
|
28785
27621
|
"条"
|
|
28786
27622
|
]
|
|
28787
27623
|
}),
|
|
28788
|
-
|
|
27624
|
+
props.Type === "图文" && props.ImageLength && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
28789
27625
|
className: "tracking-[6px] text-[45px] select-text",
|
|
28790
27626
|
children: [
|
|
28791
27627
|
"图片数量:",
|
|
28792
|
-
|
|
27628
|
+
props.ImageLength,
|
|
28793
27629
|
"张"
|
|
28794
27630
|
]
|
|
28795
27631
|
})
|
|
28796
27632
|
]
|
|
28797
27633
|
})]
|
|
28798
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.
|
|
27634
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
27635
|
+
className: "flex flex-col justify-center items-center p-5",
|
|
27636
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27637
|
+
className: "flex overflow-hidden justify-center items-center bg-white w-110 h-110",
|
|
27638
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
27639
|
+
src: generateQRCode(props.share_url, props.useDarkTheme),
|
|
27640
|
+
alt: "二维码",
|
|
27641
|
+
className: "object-contain"
|
|
27642
|
+
})
|
|
27643
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
|
|
27644
|
+
className: "mt-5 text-[40px] text-muted text-center",
|
|
27645
|
+
children: "扫码查看原笔记"
|
|
27646
|
+
})]
|
|
27647
|
+
})]
|
|
28799
27648
|
});
|
|
28800
27649
|
};
|
|
28801
27650
|
/**
|
|
@@ -28803,11 +27652,11 @@ var NoteInfoHeader = ({ type, commentLength, imageLength, qrCodeDataUrl }) => {
|
|
|
28803
27652
|
* @param props 组件属性
|
|
28804
27653
|
* @returns JSX元素
|
|
28805
27654
|
*/
|
|
28806
|
-
var CommentItemComponent = ({
|
|
27655
|
+
var CommentItemComponent = ({ ...props }, isLast = false) => {
|
|
28807
27656
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
28808
27657
|
className: `flex px-10 pt-15 ${isLast ? "pb-0" : "pb-15"}`,
|
|
28809
27658
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
28810
|
-
src:
|
|
27659
|
+
src: props.user_info.image,
|
|
28811
27660
|
className: "mb-12.5 w-[187.5px] h-[187.5px] rounded-full mr-8 object-cover shadow-lg",
|
|
28812
27661
|
alt: "用户头像"
|
|
28813
27662
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -28817,8 +27666,8 @@ var CommentItemComponent = ({ comment, isLast = false }) => {
|
|
|
28817
27666
|
className: "mb-12.5 text-[50px] text-foreground/70 relative flex items-center select-text",
|
|
28818
27667
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
28819
27668
|
className: "text-5xl",
|
|
28820
|
-
children:
|
|
28821
|
-
}),
|
|
27669
|
+
children: props.user_info.nickname
|
|
27670
|
+
}), props.show_tags && props.show_tags.length > 0 && props.show_tags.map((tag, index) => {
|
|
28822
27671
|
if (tag === "is_author") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
28823
27672
|
className: "inline-block px-6 py-3 ml-3 text-4xl rounded-full bg-surface text-muted",
|
|
28824
27673
|
children: "作者"
|
|
@@ -28836,13 +27685,13 @@ var CommentItemComponent = ({ comment, isLast = false }) => {
|
|
|
28836
27685
|
wordBreak: "break-word",
|
|
28837
27686
|
overflowWrap: "break-word"
|
|
28838
27687
|
},
|
|
28839
|
-
children: renderXiaohongshuCommentRichText(
|
|
27688
|
+
children: renderXiaohongshuCommentRichText(props.content)
|
|
28840
27689
|
}),
|
|
28841
|
-
|
|
27690
|
+
props.pictures && props.pictures.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
28842
27691
|
className: "flex my-5 overflow-hidden shadow-md rounded-2xl w-[95%] flex-1",
|
|
28843
27692
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
28844
27693
|
className: "object-contain w-full h-full rounded-2xl",
|
|
28845
|
-
src:
|
|
27694
|
+
src: props.pictures[0].url_default,
|
|
28846
27695
|
alt: "评论图片"
|
|
28847
27696
|
})
|
|
28848
27697
|
}),
|
|
@@ -28853,17 +27702,17 @@ var CommentItemComponent = ({ comment, isLast = false }) => {
|
|
|
28853
27702
|
children: [
|
|
28854
27703
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
28855
27704
|
className: "text-[45px]",
|
|
28856
|
-
children: formatXiaohongshuCommentTime(
|
|
27705
|
+
children: formatXiaohongshuCommentTime(props.create_time)
|
|
28857
27706
|
}),
|
|
28858
27707
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
28859
27708
|
className: "text-[45px]",
|
|
28860
|
-
children:
|
|
27709
|
+
children: props.ip_location
|
|
28861
27710
|
}),
|
|
28862
|
-
parseInt(
|
|
27711
|
+
parseInt(props.sub_comment_count) > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
28863
27712
|
className: "text-[40px] text-foreground/70",
|
|
28864
27713
|
children: [
|
|
28865
27714
|
"共",
|
|
28866
|
-
|
|
27715
|
+
props.sub_comment_count,
|
|
28867
27716
|
"条回复"
|
|
28868
27717
|
]
|
|
28869
27718
|
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
@@ -28877,10 +27726,10 @@ var CommentItemComponent = ({ comment, isLast = false }) => {
|
|
|
28877
27726
|
className: "flex items-center space-x-2 transition-colors cursor-pointer",
|
|
28878
27727
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Heart, {
|
|
28879
27728
|
size: 60,
|
|
28880
|
-
className:
|
|
27729
|
+
className: props.liked ? "text-red-500 fill-current" : "text-muted"
|
|
28881
27730
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
28882
27731
|
className: "text-[50px] select-text",
|
|
28883
|
-
children: formatXiaohongshuLikeCount(
|
|
27732
|
+
children: formatXiaohongshuLikeCount(props.like_count)
|
|
28884
27733
|
})]
|
|
28885
27734
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
28886
27735
|
className: "flex items-center transition-colors cursor-pointer",
|
|
@@ -28891,10 +27740,10 @@ var CommentItemComponent = ({ comment, isLast = false }) => {
|
|
|
28891
27740
|
})]
|
|
28892
27741
|
})]
|
|
28893
27742
|
}),
|
|
28894
|
-
|
|
27743
|
+
props.sub_comments && props.sub_comments.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
28895
27744
|
className: "pl-6 mt-6",
|
|
28896
|
-
children:
|
|
28897
|
-
className: `py-4 ${index !==
|
|
27745
|
+
children: props.sub_comments.map((subComment, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
27746
|
+
className: `py-4 ${index !== props.sub_comments.length - 1 ? "border-b border-divider" : ""}`,
|
|
28898
27747
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
28899
27748
|
className: "flex items-start space-x-4",
|
|
28900
27749
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
@@ -28963,18 +27812,13 @@ var XiaohongshuComment = import_react.memo((props) => {
|
|
|
28963
27812
|
...props,
|
|
28964
27813
|
children: [
|
|
28965
27814
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-30" }),
|
|
28966
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(NoteInfoHeader, {
|
|
28967
|
-
type: props.data.Type,
|
|
28968
|
-
commentLength: props.data.CommentLength,
|
|
28969
|
-
imageLength: props.data.ImageLength,
|
|
28970
|
-
qrCodeDataUrl: props.qrCodeDataUrl
|
|
28971
|
-
}),
|
|
27815
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(NoteInfoHeader, { ...props.data }),
|
|
28972
27816
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
28973
27817
|
className: "overflow-auto mx-20 max-w-full",
|
|
28974
27818
|
children: props.data.CommentsData.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
28975
27819
|
className: "divide-y divide-divider",
|
|
28976
27820
|
children: props.data.CommentsData.map((comment, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommentItemComponent, {
|
|
28977
|
-
comment,
|
|
27821
|
+
...comment,
|
|
28978
27822
|
isLast: index === props.data.CommentsData.length - 1
|
|
28979
27823
|
}, comment.id))
|
|
28980
27824
|
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
@@ -30507,6 +29351,7 @@ var SSRRender = class {
|
|
|
30507
29351
|
async render(request) {
|
|
30508
29352
|
try {
|
|
30509
29353
|
logger$1.debug("[SSR] 开始渲染组件,预设模板:", `${logger$1.yellow(`${request.templateType}/`)}${request.templateName}`);
|
|
29354
|
+
const startTime = Date.now();
|
|
30510
29355
|
const ctx = {
|
|
30511
29356
|
request,
|
|
30512
29357
|
outputDir: this.outputDir,
|
|
@@ -30529,6 +29374,8 @@ var SSRRender = class {
|
|
|
30529
29374
|
const fullHtml = this.htmlWrapper.wrapContent(ctx.state.html ?? htmlContent, filePath, request.data.useDarkTheme ?? false);
|
|
30530
29375
|
fs.writeFileSync(filePath, fullHtml, "utf-8");
|
|
30531
29376
|
if (process.env.NODE_ENV === "development") DevDataManager.saveRenderData(request.templateType, request.templateName, buildDevPreviewPayload(request.data, ctx.state.props));
|
|
29377
|
+
const endTime = Date.now();
|
|
29378
|
+
logger$1.debug(`[SSR] ${logger$1.yellow(`${request.templateType}/`)}${request.templateName} Done! ${endTime - startTime >= 1e3 ? logger$1.green(`${((endTime - startTime) / 1e3).toFixed(2)} s`) : logger$1.green(`${endTime - startTime} ms`)}`);
|
|
30532
29379
|
return {
|
|
30533
29380
|
success: true,
|
|
30534
29381
|
htmlPath: filePath
|
|
@@ -30723,114 +29570,12 @@ var isSemverGreater = (remote, local) => {
|
|
|
30723
29570
|
};
|
|
30724
29571
|
//#endregion
|
|
30725
29572
|
//#region src/module/utils/Render/plugins.ts
|
|
30726
|
-
var import_qr_code_styling = /* @__PURE__ */ __toESM(require_qr_code_styling(), 1);
|
|
30727
|
-
/**
|
|
30728
|
-
* 创建 DOMPurify 实例
|
|
30729
|
-
* 使用 happy-dom 的 Window 来创建隔离的 DOM 环境
|
|
30730
|
-
*/
|
|
30731
|
-
var createDomPurify = () => {
|
|
30732
|
-
return purify(new Window());
|
|
30733
|
-
};
|
|
30734
|
-
/**
|
|
30735
|
-
* 对值进行消毒处理
|
|
30736
|
-
* 如果是字符串则进行 HTML 消毒
|
|
30737
|
-
* 如果是数组则递归处理每个元素
|
|
30738
|
-
* 如果是对象则递归处理每个属性值
|
|
30739
|
-
* 其他类型直接返回原值
|
|
30740
|
-
* @param value 需要消毒的值
|
|
30741
|
-
* @returns 消毒后的值
|
|
30742
|
-
*/
|
|
30743
|
-
var sanitizeValue = (value) => {
|
|
30744
|
-
const domPurify = createDomPurify();
|
|
30745
|
-
if (typeof value === "string") return domPurify.sanitize(value);
|
|
30746
|
-
if (Array.isArray(value)) return value.map((item) => sanitizeValue(item));
|
|
30747
|
-
if (value && typeof value === "object") {
|
|
30748
|
-
const output = {};
|
|
30749
|
-
for (const [key, item] of Object.entries(value)) output[key] = sanitizeValue(item);
|
|
30750
|
-
return output;
|
|
30751
|
-
}
|
|
30752
|
-
return value;
|
|
30753
|
-
};
|
|
30754
|
-
/**
|
|
30755
|
-
* 对渲染数据进行消毒处理,防止 XSS 攻击。
|
|
30756
|
-
* 在渲染前调用,确保数据安全。
|
|
30757
|
-
*/
|
|
30758
|
-
var createSanitizeContentPlugin = () => {
|
|
30759
|
-
return {
|
|
30760
|
-
name: "数据消毒",
|
|
30761
|
-
enforce: "pre",
|
|
30762
|
-
beforeRender(ctx) {
|
|
30763
|
-
ctx.request.data = sanitizeValue(ctx.request.data);
|
|
30764
|
-
ctx.state.props = sanitizeValue(ctx.state.props);
|
|
30765
|
-
}
|
|
30766
|
-
};
|
|
30767
|
-
};
|
|
30768
|
-
/**
|
|
30769
|
-
* 二维码插件工厂
|
|
30770
|
-
* 为指定字段生成二维码数据 URL
|
|
30771
|
-
* @param options 插件配置选项
|
|
30772
|
-
* @returns 二维码插件实例
|
|
30773
|
-
*/
|
|
30774
|
-
var createQrCodePlugin = () => {
|
|
30775
|
-
return {
|
|
30776
|
-
name: "生成二维码",
|
|
30777
|
-
enforce: "pre",
|
|
30778
|
-
async beforeRender(ctx) {
|
|
30779
|
-
const data = ctx.request.data || {};
|
|
30780
|
-
const useDarkTheme = Boolean(data.useDarkTheme);
|
|
30781
|
-
const toDataUrl = async (url) => {
|
|
30782
|
-
const buffer = await new import_qr_code_styling.default({
|
|
30783
|
-
jsdom: Window,
|
|
30784
|
-
type: "svg",
|
|
30785
|
-
shape: "square",
|
|
30786
|
-
width: 2e3,
|
|
30787
|
-
height: 2e3,
|
|
30788
|
-
data: url,
|
|
30789
|
-
margin: 0,
|
|
30790
|
-
qrOptions: {
|
|
30791
|
-
typeNumber: 0,
|
|
30792
|
-
mode: "Byte",
|
|
30793
|
-
errorCorrectionLevel: "L"
|
|
30794
|
-
},
|
|
30795
|
-
imageOptions: {
|
|
30796
|
-
hideBackgroundDots: false,
|
|
30797
|
-
imageSize: .4,
|
|
30798
|
-
margin: 0
|
|
30799
|
-
},
|
|
30800
|
-
dotsOptions: {
|
|
30801
|
-
type: "rounded",
|
|
30802
|
-
color: useDarkTheme ? "#C3C3C3" : "#3A3A3A",
|
|
30803
|
-
roundSize: false
|
|
30804
|
-
},
|
|
30805
|
-
backgroundOptions: { color: "transparent" },
|
|
30806
|
-
cornersSquareOptions: {
|
|
30807
|
-
type: "extra-rounded",
|
|
30808
|
-
color: useDarkTheme ? "#C3C3C3" : "#3A3A3A"
|
|
30809
|
-
},
|
|
30810
|
-
cornersDotOptions: { color: useDarkTheme ? "#C3C3C3" : "#3A3A3A" }
|
|
30811
|
-
}).getRawData("svg");
|
|
30812
|
-
if (!buffer) throw new Error("Failed to generate QR code");
|
|
30813
|
-
return `data:image/svg+xml;base64,${buffer.toString("base64")}`;
|
|
30814
|
-
};
|
|
30815
|
-
const props = ctx.state.props || {};
|
|
30816
|
-
if (!props.qrCodes) props.qrCodes = {};
|
|
30817
|
-
if (!props.qrCodeDataUrl) props.qrCodeDataUrl = void 0;
|
|
30818
|
-
if (typeof data.share_url === "string" && data.share_url.length > 0) {
|
|
30819
|
-
const dataUrl = await toDataUrl(data.share_url);
|
|
30820
|
-
const qrCodes = props.qrCodes;
|
|
30821
|
-
qrCodes.share_url = dataUrl;
|
|
30822
|
-
if (!props.qrCodeDataUrl) props.qrCodeDataUrl = dataUrl;
|
|
30823
|
-
}
|
|
30824
|
-
ctx.state.props = props;
|
|
30825
|
-
}
|
|
30826
|
-
};
|
|
30827
|
-
};
|
|
30828
29573
|
var clamp = (value, min, max) => {
|
|
30829
29574
|
return Math.min(max, Math.max(min, value));
|
|
30830
29575
|
};
|
|
30831
29576
|
var buildProxyImageUrl = (url) => {
|
|
30832
29577
|
if (!url || !url.startsWith("http")) return url;
|
|
30833
|
-
return `https://images.weserv.nl/?url=${encodeURIComponent(url)}&w=96&h=96&fit=cover&output=
|
|
29578
|
+
return `https://images.weserv.nl/?url=${encodeURIComponent(url)}&w=96&h=96&fit=cover&output=png`;
|
|
30834
29579
|
};
|
|
30835
29580
|
var mixRgb = (a, b, weight) => {
|
|
30836
29581
|
const w = clamp(weight, 0, 1);
|
|
@@ -30908,20 +29653,80 @@ var tuneRgb = (rgb, saturationMin, lightnessTarget) => {
|
|
|
30908
29653
|
const { h, s } = rgbToHsl(rgb);
|
|
30909
29654
|
return hslToRgb(h, Math.max(s, saturationMin), clamp(lightnessTarget, 0, 1));
|
|
30910
29655
|
};
|
|
30911
|
-
var
|
|
30912
|
-
if (
|
|
30913
|
-
|
|
30914
|
-
|
|
30915
|
-
|
|
30916
|
-
|
|
30917
|
-
|
|
30918
|
-
|
|
29656
|
+
var decodePngToPixels = (buffer) => {
|
|
29657
|
+
if (buffer[0] !== 137 || buffer[1] !== 80) return null;
|
|
29658
|
+
let offset = 8;
|
|
29659
|
+
let width = 0;
|
|
29660
|
+
let height = 0;
|
|
29661
|
+
let bitDepth = 0;
|
|
29662
|
+
let colorType = 0;
|
|
29663
|
+
const idatChunks = [];
|
|
29664
|
+
while (offset < buffer.length) {
|
|
29665
|
+
const length = buffer.readUInt32BE(offset);
|
|
29666
|
+
const type = buffer.toString("ascii", offset + 4, offset + 8);
|
|
29667
|
+
const chunkData = buffer.subarray(offset + 8, offset + 8 + length);
|
|
29668
|
+
if (type === "IHDR") {
|
|
29669
|
+
width = chunkData.readUInt32BE(0);
|
|
29670
|
+
height = chunkData.readUInt32BE(4);
|
|
29671
|
+
bitDepth = chunkData[8];
|
|
29672
|
+
colorType = chunkData[9];
|
|
29673
|
+
} else if (type === "IDAT") idatChunks.push(chunkData);
|
|
29674
|
+
else if (type === "IEND") break;
|
|
29675
|
+
offset += 12 + length;
|
|
29676
|
+
}
|
|
29677
|
+
if (!width || !height || bitDepth !== 8) return null;
|
|
29678
|
+
const channels = colorType === 6 ? 4 : colorType === 2 ? 3 : 0;
|
|
29679
|
+
if (!channels) return null;
|
|
29680
|
+
const raw = inflateSync(Buffer.concat(idatChunks));
|
|
29681
|
+
const stride = width * channels;
|
|
29682
|
+
const pixels = Buffer.alloc(width * height * 4);
|
|
29683
|
+
const prevRow = Buffer.alloc(stride);
|
|
29684
|
+
let rawOffset = 0;
|
|
29685
|
+
for (let y = 0; y < height; y++) {
|
|
29686
|
+
const filter = raw[rawOffset++];
|
|
29687
|
+
const curRow = Buffer.alloc(stride);
|
|
29688
|
+
for (let x = 0; x < stride; x++) {
|
|
29689
|
+
const val = raw[rawOffset++];
|
|
29690
|
+
const a = x >= channels ? curRow[x - channels] : 0;
|
|
29691
|
+
const b = prevRow[x];
|
|
29692
|
+
const c = x >= channels ? prevRow[x - channels] : 0;
|
|
29693
|
+
switch (filter) {
|
|
29694
|
+
case 0:
|
|
29695
|
+
curRow[x] = val;
|
|
29696
|
+
break;
|
|
29697
|
+
case 1:
|
|
29698
|
+
curRow[x] = val + a & 255;
|
|
29699
|
+
break;
|
|
29700
|
+
case 2:
|
|
29701
|
+
curRow[x] = val + b & 255;
|
|
29702
|
+
break;
|
|
29703
|
+
case 3:
|
|
29704
|
+
curRow[x] = val + (a + b >> 1) & 255;
|
|
29705
|
+
break;
|
|
29706
|
+
case 4: {
|
|
29707
|
+
const p = a + b - c;
|
|
29708
|
+
const pa = Math.abs(p - a);
|
|
29709
|
+
const pb = Math.abs(p - b);
|
|
29710
|
+
const pc = Math.abs(p - c);
|
|
29711
|
+
curRow[x] = val + (pa <= pb && pa <= pc ? a : pb <= pc ? b : c) & 255;
|
|
29712
|
+
break;
|
|
29713
|
+
}
|
|
29714
|
+
}
|
|
29715
|
+
}
|
|
29716
|
+
for (let x = 0; x < width; x++) {
|
|
29717
|
+
const pi = (y * width + x) * 4;
|
|
29718
|
+
const ci = x * channels;
|
|
29719
|
+
pixels[pi] = curRow[ci];
|
|
29720
|
+
pixels[pi + 1] = curRow[ci + 1];
|
|
29721
|
+
pixels[pi + 2] = curRow[ci + 2];
|
|
29722
|
+
pixels[pi + 3] = channels === 4 ? curRow[ci + 3] : 255;
|
|
29723
|
+
}
|
|
29724
|
+
curRow.copy(prevRow);
|
|
30919
29725
|
}
|
|
30920
|
-
const decoded = import_jpeg_js.default.decode(buffer, { useTArray: true });
|
|
30921
29726
|
return {
|
|
30922
|
-
data:
|
|
30923
|
-
width
|
|
30924
|
-
height
|
|
29727
|
+
data: pixels,
|
|
29728
|
+
width,
|
|
29729
|
+
height
|
|
30925
29730
|
};
|
|
30926
29731
|
};
|
|
30927
29732
|
var createPosterPalette = (seed, isDark) => {
|
|
@@ -30956,8 +29761,10 @@ var createPosterPalette = (seed, isDark) => {
|
|
|
30956
29761
|
coverShade: isDark ? "rgba(0, 0, 0, 0.42)" : "rgba(10, 24, 32, 0.34)"
|
|
30957
29762
|
};
|
|
30958
29763
|
};
|
|
30959
|
-
var extractPosterPaletteSeedFromBuffer = (buffer
|
|
30960
|
-
const
|
|
29764
|
+
var extractPosterPaletteSeedFromBuffer = (buffer) => {
|
|
29765
|
+
const decoded = decodePngToPixels(buffer);
|
|
29766
|
+
if (!decoded) return null;
|
|
29767
|
+
const { data } = decoded;
|
|
30961
29768
|
let weightedR = 0;
|
|
30962
29769
|
let weightedG = 0;
|
|
30963
29770
|
let weightedB = 0;
|
|
@@ -31012,9 +29819,11 @@ var createPosterPalettePlugin = () => {
|
|
|
31012
29819
|
const useDarkTheme = Boolean(ctx.request.useDarkTheme ?? data.useDarkTheme);
|
|
31013
29820
|
const candidates = [buildProxyImageUrl(imageUrl), imageUrl];
|
|
31014
29821
|
for (const candidate of candidates) try {
|
|
31015
|
-
const response = await
|
|
31016
|
-
|
|
31017
|
-
|
|
29822
|
+
const response = await axios.get(candidate, {
|
|
29823
|
+
responseType: "arraybuffer",
|
|
29824
|
+
headers: { accept: "image/png,image/apng,image/*,*/*;q=0.8" }
|
|
29825
|
+
});
|
|
29826
|
+
const paletteSeed = extractPosterPaletteSeedFromBuffer(Buffer.from(response.data));
|
|
31018
29827
|
if (paletteSeed) {
|
|
31019
29828
|
const lightPalette = createPosterPalette(paletteSeed, false);
|
|
31020
29829
|
const darkPalette = createPosterPalette(paletteSeed, true);
|
|
@@ -31072,9 +29881,10 @@ var embedWatermark = (pngBytes, watermarkText) => {
|
|
|
31072
29881
|
* @template P 渲染路径,必须是有效的动态路径
|
|
31073
29882
|
* @param path 渲染路径,格式为 "平台/组件ID" 或 "平台/分类/组件ID"
|
|
31074
29883
|
* @param data 渲染数据,类型根据路径自动推断
|
|
29884
|
+
* @options 渲染选项
|
|
31075
29885
|
* @returns 渲染结果图片元素数组的 Promise
|
|
31076
29886
|
*/
|
|
31077
|
-
var Render = async (event, path$1, data) => {
|
|
29887
|
+
var Render = async (event, path$1, data, options) => {
|
|
31078
29888
|
const pathParts = path$1.split("/");
|
|
31079
29889
|
let templateType;
|
|
31080
29890
|
let templateName;
|
|
@@ -31117,11 +29927,7 @@ var Render = async (event, path$1, data) => {
|
|
|
31117
29927
|
}
|
|
31118
29928
|
},
|
|
31119
29929
|
outputDir,
|
|
31120
|
-
plugins: [
|
|
31121
|
-
createQrCodePlugin(),
|
|
31122
|
-
createPosterPalettePlugin(),
|
|
31123
|
-
createSanitizeContentPlugin()
|
|
31124
|
-
]
|
|
29930
|
+
plugins: [createPosterPalettePlugin()]
|
|
31125
29931
|
}).then((res) => {
|
|
31126
29932
|
if (!res.success || !res.htmlPath) throw new Error(res.error);
|
|
31127
29933
|
return res;
|
|
@@ -31132,7 +29938,7 @@ var Render = async (event, path$1, data) => {
|
|
|
31132
29938
|
const renderResult = await render.render({
|
|
31133
29939
|
name: `${Root.pluginName}/${templateType}`,
|
|
31134
29940
|
file: result.htmlPath,
|
|
31135
|
-
multiPage: Config.app.multiPageRender && event.bot.adapter.
|
|
29941
|
+
multiPage: Config.app.multiPageRender && event.bot.adapter.protocol !== "qqbot" ? Config.app.multiPageHeight : false,
|
|
31136
29942
|
selector: "#container",
|
|
31137
29943
|
fullPage: false,
|
|
31138
29944
|
type: "png",
|
|
@@ -31147,7 +29953,9 @@ var Render = async (event, path$1, data) => {
|
|
|
31147
29953
|
const imageStats = [];
|
|
31148
29954
|
for (const image of images) {
|
|
31149
29955
|
const imageBuffer = Buffer.from(image, "base64");
|
|
31150
|
-
|
|
29956
|
+
let finalImageBuffer;
|
|
29957
|
+
if (options?.skipWatermark) finalImageBuffer = imageBuffer;
|
|
29958
|
+
else finalImageBuffer = embedWatermark(imageBuffer, watermarkText) ?? imageBuffer;
|
|
31151
29959
|
const metadata = getImageMetadata(finalImageBuffer);
|
|
31152
29960
|
const dimensions = metadata.width && metadata.height ? `${metadata.width}x${metadata.height}` : "unknown";
|
|
31153
29961
|
imageStats.push({
|
|
@@ -31183,6 +29991,24 @@ var getImageMetadata = (buffer) => {
|
|
|
31183
29991
|
};
|
|
31184
29992
|
return {};
|
|
31185
29993
|
};
|
|
29994
|
+
/**
|
|
29995
|
+
* 对已渲染的图片元素数组应用水印
|
|
29996
|
+
* 用于推送场景:渲染一次,按目标群逐个嵌入不同 bot 的水印
|
|
29997
|
+
*/
|
|
29998
|
+
var applyWatermarkToImages = (images, event) => {
|
|
29999
|
+
if (Config.app.RemoveWatermark) return images;
|
|
30000
|
+
const watermarkText = JSON.stringify({
|
|
30001
|
+
a: Date.now(),
|
|
30002
|
+
b: `Generated by karin-plugin-kkk v${Root.pluginVersion}, with source code open-sourced under the GPL-3.0 license`,
|
|
30003
|
+
c: `Sent by ${event?.bot?.account.selfId ?? "unknown"}|${event?.bot?.account.name ?? "unknown"}`
|
|
30004
|
+
});
|
|
30005
|
+
return images.map((img) => {
|
|
30006
|
+
const base64Data = img.file.replace(/^base64:\/\//, "");
|
|
30007
|
+
const buffer = Buffer.from(base64Data, "base64");
|
|
30008
|
+
const watermarked = embedWatermark(buffer, watermarkText) ?? buffer;
|
|
30009
|
+
return segment.image("base64://" + watermarked.toString("base64"));
|
|
30010
|
+
});
|
|
30011
|
+
};
|
|
31186
30012
|
//#endregion
|
|
31187
30013
|
//#region src/module/db/bilibili.ts
|
|
31188
30014
|
/** 数据库操作类 */
|
|
@@ -33859,29 +32685,12 @@ var DouyinWeb = (all) => {
|
|
|
33859
32685
|
}],
|
|
33860
32686
|
isDisabled: !all.douyin.sendContent.includes("comment") || !all.douyin.switch
|
|
33861
32687
|
}),
|
|
33862
|
-
components.input.number("subCommentDepth", {
|
|
33863
|
-
label: "次级评论解析深度",
|
|
33864
|
-
description: "次级评论解析深度",
|
|
33865
|
-
defaultValue: all.douyin.subCommentDepth.toString(),
|
|
33866
|
-
rules: [{
|
|
33867
|
-
min: 1,
|
|
33868
|
-
max: 6,
|
|
33869
|
-
error: "嵌套深度最高只有 6 层,超过 6 层的评论会被强制截断"
|
|
33870
|
-
}],
|
|
33871
|
-
isDisabled: !all.douyin.sendContent.includes("comment") || !all.douyin.switch
|
|
33872
|
-
}),
|
|
33873
32688
|
components.switch.create("commentImageCollection", {
|
|
33874
32689
|
label: "是否收集评论区的图片",
|
|
33875
32690
|
description: "开启后将收集评论区的图片,以合并转发的形式返回",
|
|
33876
32691
|
defaultSelected: all.douyin.commentImageCollection,
|
|
33877
32692
|
isDisabled: !all.douyin.sendContent.includes("comment") || !all.douyin.switch
|
|
33878
32693
|
}),
|
|
33879
|
-
components.switch.create("realCommentCount", {
|
|
33880
|
-
label: "显示真实评论数量",
|
|
33881
|
-
description: "评论图是否显示真实评论数量,关闭则显示解析到的评论数量",
|
|
33882
|
-
defaultSelected: all.douyin.realCommentCount,
|
|
33883
|
-
isDisabled: !all.douyin.sendContent.includes("comment") || !all.douyin.switch
|
|
33884
|
-
}),
|
|
33885
32694
|
components.divider.create("divider-dy-render", {
|
|
33886
32695
|
description: "渲染与画质设置",
|
|
33887
32696
|
descPosition: 20
|
|
@@ -36368,60 +35177,71 @@ var buildBilibiliDynamicRichText = (text, richTextNodes) => {
|
|
|
36368
35177
|
}
|
|
36369
35178
|
return createRichTextDocument(nodes, { platform: "bilibili" });
|
|
36370
35179
|
}
|
|
36371
|
-
const
|
|
36372
|
-
return text.indexOf(searchText, startPos);
|
|
36373
|
-
};
|
|
36374
|
-
let currentPos = 0;
|
|
36375
|
-
for (const tag of richTextNodes) {
|
|
35180
|
+
const buildNodesFromTag = (tag) => {
|
|
36376
35181
|
const matchText = tag.orig_text || tag.text || "";
|
|
36377
|
-
if (!matchText)
|
|
36378
|
-
const
|
|
36379
|
-
if (matchPos === -1) continue;
|
|
36380
|
-
if (matchPos > currentPos) {
|
|
36381
|
-
const parts = text.slice(currentPos, matchPos).split(/(\r?\n)/);
|
|
36382
|
-
for (const part of parts) if (part === "\r\n" || part === "\n") nodes.push(createLineBreakNode());
|
|
36383
|
-
else if (part) nodes.push(...parseTextWithUrls(part));
|
|
36384
|
-
}
|
|
35182
|
+
if (!matchText) return [];
|
|
35183
|
+
const result = [];
|
|
36385
35184
|
switch (tag.type) {
|
|
36386
35185
|
case "RICH_TEXT_NODE_TYPE_TEXT": {
|
|
36387
35186
|
const parts = matchText.split(/(\r?\n)/);
|
|
36388
|
-
for (const part of parts) if (part === "\r\n" || part === "\n")
|
|
36389
|
-
else if (part)
|
|
35187
|
+
for (const part of parts) if (part === "\r\n" || part === "\n") result.push(createLineBreakNode());
|
|
35188
|
+
else if (part) result.push(...parseTextWithUrls(part));
|
|
36390
35189
|
break;
|
|
36391
35190
|
}
|
|
36392
35191
|
case "topic":
|
|
36393
35192
|
case "RICH_TEXT_NODE_TYPE_TOPIC":
|
|
36394
|
-
|
|
35193
|
+
result.push(createTopicNode(matchText));
|
|
36395
35194
|
break;
|
|
36396
35195
|
case "RICH_TEXT_NODE_TYPE_AT":
|
|
36397
|
-
|
|
35196
|
+
result.push(createAtNode(matchText));
|
|
36398
35197
|
break;
|
|
36399
35198
|
case "RICH_TEXT_NODE_TYPE_LOTTERY":
|
|
36400
|
-
|
|
35199
|
+
result.push(createLotteryNode(matchText));
|
|
36401
35200
|
break;
|
|
36402
35201
|
case "RICH_TEXT_NODE_TYPE_WEB":
|
|
36403
|
-
|
|
35202
|
+
result.push(createWebLinkNode(tag.text || matchText, matchText));
|
|
36404
35203
|
break;
|
|
36405
35204
|
case "RICH_TEXT_NODE_TYPE_EMOJI": {
|
|
36406
35205
|
const emojiUrl = tag.emoji?.gif_url || tag.emoji?.icon_url;
|
|
36407
35206
|
const scale = tag.emoji?.size === 2 || tag.emoji?.size === 3 ? 2 : void 0;
|
|
36408
|
-
if (emojiUrl)
|
|
36409
|
-
else
|
|
35207
|
+
if (emojiUrl) result.push(createEmojiNode(matchText, emojiUrl, { scale }));
|
|
35208
|
+
else result.push(createTextNode(matchText));
|
|
36410
35209
|
break;
|
|
36411
35210
|
}
|
|
36412
35211
|
case "RICH_TEXT_NODE_TYPE_VOTE":
|
|
36413
|
-
|
|
35212
|
+
result.push(createVoteNode(tag.text || matchText));
|
|
36414
35213
|
break;
|
|
36415
35214
|
case "RICH_TEXT_NODE_TYPE_VIEW_PICTURE":
|
|
36416
|
-
|
|
35215
|
+
result.push(createViewPictureNode(matchText));
|
|
36417
35216
|
break;
|
|
36418
35217
|
default: {
|
|
36419
35218
|
const parts = matchText.split(/(\r?\n)/);
|
|
36420
|
-
for (const part of parts) if (part === "\r\n" || part === "\n")
|
|
36421
|
-
else if (part)
|
|
35219
|
+
for (const part of parts) if (part === "\r\n" || part === "\n") result.push(createLineBreakNode());
|
|
35220
|
+
else if (part) result.push(...parseTextWithUrls(part));
|
|
36422
35221
|
break;
|
|
36423
35222
|
}
|
|
36424
35223
|
}
|
|
35224
|
+
return result;
|
|
35225
|
+
};
|
|
35226
|
+
if (!text) {
|
|
35227
|
+
for (const tag of richTextNodes) nodes.push(...buildNodesFromTag(tag));
|
|
35228
|
+
return createRichTextDocument(nodes, { platform: "bilibili" });
|
|
35229
|
+
}
|
|
35230
|
+
const findInText = (searchText, startPos) => {
|
|
35231
|
+
return text.indexOf(searchText, startPos);
|
|
35232
|
+
};
|
|
35233
|
+
let currentPos = 0;
|
|
35234
|
+
for (const tag of richTextNodes) {
|
|
35235
|
+
const matchText = tag.orig_text || tag.text || "";
|
|
35236
|
+
if (!matchText) continue;
|
|
35237
|
+
const matchPos = findInText(matchText, currentPos);
|
|
35238
|
+
if (matchPos === -1) continue;
|
|
35239
|
+
if (matchPos > currentPos) {
|
|
35240
|
+
const parts = text.slice(currentPos, matchPos).split(/(\r?\n)/);
|
|
35241
|
+
for (const part of parts) if (part === "\r\n" || part === "\n") nodes.push(createLineBreakNode());
|
|
35242
|
+
else if (part) nodes.push(...parseTextWithUrls(part));
|
|
35243
|
+
}
|
|
35244
|
+
nodes.push(...buildNodesFromTag(tag));
|
|
36425
35245
|
currentPos = matchPos + matchText.length;
|
|
36426
35246
|
}
|
|
36427
35247
|
if (currentPos < text.length) {
|
|
@@ -36514,10 +35334,15 @@ var parseOpusToRichText = (opus, useDarkTheme) => {
|
|
|
36514
35334
|
flushList();
|
|
36515
35335
|
const pics = paragraph.pic?.pics;
|
|
36516
35336
|
if (Array.isArray(pics)) {
|
|
36517
|
-
for (const pic of pics) if (pic.url) nodes.push(createImageNode(fixImageUrl(pic.url), pic.alt || "专栏图片"));
|
|
35337
|
+
for (const pic of pics) if (pic.url) nodes.push(createImageNode(fixImageUrl(pic.url), pic.alt || "专栏图片", pic.comment));
|
|
36518
35338
|
}
|
|
36519
35339
|
continue;
|
|
36520
35340
|
}
|
|
35341
|
+
if (paraType === 3) {
|
|
35342
|
+
flushList();
|
|
35343
|
+
nodes.push(createHorizontalRuleNode());
|
|
35344
|
+
continue;
|
|
35345
|
+
}
|
|
36521
35346
|
if (paraType === 7) {
|
|
36522
35347
|
flushList();
|
|
36523
35348
|
const linkCard = paragraph.link_card;
|
|
@@ -36544,6 +35369,7 @@ var parseOpusToRichText = (opus, useDarkTheme) => {
|
|
|
36544
35369
|
if (![
|
|
36545
35370
|
1,
|
|
36546
35371
|
2,
|
|
35372
|
+
3,
|
|
36547
35373
|
4,
|
|
36548
35374
|
7,
|
|
36549
35375
|
8,
|
|
@@ -37067,7 +35893,7 @@ var Bilibili = class extends Base {
|
|
|
37067
35893
|
outputPath,
|
|
37068
35894
|
loopCount,
|
|
37069
35895
|
staticImagePath: staticImg.filepath,
|
|
37070
|
-
transitionEnabled:
|
|
35896
|
+
transitionEnabled: true
|
|
37071
35897
|
})).success) {
|
|
37072
35898
|
const filePath = Common.tempDri.video + `tmp_${Date.now()}.mp4`;
|
|
37073
35899
|
fs.renameSync(outputPath, filePath);
|
|
@@ -37131,15 +35957,18 @@ var Bilibili = class extends Base {
|
|
|
37131
35957
|
for (const item of temp) await Common.removeFile(item.filepath, true);
|
|
37132
35958
|
}
|
|
37133
35959
|
}
|
|
37134
|
-
|
|
37135
|
-
|
|
37136
|
-
|
|
35960
|
+
const md = dynamicInfo.data.data.item.modules.module_dynamic;
|
|
35961
|
+
if (md.topic) {
|
|
35962
|
+
const { name } = md.topic;
|
|
35963
|
+
const summary = md.major.opus.summary;
|
|
35964
|
+
summary.rich_text_nodes ??= [];
|
|
35965
|
+
summary.rich_text_nodes.unshift({
|
|
37137
35966
|
orig_text: name,
|
|
37138
35967
|
jump_url: "",
|
|
37139
35968
|
text: name,
|
|
37140
35969
|
type: "topic"
|
|
37141
35970
|
});
|
|
37142
|
-
|
|
35971
|
+
summary.text = summary.text ? `${name}\n${summary.text}` : name;
|
|
37143
35972
|
}
|
|
37144
35973
|
this.e.reply(await Render(this.e, "bilibili/dynamic/DYNAMIC_TYPE_DRAW", {
|
|
37145
35974
|
image_url: Object.values(dynamicInfo.data.data.item.modules.module_dynamic.major.opus.pics).filter((item) => typeof item?.url === "string").map((item) => ({ image_src: item.url })),
|
|
@@ -37159,23 +35988,27 @@ var Bilibili = class extends Base {
|
|
|
37159
35988
|
following_count: Count(userProfileData.data.data.card.attention),
|
|
37160
35989
|
decoration_card: generateDecorationCard(dynamicInfo.data.data.item.modules.module_author.decoration_card),
|
|
37161
35990
|
render_time: TimeFormatter.now(),
|
|
37162
|
-
dynamicTYPE: "
|
|
35991
|
+
dynamicTYPE: "图文动态解析",
|
|
37163
35992
|
imageLayout: Config.bilibili.imageLayout,
|
|
37164
|
-
additional: parseAdditionalCard(dynamicInfo.data.data.item.modules.module_dynamic.additional)
|
|
35993
|
+
additional: parseAdditionalCard(dynamicInfo.data.data.item.modules.module_dynamic.additional),
|
|
35994
|
+
dynamic_id: dynamicInfo.data.data.item.id_str
|
|
37165
35995
|
}));
|
|
37166
35996
|
break;
|
|
37167
35997
|
}
|
|
37168
35998
|
/** 纯文 */
|
|
37169
35999
|
case DynamicType.WORD: {
|
|
37170
|
-
|
|
37171
|
-
|
|
37172
|
-
|
|
36000
|
+
const md = dynamicInfo.data.data.item.modules.module_dynamic;
|
|
36001
|
+
if (md.topic) {
|
|
36002
|
+
const { name } = md.topic;
|
|
36003
|
+
const summary = md.major.opus.summary;
|
|
36004
|
+
summary.rich_text_nodes ??= [];
|
|
36005
|
+
summary.rich_text_nodes.unshift({
|
|
37173
36006
|
orig_text: name,
|
|
37174
36007
|
jump_url: "",
|
|
37175
36008
|
text: name,
|
|
37176
36009
|
type: "topic"
|
|
37177
36010
|
});
|
|
37178
|
-
|
|
36011
|
+
summary.text = summary.text ? `${name}\n\n${summary.text}` : name;
|
|
37179
36012
|
}
|
|
37180
36013
|
const text = buildBilibiliDynamicRichText(dynamicInfo.data.data.item.modules.module_dynamic.major.opus?.summary?.text ?? "", dynamicInfo.data.data.item.modules.module_dynamic.major.opus?.summary?.rich_text_nodes ?? []);
|
|
37181
36014
|
this.e.reply(await Render(this.e, "bilibili/dynamic/DYNAMIC_TYPE_WORD", {
|
|
@@ -37194,22 +36027,26 @@ var Bilibili = class extends Base {
|
|
|
37194
36027
|
following_count: Count(userProfileData.data.data.card.attention),
|
|
37195
36028
|
decoration_card: generateDecorationCard(dynamicInfo.data.data.item.modules.module_author.decoration_card),
|
|
37196
36029
|
render_time: TimeFormatter.now(),
|
|
37197
|
-
dynamicTYPE: "
|
|
37198
|
-
additional: parseAdditionalCard(dynamicInfo.data.data.item.modules.module_dynamic.additional)
|
|
36030
|
+
dynamicTYPE: "纯文动态解析",
|
|
36031
|
+
additional: parseAdditionalCard(dynamicInfo.data.data.item.modules.module_dynamic.additional),
|
|
36032
|
+
dynamic_id: dynamicInfo.data.data.item.id_str
|
|
37199
36033
|
}));
|
|
37200
36034
|
break;
|
|
37201
36035
|
}
|
|
37202
36036
|
/** 转发动态 */
|
|
37203
36037
|
case DynamicType.FORWARD: {
|
|
37204
|
-
|
|
37205
|
-
|
|
37206
|
-
|
|
36038
|
+
const md = dynamicInfo.data.data.item.modules.module_dynamic;
|
|
36039
|
+
if (md.topic) {
|
|
36040
|
+
const { name } = md.topic;
|
|
36041
|
+
const desc = md.desc;
|
|
36042
|
+
desc.rich_text_nodes ??= [];
|
|
36043
|
+
desc.rich_text_nodes.unshift({
|
|
37207
36044
|
orig_text: name,
|
|
37208
36045
|
jump_url: "",
|
|
37209
36046
|
text: name,
|
|
37210
36047
|
type: "topic"
|
|
37211
36048
|
});
|
|
37212
|
-
|
|
36049
|
+
desc.text = desc.text ? `${name}\n\n${desc.text}` : name;
|
|
37213
36050
|
}
|
|
37214
36051
|
const text = buildBilibiliDynamicRichText(dynamicInfo.data.data.item.modules.module_dynamic.desc.text, dynamicInfo.data.data.item.modules.module_dynamic.desc.rich_text_nodes);
|
|
37215
36052
|
const imgList = [];
|
|
@@ -37232,13 +36069,14 @@ var Bilibili = class extends Base {
|
|
|
37232
36069
|
frame: dynamicInfo.data.data.item.orig.modules.module_author.pendant.image
|
|
37233
36070
|
};
|
|
37234
36071
|
break;
|
|
37235
|
-
case DynamicType.DRAW:
|
|
37236
|
-
|
|
37237
|
-
|
|
37238
|
-
const
|
|
37239
|
-
|
|
37240
|
-
|
|
37241
|
-
|
|
36072
|
+
case DynamicType.DRAW: {
|
|
36073
|
+
const origMd = dynamicInfo.data.data.item.orig.modules.module_dynamic;
|
|
36074
|
+
if (origMd.topic) {
|
|
36075
|
+
const { name } = origMd.topic;
|
|
36076
|
+
const summary = origMd.major?.opus?.summary;
|
|
36077
|
+
if (summary) {
|
|
36078
|
+
summary.rich_text_nodes ??= [];
|
|
36079
|
+
summary.rich_text_nodes.unshift({
|
|
37242
36080
|
orig_text: name,
|
|
37243
36081
|
jump_url: "",
|
|
37244
36082
|
text: name,
|
|
@@ -37246,7 +36084,7 @@ var Bilibili = class extends Base {
|
|
|
37246
36084
|
rid: "",
|
|
37247
36085
|
style: { "1114514": "1919810" }
|
|
37248
36086
|
});
|
|
37249
|
-
|
|
36087
|
+
summary.text = summary.text ? `${name}\n${summary.text}` : name;
|
|
37250
36088
|
}
|
|
37251
36089
|
}
|
|
37252
36090
|
data = {
|
|
@@ -37260,19 +36098,21 @@ var Bilibili = class extends Base {
|
|
|
37260
36098
|
frame: dynamicInfo.data.data.item.orig.modules.module_author.pendant.image
|
|
37261
36099
|
};
|
|
37262
36100
|
break;
|
|
37263
|
-
|
|
37264
|
-
|
|
37265
|
-
|
|
37266
|
-
|
|
37267
|
-
|
|
37268
|
-
|
|
37269
|
-
|
|
36101
|
+
}
|
|
36102
|
+
case DynamicType.WORD: {
|
|
36103
|
+
const origMd = dynamicInfo.data.data.item.orig.modules.module_dynamic;
|
|
36104
|
+
if (origMd.topic) {
|
|
36105
|
+
const { name } = origMd.topic;
|
|
36106
|
+
const summary = origMd.major?.opus?.summary;
|
|
36107
|
+
if (summary) {
|
|
36108
|
+
summary.rich_text_nodes ??= [];
|
|
36109
|
+
summary.rich_text_nodes.unshift({
|
|
37270
36110
|
orig_text: name,
|
|
37271
36111
|
jump_url: "",
|
|
37272
36112
|
text: name,
|
|
37273
36113
|
type: "topic"
|
|
37274
36114
|
});
|
|
37275
|
-
|
|
36115
|
+
summary.text = summary.text ? `${name}\n${summary.text}` : name;
|
|
37276
36116
|
}
|
|
37277
36117
|
}
|
|
37278
36118
|
data = {
|
|
@@ -37281,9 +36121,11 @@ var Bilibili = class extends Base {
|
|
|
37281
36121
|
avatar_url: dynamicInfo.data.data.item.orig.modules.module_author.face,
|
|
37282
36122
|
text: buildBilibiliDynamicRichText(dynamicInfo.data.data.item.orig.modules.module_dynamic.major.opus.summary.text, dynamicInfo.data.data.item.orig.modules.module_dynamic.major.opus.summary.rich_text_nodes),
|
|
37283
36123
|
decoration_card: generateDecorationCard(dynamicInfo.data.data.item.orig.modules.module_author.decoration_card),
|
|
37284
|
-
frame: dynamicInfo.data.data.item.orig.modules.module_author.pendant.image
|
|
36124
|
+
frame: dynamicInfo.data.data.item.orig.modules.module_author.pendant.image,
|
|
36125
|
+
additional: parseAdditionalCard(dynamicInfo.data.data.item.orig.modules.module_dynamic.additional)
|
|
37285
36126
|
};
|
|
37286
36127
|
break;
|
|
36128
|
+
}
|
|
37287
36129
|
case DynamicType.LIVE_RCMD: {
|
|
37288
36130
|
const liveData = JSON.parse(dynamicInfo.data.data.item.orig.modules.module_dynamic.major.live_rcmd.content);
|
|
37289
36131
|
data = {
|
|
@@ -37322,7 +36164,8 @@ var Bilibili = class extends Base {
|
|
|
37322
36164
|
dynamicTYPE: "转发动态解析",
|
|
37323
36165
|
decoration_card: generateDecorationCard(dynamicInfo.data.data.item.modules.module_author.decoration_card),
|
|
37324
36166
|
render_time: TimeFormatter.now(),
|
|
37325
|
-
original_content: { [dynamicInfo.data.data.item.orig.type]: data }
|
|
36167
|
+
original_content: { [dynamicInfo.data.data.item.orig.type]: data },
|
|
36168
|
+
dynamic_id: dynamicInfo.data.data.item.id_str
|
|
37326
36169
|
}));
|
|
37327
36170
|
break;
|
|
37328
36171
|
}
|
|
@@ -37350,18 +36193,36 @@ var Bilibili = class extends Base {
|
|
|
37350
36193
|
staff.unshift(currentUser);
|
|
37351
36194
|
}
|
|
37352
36195
|
}
|
|
36196
|
+
const md = dynamicInfo.data.data.item.modules.module_dynamic;
|
|
36197
|
+
if (md.topic) {
|
|
36198
|
+
const { name } = md.topic;
|
|
36199
|
+
md.desc ??= {
|
|
36200
|
+
rich_text_nodes: [],
|
|
36201
|
+
text: ""
|
|
36202
|
+
};
|
|
36203
|
+
md.desc.rich_text_nodes.unshift({
|
|
36204
|
+
orig_text: name,
|
|
36205
|
+
jump_url: "",
|
|
36206
|
+
text: name,
|
|
36207
|
+
type: "topic"
|
|
36208
|
+
});
|
|
36209
|
+
md.desc.text = md.desc.text ? `${name}\n\n${md.desc.text}` : name;
|
|
36210
|
+
}
|
|
36211
|
+
const dynamicText = buildBilibiliDynamicRichText(dynamicInfo.data.data.item.modules.module_dynamic.desc?.text ?? "", dynamicInfo.data.data.item.modules.module_dynamic.desc?.rich_text_nodes ?? []);
|
|
37353
36212
|
img$1 = await Render(this.e, "bilibili/dynamic/DYNAMIC_TYPE_AV", {
|
|
37354
36213
|
image_url: INFODATA.data.data.pic,
|
|
37355
36214
|
text: buildBilibiliDynamicRichText(INFODATA.data.data.title, []),
|
|
37356
36215
|
desc: INFODATA.data.data.desc_v2?.length ? buildBilibiliVideoDescRichText(INFODATA.data.data.desc_v2) : buildBilibiliDynamicRichText(INFODATA.data.data.desc || "", []),
|
|
36216
|
+
dynamic_text: dynamicText,
|
|
37357
36217
|
dianzan: Count(INFODATA.data.data.stat.like),
|
|
37358
36218
|
pinglun: Count(INFODATA.data.data.stat.reply),
|
|
37359
36219
|
share: Count(INFODATA.data.data.stat.share),
|
|
37360
36220
|
view: Count(INFODATA.data.data.stat.view),
|
|
37361
36221
|
coin: Count(INFODATA.data.data.stat.coin),
|
|
37362
36222
|
duration_text: dynamicInfo.data.data.item.modules.module_dynamic.major.archive.duration_text,
|
|
37363
|
-
|
|
37364
|
-
|
|
36223
|
+
page_length: INFODATA.data.data.pages.length,
|
|
36224
|
+
create_time: TimeFormatter.toRelative(dynamicInfo.data.data.item.modules.module_author.pub_ts),
|
|
36225
|
+
avatar_url: dynamicInfo.data.data.item.modules.module_author.face,
|
|
37365
36226
|
frame: dynamicInfo.data.data.item.modules.module_author.pendant.image,
|
|
37366
36227
|
share_url: "https://www.bilibili.com/video/" + bvid,
|
|
37367
36228
|
usernameMeta: getUsernameMetadata(userProfileData.data.data.card),
|
|
@@ -37369,8 +36230,9 @@ var Bilibili = class extends Base {
|
|
|
37369
36230
|
user_shortid: userProfileData.data.data.card.mid,
|
|
37370
36231
|
total_favorited: Count(userProfileData.data.data.like_num),
|
|
37371
36232
|
following_count: Count(userProfileData.data.data.card.attention),
|
|
36233
|
+
decoration_card: generateDecorationCard(dynamicInfo.data.data.item.modules.module_author.decoration_card),
|
|
37372
36234
|
render_time: TimeFormatter.now(),
|
|
37373
|
-
dynamicTYPE: "
|
|
36235
|
+
dynamicTYPE: "视频动态解析",
|
|
37374
36236
|
dynamic_id: dynamicInfo.data.data.item.id_str,
|
|
37375
36237
|
staff
|
|
37376
36238
|
});
|
|
@@ -37395,7 +36257,7 @@ var Bilibili = class extends Base {
|
|
|
37395
36257
|
create_time: TimeFormatter.toDateTime(dynamicInfo.data.data.item.modules.module_author.pub_ts),
|
|
37396
36258
|
now_time: TimeFormatter.now(),
|
|
37397
36259
|
share_url: "https://live.bilibili.com/" + liveInfo.live_play_info.room_id,
|
|
37398
|
-
dynamicTYPE: "
|
|
36260
|
+
dynamicTYPE: "直播动态解析"
|
|
37399
36261
|
});
|
|
37400
36262
|
this.e.reply(img$1);
|
|
37401
36263
|
break;
|
|
@@ -37539,7 +36401,7 @@ var Bilibili = class extends Base {
|
|
|
37539
36401
|
create_time: liveInfo.data.data.live_time === "-62170012800" ? "获取失败" : liveInfo.data.data.live_time,
|
|
37540
36402
|
now_time: TimeFormatter.now(),
|
|
37541
36403
|
share_url: "https://live.bilibili.com/" + liveInfo.data.data.room_id,
|
|
37542
|
-
dynamicTYPE: "
|
|
36404
|
+
dynamicTYPE: "直播动态解析"
|
|
37543
36405
|
});
|
|
37544
36406
|
this.e.reply(img);
|
|
37545
36407
|
break;
|
|
@@ -38685,20 +37547,24 @@ var Bilibilipush = class extends Base {
|
|
|
38685
37547
|
render_time: TimeFormatter.now(),
|
|
38686
37548
|
imageLayout: Config.bilibili.imageLayout,
|
|
38687
37549
|
additional: parseAdditionalCard(data[dynamicId].Dynamic_Data.modules.module_dynamic.additional),
|
|
38688
|
-
dynamicTYPE: "图文动态推送"
|
|
38689
|
-
|
|
37550
|
+
dynamicTYPE: "图文动态推送",
|
|
37551
|
+
dynamic_id: dynamicId
|
|
37552
|
+
}, { skipWatermark: true });
|
|
38690
37553
|
break;
|
|
38691
37554
|
/** 处理纯文动态 */
|
|
38692
37555
|
case DynamicType.WORD: {
|
|
38693
37556
|
if ("topic" in data[dynamicId].Dynamic_Data.orig.modules.module_dynamic && data[dynamicId].Dynamic_Data.modules.module_dynamic.topic !== null) {
|
|
38694
|
-
const
|
|
38695
|
-
|
|
37557
|
+
const md = data[dynamicId].Dynamic_Data.modules.module_dynamic;
|
|
37558
|
+
const { name } = md.topic;
|
|
37559
|
+
const summary = md.major.opus.summary;
|
|
37560
|
+
summary.rich_text_nodes ??= [];
|
|
37561
|
+
summary.rich_text_nodes.unshift({
|
|
38696
37562
|
orig_text: name,
|
|
38697
37563
|
text: name,
|
|
38698
37564
|
type: "topic",
|
|
38699
|
-
rid:
|
|
37565
|
+
rid: md.topic.id.toString()
|
|
38700
37566
|
});
|
|
38701
|
-
|
|
37567
|
+
summary.text = summary.text ? `${name}\n\n${summary.text}` : name;
|
|
38702
37568
|
}
|
|
38703
37569
|
const text = buildBilibiliDynamicRichText(data[dynamicId].Dynamic_Data.modules.module_dynamic.major?.opus?.summary?.text ?? "", data[dynamicId].Dynamic_Data.modules.module_dynamic.major?.opus?.summary?.rich_text_nodes ?? []);
|
|
38704
37570
|
img = await Render(this.e, "bilibili/dynamic/DYNAMIC_TYPE_WORD", {
|
|
@@ -38718,8 +37584,9 @@ var Bilibilipush = class extends Base {
|
|
|
38718
37584
|
decoration_card: generateDecorationCard(data[dynamicId].Dynamic_Data.modules.module_author.decoration_card),
|
|
38719
37585
|
render_time: TimeFormatter.now(),
|
|
38720
37586
|
additional: parseAdditionalCard(data[dynamicId].Dynamic_Data.modules.module_dynamic.additional),
|
|
38721
|
-
dynamicTYPE: "纯文动态推送"
|
|
38722
|
-
|
|
37587
|
+
dynamicTYPE: "纯文动态推送",
|
|
37588
|
+
dynamic_id: dynamicId
|
|
37589
|
+
}, { skipWatermark: true });
|
|
38723
37590
|
break;
|
|
38724
37591
|
}
|
|
38725
37592
|
/** 处理视频动态 */
|
|
@@ -38751,16 +37618,34 @@ var Bilibilipush = class extends Base {
|
|
|
38751
37618
|
staff.unshift(currentUser);
|
|
38752
37619
|
}
|
|
38753
37620
|
}
|
|
37621
|
+
const md = data[dynamicId].Dynamic_Data.modules.module_dynamic;
|
|
37622
|
+
if (md.topic) {
|
|
37623
|
+
const { name } = md.topic;
|
|
37624
|
+
md.desc ??= {
|
|
37625
|
+
rich_text_nodes: [],
|
|
37626
|
+
text: ""
|
|
37627
|
+
};
|
|
37628
|
+
md.desc.rich_text_nodes.unshift({
|
|
37629
|
+
orig_text: name,
|
|
37630
|
+
jump_url: "",
|
|
37631
|
+
text: name,
|
|
37632
|
+
type: "topic"
|
|
37633
|
+
});
|
|
37634
|
+
md.desc.text = md.desc.text ? `${name}\n\n${md.desc.text}` : name;
|
|
37635
|
+
}
|
|
37636
|
+
const dynamicText = buildBilibiliDynamicRichText(data[dynamicId].Dynamic_Data.modules.module_dynamic.desc?.text ?? "", data[dynamicId].Dynamic_Data.modules.module_dynamic.desc?.rich_text_nodes ?? []);
|
|
38754
37637
|
img = await Render(this.e, "bilibili/dynamic/DYNAMIC_TYPE_AV", {
|
|
38755
37638
|
image_url: INFODATA.data.data.pic,
|
|
38756
37639
|
text: buildBilibiliDynamicRichText(INFODATA.data.data.title, []),
|
|
38757
37640
|
desc: INFODATA.data.data.desc_v2?.length ? buildBilibiliVideoDescRichText(INFODATA.data.data.desc_v2) : buildBilibiliDynamicRichText(INFODATA.data.data.desc || "", []),
|
|
37641
|
+
dynamic_text: dynamicText,
|
|
38758
37642
|
dianzan: Count(INFODATA.data.data.stat.like),
|
|
38759
37643
|
pinglun: Count(INFODATA.data.data.stat.reply),
|
|
38760
37644
|
share: Count(INFODATA.data.data.stat.share),
|
|
38761
37645
|
view: Count(INFODATA.data.data.stat.view),
|
|
38762
37646
|
coin: Count(INFODATA.data.data.stat.coin),
|
|
38763
37647
|
duration_text: data[dynamicId].Dynamic_Data.modules.module_dynamic.major?.archive?.duration_text ?? "0:00",
|
|
37648
|
+
page_length: INFODATA.data.data.pages.length,
|
|
38764
37649
|
create_time: TimeFormatter.toDateTime(data[dynamicId].Dynamic_Data.modules.module_author.pub_ts),
|
|
38765
37650
|
avatar_url: userINFO.data.data.card.face,
|
|
38766
37651
|
frame: data[dynamicId].Dynamic_Data.modules.module_author.pendant.image,
|
|
@@ -38774,7 +37659,7 @@ var Bilibilipush = class extends Base {
|
|
|
38774
37659
|
dynamicTYPE: "视频动态推送",
|
|
38775
37660
|
dynamic_id: dynamicId,
|
|
38776
37661
|
staff
|
|
38777
|
-
});
|
|
37662
|
+
}, { skipWatermark: true });
|
|
38778
37663
|
}
|
|
38779
37664
|
break;
|
|
38780
37665
|
/** 处理直播动态 */
|
|
@@ -38792,20 +37677,23 @@ var Bilibilipush = class extends Base {
|
|
|
38792
37677
|
now_time: TimeFormatter.now(),
|
|
38793
37678
|
share_url: "https://live.bilibili.com/" + liveInfo.live_play_info.room_id,
|
|
38794
37679
|
dynamicTYPE: "直播动态推送"
|
|
38795
|
-
});
|
|
37680
|
+
}, { skipWatermark: true });
|
|
38796
37681
|
break;
|
|
38797
37682
|
}
|
|
38798
37683
|
/** 处理转发动态 */
|
|
38799
37684
|
case DynamicType.FORWARD: {
|
|
38800
|
-
|
|
38801
|
-
|
|
38802
|
-
|
|
37685
|
+
const md = data[dynamicId].Dynamic_Data.modules.module_dynamic;
|
|
37686
|
+
if (md.topic) {
|
|
37687
|
+
const { name } = md.topic;
|
|
37688
|
+
const desc = md.desc;
|
|
37689
|
+
desc.rich_text_nodes ??= [];
|
|
37690
|
+
desc.rich_text_nodes.unshift({
|
|
38803
37691
|
orig_text: name,
|
|
38804
37692
|
jump_url: "",
|
|
38805
37693
|
text: name,
|
|
38806
37694
|
type: "topic"
|
|
38807
37695
|
});
|
|
38808
|
-
|
|
37696
|
+
desc.text = desc.text ? `${name}\n\n${desc.text}` : name;
|
|
38809
37697
|
}
|
|
38810
37698
|
const text = buildBilibiliDynamicRichText(data[dynamicId].Dynamic_Data.modules.module_dynamic.desc.text, data[dynamicId].Dynamic_Data.modules.module_dynamic.desc.rich_text_nodes);
|
|
38811
37699
|
let param = {};
|
|
@@ -38831,21 +37719,22 @@ var Bilibilipush = class extends Base {
|
|
|
38831
37719
|
frame: data[dynamicId].Dynamic_Data.orig.modules.module_author.pendant.image
|
|
38832
37720
|
};
|
|
38833
37721
|
break;
|
|
38834
|
-
case DynamicType.DRAW:
|
|
38835
|
-
|
|
38836
|
-
|
|
38837
|
-
const
|
|
38838
|
-
|
|
38839
|
-
|
|
38840
|
-
|
|
37722
|
+
case DynamicType.DRAW: {
|
|
37723
|
+
const origMd = data[dynamicId].Dynamic_Data.orig.modules.module_dynamic;
|
|
37724
|
+
if (origMd.topic) {
|
|
37725
|
+
const { name } = origMd.topic;
|
|
37726
|
+
const summary = origMd.major?.opus?.summary;
|
|
37727
|
+
if (summary) {
|
|
37728
|
+
summary.rich_text_nodes ??= [];
|
|
37729
|
+
summary.rich_text_nodes.unshift({
|
|
38841
37730
|
orig_text: name,
|
|
38842
37731
|
text: name,
|
|
38843
37732
|
type: "topic",
|
|
38844
|
-
rid:
|
|
37733
|
+
rid: origMd.topic.id.toString(),
|
|
38845
37734
|
jump_url: "114514",
|
|
38846
37735
|
style: { "114514": "1919810" }
|
|
38847
37736
|
});
|
|
38848
|
-
|
|
37737
|
+
summary.text = summary.text ? `${name}\n${summary.text}` : name;
|
|
38849
37738
|
}
|
|
38850
37739
|
}
|
|
38851
37740
|
param = {
|
|
@@ -38859,19 +37748,21 @@ var Bilibilipush = class extends Base {
|
|
|
38859
37748
|
frame: data[dynamicId].Dynamic_Data.orig.modules.module_author.pendant.image
|
|
38860
37749
|
};
|
|
38861
37750
|
break;
|
|
38862
|
-
|
|
38863
|
-
|
|
38864
|
-
|
|
38865
|
-
|
|
38866
|
-
|
|
38867
|
-
|
|
38868
|
-
|
|
37751
|
+
}
|
|
37752
|
+
case DynamicType.WORD: {
|
|
37753
|
+
const origMd = data[dynamicId].Dynamic_Data.orig.modules.module_dynamic;
|
|
37754
|
+
if (origMd.topic) {
|
|
37755
|
+
const { name } = origMd.topic;
|
|
37756
|
+
const summary = origMd.major?.opus?.summary;
|
|
37757
|
+
if (summary) {
|
|
37758
|
+
summary.rich_text_nodes ??= [];
|
|
37759
|
+
summary.rich_text_nodes.unshift({
|
|
38869
37760
|
orig_text: name,
|
|
38870
37761
|
text: name,
|
|
38871
37762
|
type: "topic",
|
|
38872
|
-
rid:
|
|
37763
|
+
rid: origMd.topic.id.toString()
|
|
38873
37764
|
});
|
|
38874
|
-
|
|
37765
|
+
summary.text = summary.text ? `${name}\n${summary.text}` : name;
|
|
38875
37766
|
}
|
|
38876
37767
|
}
|
|
38877
37768
|
param = {
|
|
@@ -38883,6 +37774,7 @@ var Bilibilipush = class extends Base {
|
|
|
38883
37774
|
frame: data[dynamicId].Dynamic_Data.orig.modules.module_author.pendant.image
|
|
38884
37775
|
};
|
|
38885
37776
|
break;
|
|
37777
|
+
}
|
|
38886
37778
|
case DynamicType.LIVE_RCMD: {
|
|
38887
37779
|
const liveData = JSON.parse(data[dynamicId].Dynamic_Data.orig.modules.module_dynamic.major.live_rcmd.content);
|
|
38888
37780
|
param = {
|
|
@@ -38923,8 +37815,9 @@ var Bilibilipush = class extends Base {
|
|
|
38923
37815
|
decoration_card: generateDecorationCard(data[dynamicId].Dynamic_Data.modules.module_author.decoration_card),
|
|
38924
37816
|
render_time: TimeFormatter.now(),
|
|
38925
37817
|
original_content: { [data[dynamicId].Dynamic_Data.orig.type]: param },
|
|
38926
|
-
imgList: imgList.length > 0 ? imgList : null
|
|
38927
|
-
|
|
37818
|
+
imgList: imgList.length > 0 ? imgList : null,
|
|
37819
|
+
dynamic_id: dynamicId
|
|
37820
|
+
}, { skipWatermark: true });
|
|
38928
37821
|
break;
|
|
38929
37822
|
}
|
|
38930
37823
|
/** 文章/专栏动态 */
|
|
@@ -38958,7 +37851,7 @@ var Bilibilipush = class extends Base {
|
|
|
38958
37851
|
render_time: TimeFormatter.now(),
|
|
38959
37852
|
share_url: articleContent.dyn_id_str ? `https://www.bilibili.com/opus/${articleContent.dyn_id_str}` : `https://www.bilibili.com/read/cv${articleContent.id}`,
|
|
38960
37853
|
dynamicTYPE: "专栏动态推送"
|
|
38961
|
-
});
|
|
37854
|
+
}, { skipWatermark: true });
|
|
38962
37855
|
break;
|
|
38963
37856
|
}
|
|
38964
37857
|
/** 未处理的动态类型 */
|
|
@@ -38976,7 +37869,11 @@ var Bilibilipush = class extends Base {
|
|
|
38976
37869
|
const { groupId, botId } = target;
|
|
38977
37870
|
const bot = karin$1.getBot(botId);
|
|
38978
37871
|
const Contact = karin$1.contactGroup(groupId);
|
|
38979
|
-
|
|
37872
|
+
const eventWithBot = this.e;
|
|
37873
|
+
eventWithBot.bot = bot;
|
|
37874
|
+
eventWithBot.selfId = botId;
|
|
37875
|
+
const watermarkedImg = img ? applyWatermarkToImages(img, this.e) : [];
|
|
37876
|
+
status = await karin$1.sendMsg(botId, Contact, [...watermarkedImg]);
|
|
38980
37877
|
if (Config.bilibili.push.parsedynamic && status.messageId) switch (data[dynamicId].dynamic_type) {
|
|
38981
37878
|
case "DYNAMIC_TYPE_AV":
|
|
38982
37879
|
if (send_video) {
|
|
@@ -39108,7 +38005,7 @@ var Bilibilipush = class extends Base {
|
|
|
39108
38005
|
outputPath,
|
|
39109
38006
|
loopCount,
|
|
39110
38007
|
staticImagePath: staticImg.filepath,
|
|
39111
|
-
transitionEnabled:
|
|
38008
|
+
transitionEnabled: true
|
|
39112
38009
|
})).success) {
|
|
39113
38010
|
const filePath = Common.tempDri.video + `tmp_${Date.now()}.mp4`;
|
|
39114
38011
|
fs.renameSync(outputPath, filePath);
|
|
@@ -39537,6 +38434,8 @@ registerErrorStrategy({
|
|
|
39537
38434
|
});
|
|
39538
38435
|
//#endregion
|
|
39539
38436
|
//#region src/platform/douyin/comments.ts
|
|
38437
|
+
var import_heic_decode = /* @__PURE__ */ __toESM(require_heic_decode(), 1);
|
|
38438
|
+
var import_jpeg_js = /* @__PURE__ */ __toESM(require_jpeg_js(), 1);
|
|
39540
38439
|
/**
|
|
39541
38440
|
* @description 提取评论里的 @ 用户 sec_uid 列表
|
|
39542
38441
|
*/
|
|
@@ -40550,13 +39449,7 @@ var DouYin = class DouYin extends Base {
|
|
|
40550
39449
|
分享链接:${logger.green(VideoData.data.aweme_detail.share_url)}
|
|
40551
39450
|
`);
|
|
40552
39451
|
video.bit_rate = douyinProcessVideos(video.bit_rate, Config.douyin.videoQuality, Config.douyin.maxAutoVideoSize);
|
|
40553
|
-
g_video_url =
|
|
40554
|
-
url: video.bit_rate[0].play_addr.url_list[2],
|
|
40555
|
-
headers: {
|
|
40556
|
-
...this.headers,
|
|
40557
|
-
Referer: video.bit_rate[0].play_addr.url_list[0]
|
|
40558
|
-
}
|
|
40559
|
-
}).getLongLink();
|
|
39452
|
+
g_video_url = video.bit_rate[0].play_addr.url_list[0] ?? video.bit_rate[0].play_addr.url_list[1] ?? video.bit_rate[0].play_addr.url_list[2];
|
|
40560
39453
|
g_title = VideoData.data.aweme_detail.preview_title.substring(0, 80).replace(/[\\/:*?"<>|\r\n]/g, " ");
|
|
40561
39454
|
mp4size = (video.bit_rate[0].play_addr.data_size / (1024 * 1024)).toFixed(2);
|
|
40562
39455
|
}
|
|
@@ -40641,7 +39534,7 @@ var DouYin = class DouYin extends Base {
|
|
|
40641
39534
|
const img = await Render(this.e, "douyin/comment", {
|
|
40642
39535
|
Type: isArticle ? "文章" : isVideo ? "视频" : this.is_slides ? "合辑" : "图集",
|
|
40643
39536
|
CommentsData: douyinCommentsRes.CommentsData,
|
|
40644
|
-
CommentLength:
|
|
39537
|
+
CommentLength: douyinCommentsRes.CommentsData.length ?? 0,
|
|
40645
39538
|
share_url: isVideo ? `https://aweme.snssdk.com/aweme/v1/play/?video_id=${aweme.video.play_addr.uri}&ratio=1080p&line=0` : aweme.share_url,
|
|
40646
39539
|
VideoSize: mp4size,
|
|
40647
39540
|
VideoFPS: FPS,
|
|
@@ -40649,7 +39542,7 @@ var DouYin = class DouYin extends Base {
|
|
|
40649
39542
|
Region: aweme.region,
|
|
40650
39543
|
suggestWrod: suggest,
|
|
40651
39544
|
Resolution: isVideo && video ? `${video.bit_rate[0].play_addr.width} x ${video.bit_rate[0].play_addr.height}` : null,
|
|
40652
|
-
maxDepth:
|
|
39545
|
+
maxDepth: 6,
|
|
40653
39546
|
Author: aweme.author.nickname,
|
|
40654
39547
|
AuthorAvatar: aweme.author.avatar_thumb.url_list[0],
|
|
40655
39548
|
Statistics: {
|
|
@@ -41612,7 +40505,7 @@ var DouYinpush = class extends Base {
|
|
|
41612
40505
|
following_count: this.count(Detail_Data.user_info.data.user.following_count),
|
|
41613
40506
|
total_favorited: this.count(Detail_Data.user_info.data.user.total_favorited),
|
|
41614
40507
|
has_commerce_goods: liveItem.has_commerce_goods
|
|
41615
|
-
});
|
|
40508
|
+
}, { skipWatermark: true });
|
|
41616
40509
|
} else {
|
|
41617
40510
|
const realUrl = Config.douyin.push.shareType === "web" && await new Network({
|
|
41618
40511
|
url: Detail_Data.share_url,
|
|
@@ -41642,7 +40535,7 @@ var DouYinpush = class extends Base {
|
|
|
41642
40535
|
author_avatar: "https://p3-pc.douyinpic.com/aweme/1080x1080/" + authorUserInfo.data.user.avatar_larger.uri,
|
|
41643
40536
|
author_douyin_id: authorUserInfo.data.user.unique_id === "" ? authorUserInfo.data.user.short_id : authorUserInfo.data.user.unique_id,
|
|
41644
40537
|
share_url: Config.douyin.push.shareType === "web" ? realUrl : `https://aweme.snssdk.com/aweme/v1/play/?video_id=${Detail_Data.video.play_addr.uri}&ratio=1080p&line=0`
|
|
41645
|
-
});
|
|
40538
|
+
}, { skipWatermark: true });
|
|
41646
40539
|
} else if (pushItem.pushType === "recommend") {
|
|
41647
40540
|
const authorUserInfo = "author_user_info" in Detail_Data ? Detail_Data.author_user_info : void 0;
|
|
41648
40541
|
const coverUrl = getWorkCoverUrl(getWorkTypeInfo(Detail_Data), Detail_Data);
|
|
@@ -41662,7 +40555,7 @@ var DouYinpush = class extends Base {
|
|
|
41662
40555
|
author_avatar: "https://p3-pc.douyinpic.com/aweme/1080x1080/" + authorUserInfo.data.user.avatar_larger.uri,
|
|
41663
40556
|
author_douyin_id: authorUserInfo.data.user.unique_id === "" ? authorUserInfo.data.user.short_id : authorUserInfo.data.user.unique_id,
|
|
41664
40557
|
share_url: Config.douyin.push.shareType === "web" ? realUrl : `https://aweme.snssdk.com/aweme/v1/play/?video_id=${Detail_Data.video.play_addr.uri}&ratio=1080p&line=0`
|
|
41665
|
-
});
|
|
40558
|
+
}, { skipWatermark: true });
|
|
41666
40559
|
} else {
|
|
41667
40560
|
const dynamicTypeLabel = "作品动态推送";
|
|
41668
40561
|
const workTypeInfo = getWorkTypeInfo(Detail_Data);
|
|
@@ -41688,7 +40581,7 @@ var DouYinpush = class extends Base {
|
|
|
41688
40581
|
粉丝: this.count(Detail_Data.user_info.data.user.follower_count),
|
|
41689
40582
|
share_url: Detail_Data.share_url,
|
|
41690
40583
|
useDarkTheme: false
|
|
41691
|
-
});
|
|
40584
|
+
}, { skipWatermark: true });
|
|
41692
40585
|
} else img = await Render(this.e, workTypeInfo.templatePath, {
|
|
41693
40586
|
image_url: coverUrl,
|
|
41694
40587
|
desc: this.desc(Detail_Data, Detail_Data.desc),
|
|
@@ -41730,7 +40623,7 @@ var DouYinpush = class extends Base {
|
|
|
41730
40623
|
subscriber_role: subscriberInCreators?.role_title ?? (subscriberUid && Detail_Data.author?.uid && subscriberUid === Detail_Data.author.uid || subscriberSecUid && Detail_Data.author?.sec_uid && subscriberSecUid === Detail_Data.author.sec_uid || Detail_Data.user_info.data.user.nickname && Detail_Data.author?.nickname && Detail_Data.user_info.data.user.nickname === Detail_Data.author.nickname ? "作者" : void 0)
|
|
41731
40624
|
};
|
|
41732
40625
|
})()
|
|
41733
|
-
});
|
|
40626
|
+
}, { skipWatermark: true });
|
|
41734
40627
|
}
|
|
41735
40628
|
}
|
|
41736
40629
|
for (const target of pushItem.targets) {
|
|
@@ -41738,7 +40631,12 @@ var DouYinpush = class extends Base {
|
|
|
41738
40631
|
const { groupId, botId } = target;
|
|
41739
40632
|
if (!skip) {
|
|
41740
40633
|
const Contact = karin$1.contactGroup(groupId);
|
|
41741
|
-
|
|
40634
|
+
const bot = karin$1.getBot(botId);
|
|
40635
|
+
const eventWithBot = this.e;
|
|
40636
|
+
eventWithBot.bot = bot;
|
|
40637
|
+
eventWithBot.selfId = botId;
|
|
40638
|
+
const watermarkedImg = img ? applyWatermarkToImages(img, this.e) : [];
|
|
40639
|
+
status = await karin$1.sendMsg(botId, Contact, [...watermarkedImg]);
|
|
41742
40640
|
if (pushItem.pushType === "live" && "room_data" in pushItem.Detail_Data && status.message_id) await douyinDBInstance.updateLiveStatus(pushItem.sec_uid, true);
|
|
41743
40641
|
if (Config.douyin.push.parsedynamic && status.message_id) {
|
|
41744
40642
|
const workTypeInfo = getWorkTypeInfo(Detail_Data);
|
|
@@ -42844,7 +41742,7 @@ var Xiaohongshu = class extends Base {
|
|
|
42844
41742
|
if (livePhoto.filepath) {
|
|
42845
41743
|
if (shouldGenerateVideo) {
|
|
42846
41744
|
const outputPath = Common.tempDri.video + `xhs_live_${Date.now()}_${index}.mp4`;
|
|
42847
|
-
const transitionEnabled =
|
|
41745
|
+
const transitionEnabled = Boolean(staticImgPath);
|
|
42848
41746
|
const safeStaticPath = staticImgPath || livePhoto.filepath;
|
|
42849
41747
|
const result = await loopVideoWithTransition({
|
|
42850
41748
|
inputPath: livePhoto.filepath,
|
|
@@ -42856,7 +41754,7 @@ var Xiaohongshu = class extends Base {
|
|
|
42856
41754
|
context: bgmContext ?? void 0
|
|
42857
41755
|
});
|
|
42858
41756
|
const success = result.success;
|
|
42859
|
-
if (
|
|
41757
|
+
if (result.context) bgmContext = result.context;
|
|
42860
41758
|
if (success) {
|
|
42861
41759
|
const filePath = Common.tempDri.video + `tmp_${Date.now()}.mp4`;
|
|
42862
41760
|
fs.renameSync(outputPath, filePath);
|
|
@@ -43200,7 +42098,7 @@ var douyinLogin = async (e) => {
|
|
|
43200
42098
|
}
|
|
43201
42099
|
let gcInterval;
|
|
43202
42100
|
try {
|
|
43203
|
-
const loginQRcode = await Render(e, "douyin/qrcodeImg", qrCodeData.url ? { share_url: qrCodeData.url } : {
|
|
42101
|
+
const loginQRcode = await Render(e, "douyin/qrcodeImg", qrCodeData.url ? { share_url: qrCodeData.url } : { share_url: qrCodeData.originalImage });
|
|
43204
42102
|
const base64Data = loginQRcode[0]?.file;
|
|
43205
42103
|
if (!base64Data) throw new Error("生成二维码图片失败");
|
|
43206
42104
|
const cleanBase64 = base64Data.replace(/^base64:\/\//, "");
|
|
@@ -43442,7 +42340,7 @@ var waitQrcode = async (page) => {
|
|
|
43442
42340
|
const response = await fetch(originalImage);
|
|
43443
42341
|
imageBuffer = Buffer.from(await response.arrayBuffer());
|
|
43444
42342
|
}
|
|
43445
|
-
const qrContent =
|
|
42343
|
+
const qrContent = scan(imageBuffer);
|
|
43446
42344
|
if (qrContent) {
|
|
43447
42345
|
logger.mark("二维码解码成功:", qrContent);
|
|
43448
42346
|
return {
|
|
@@ -47011,19 +45909,6 @@ var douyinConfigSchema = {
|
|
|
47011
45909
|
max: 20
|
|
47012
45910
|
}]
|
|
47013
45911
|
},
|
|
47014
|
-
{
|
|
47015
|
-
key: "subCommentDepth",
|
|
47016
|
-
type: "input",
|
|
47017
|
-
inputType: "number",
|
|
47018
|
-
label: "次级评论解析深度",
|
|
47019
|
-
description: "次级评论解析深度",
|
|
47020
|
-
disabled: $or($not("switch"), $not($includes("sendContent", "comment"))),
|
|
47021
|
-
rules: [{
|
|
47022
|
-
min: 1,
|
|
47023
|
-
max: 6,
|
|
47024
|
-
error: "嵌套深度最高只有 6 层,超过 6 层的评论会被强制截断"
|
|
47025
|
-
}]
|
|
47026
|
-
},
|
|
47027
45912
|
{
|
|
47028
45913
|
key: "commentImageCollection",
|
|
47029
45914
|
type: "switch",
|
|
@@ -47031,13 +45916,6 @@ var douyinConfigSchema = {
|
|
|
47031
45916
|
description: "开启后将收集评论区的图片,以合并转发的形式返回",
|
|
47032
45917
|
disabled: $or($not("switch"), $not($includes("sendContent", "comment")))
|
|
47033
45918
|
},
|
|
47034
|
-
{
|
|
47035
|
-
key: "realCommentCount",
|
|
47036
|
-
type: "switch",
|
|
47037
|
-
label: "显示真实评论数量",
|
|
47038
|
-
description: "评论图是否显示真实评论数量,关闭则显示解析到的评论数量",
|
|
47039
|
-
disabled: $or($not("switch"), $not($includes("sendContent", "comment")))
|
|
47040
|
-
},
|
|
47041
45919
|
{
|
|
47042
45920
|
type: "divider",
|
|
47043
45921
|
title: "渲染与画质设置"
|
|
@@ -48212,4 +47090,4 @@ mkdirSync(`${karinPathBase}/${Root.pluginName}/data`);
|
|
|
48212
47090
|
mkdirSync(Common.tempDri.images);
|
|
48213
47091
|
mkdirSync(Common.tempDri.video);
|
|
48214
47092
|
//#endregion
|
|
48215
|
-
export {
|
|
47093
|
+
export { createLinkCardNode as $, xiaohongshuSign as $n, emitLogDebug as $r, CommentType as $t, template_default as A, getHeadersAndData as An, BilibiliBv2AvParamsSchema as Ar, KuaishouApiRoutes as At, DouyinDBBase as B, douyinApiUrls as Bn, BilibiliQrcodeParamsSchema as Br, DouyinInternalMethods as Bt, help as C, qtparam as Cn, BilibiliApplyCaptchaParamsSchema as Cr, CreateApp as Ct, removeOldFiles as D, logger$2 as Dn, BilibiliAv2BvParamsSchema as Dr, BilibiliMethodMapping as Dt, dylogin as E, logMiddleware as En, BilibiliArticleParamsSchema as Er, BilibiliApiRoutes as Et, getBilibiliDB as F, kuaishouFetcher$1 as Fn, BilibiliDynamicParamsSchema as Fr, getEnglishMethodName as Ft, createAtNode as G, createSuccessResponse$1 as Gn, BilibiliVideoDownloadParamsSchema as Gr, MethodMaps as Gt, reactServerRender as H, bilibiliFetcher$1 as Hn, BilibiliUserParamsSchema as Hr, KuaishouFetcherMethods as Ht, getDouyinDB as I, kuaishouSign as In, BilibiliEmojiParamsSchema as Ir, BilibiliFetcherMethods as It, createEmojiNode as J, validateKuaishouParams as Jn, emitApiError as Jr, XiaohongshuMethodToFetcher as Jt, createBlockquoteNode as K, validateBilibiliParams as Kn, BilibiliVideoParamsSchema as Kr, XiaohongshuFetcherMethods as Kt, getStatisticsDB as L, kuaishouApiUrls as Ln, BilibiliLiveParamsSchema as Lr, BilibiliInternalMethods as Lt, bilibiliDBInstance as M, createBoundXiaohongshuFetcher as Mn, BilibiliCommentParamsSchema as Mr, XiaohongshuApiRoutes as Mt, cleanOldDynamicCache as N, xiaohongshuFetcher$1 as Nn, BilibiliCommentReplyParamsSchema as Nr, XiaohongshuMethodMapping as Nt, task as O, fetchData as On, BilibiliBangumiInfoParamsSchema as Or, DouyinApiRoutes as Ot, douyinDBInstance as P, createBoundKuaishouFetcher as Pn, BilibiliDanmakuParamsSchema as Pr, getApiRoute as Pt, createLineBreakNode as Q, xiaohongshuApiUrls as Qn, emitLog as Qr, MajorType as Qt, initAllDatabases as R, douyinFetcher$1 as Rn, BilibiliLoginParamsSchema as Rr, BilibiliMethodToFetcher as Rt, testDouyinPush as S, bv2av as Sn, DouyinWorkParamsSchema as Sr, softFetch as St, biLogin as T, initLogger as Tn, BilibiliArticleInfoParamsSchema as Tr, amagiClient$1 as Tt, renderVideoPreviewPage as U, createBoundBilibiliFetcher as Un, BilibiliValidateCaptchaParamsSchema as Ur, KuaishouInternalMethods as Ut, BilibiliDBBase as V, douyinSign as Vn, BilibiliQrcodeStatusParamsSchema as Vr, DouyinMethodToFetcher as Vt, renderRichTextToReact as W, createErrorResponse as Wn, BilibiliValidationSchemas as Wr, KuaishouMethodToFetcher as Wt, createHorizontalRuleNode as X, XiaohongshuMethodRoutes as Xn, emitHttpRequest as Xr, DynamicType as Xt, createHeadingNode as Y, validateXiaohongshuParams as Yn, emitApiSuccess as Yr, toFetcherMethod as Yt, createImageNode as Z, XiaohongshuValidationSchemas as Zn, emitHttpResponse as Zr, AdditionalType as Zt, douyinPushList as _, handleError as _n, DouyinQrcodeParamsSchema as _r, amagiClient as _t, bilibiliAPP as a, emitNetworkRetry as ai, kuaishouUtils as an, KuaishouUserWorkListParamsSchema as ar, createRichTextDocument as at, setbiliPush as b, parseDmSegMobileReply as bn, DouyinUserParamsSchema as br, kuaishouFetcher as bt, prefix as c, bilibiliApiUrls as ci, kuaishou$1 as cn, DouyinCommentParamsSchema as cr, createTopicNode as ct, groupStatistics as d, getKuaishouData as di, createBoundDouyinApi as dn, DouyinEmojiListParamsSchema as dr, createWebLinkNode as dt, emitLogError as ei, createAmagiClient as en, KuaishouCommentParamsSchema as er, createListItemNode as et, qrLogin as f, Root as fi, douyin$1 as fn, DouyinEmojiProParamsSchema as fr, extractRichTextPlainText as ft, douyinPush as g, ValidationError as gn, DouyinMusicParamsSchema as gr, SOFT_ERROR_CODES as gt, changeBotID as h, ApiError as hn, DouyinMethodRoutes as hr, AmagiError as ht, update as i, emitNetworkError as ii, xiaohongshu$1 as in, KuaishouUserProfileParamsSchema as ir, createParagraphNode as it, webConfig as j, isNetworkErrorResult as jn, BilibiliColumnInfoParamsSchema as jr, KuaishouMethodMapping as jt, testWrapWithErrorHandler as k, fetchResponse as kn, BilibiliBangumiStreamParamsSchema as kr, DouyinMethodMapping as kt, xiaohongshuAPP as l, getBilibiliData as li, douyinUtils as ln, DouyinCommentReplyParamsSchema as lr, createViewPictureNode as lt, bilibiliPushList as m, createBilibiliRoutes as mn, DouyinLiveRoomParamsSchema as mr, AmagiBase as mt, kkkUpdateCommand as n, emitLogMark as ni, createXiaohongshuRoutes as nn, KuaishouLiveRoomInfoParamsSchema as nr, createLotteryNode as nt, douyinAPP as o, bilibili$1 as oi, createKuaishouRoutes as on, KuaishouValidationSchemas as or, createSearchKeywordNode as ot, bilibiliPush as p, bilibiliUtils as pn, DouyinHotWordsParamsSchema as pr, normalizeRichTextNodes as pt, createCodeBlockNode as q, validateDouyinParams as qn, amagiEvents as qr, XiaohongshuInternalMethods as qt, kkkUpdateTest as r, emitLogWarn as ri, createBoundXiaohongshuApi as rn, KuaishouMethodRoutes as rr, createMentionNode as rt, kuaishouAPP as s, createBoundBilibiliApi as si, createBoundKuaishouApi as sn, KuaishouVideoParamsSchema as sr, createTextNode as st, kkkUpdate as t, emitLogInfo as ti, xiaohongshuUtils as tn, KuaishouEmojiParamsSchema as tr, createListNode as tt, globalStatistics as u, getDouyinData as ui, createDouyinRoutes as un, DouyinDanmakuParamsSchema as ur, createVoteNode as ut, forcePush as v, bilibiliErrorCodeMap as vn, DouyinSearchParamsSchema as vr, bilibiliFetcher as vt, version as w, httpLogger as wn, BilibiliArticleCardParamsSchema as wr, amagi as wt, setdyPush as x, av2bv as xn, DouyinValidationSchemas as xr, reloadAmagiConfig as xt, globalIgnore as y, wbi_sign as yn, DouyinUserListParamsSchema as yr, douyinFetcher as yt, StatisticsDBBase as z, createBoundDouyinFetcher as zn, BilibiliMethodRoutes as zr, DouyinFetcherMethods as zt };
|