@dan-uni/dan-any 1.0.1 → 1.2.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.
Files changed (126) hide show
  1. package/dist/browser/157.min.js +30 -0
  2. package/dist/{index.min.js → browser/17.min.js} +14 -8
  3. package/dist/browser/898.min.js +10 -0
  4. package/dist/browser/index.min.js +1 -0
  5. package/dist/browser/plugins/bili-dedupe.min.js +1 -0
  6. package/dist/browser/plugins/index.min.js +2 -0
  7. package/dist/browser/plugins/stats.min.js +1 -0
  8. package/dist/{src → browser/src}/index.d.ts +4 -4
  9. package/dist/browser/src/plugins/bili-dedupe/index.d.ts +3 -0
  10. package/dist/browser/src/plugins/index.d.ts +2 -0
  11. package/dist/browser/src/plugins/stats/getLatestDan.d.ts +6 -0
  12. package/dist/browser/src/plugins/stats/index.d.ts +1 -0
  13. package/dist/browser/src/plugins/stats/index.test.d.ts +1 -0
  14. package/dist/browser/src/utils/dm-gen.test.d.ts +1 -0
  15. package/dist/node/157.js +30 -0
  16. package/dist/{index.js → node/17.js} +2 -2
  17. package/dist/node/898.js +10 -0
  18. package/dist/node/index.js +1 -0
  19. package/dist/node/plugins/bili-dedupe.js +1 -0
  20. package/dist/node/plugins/index.js +2 -0
  21. package/dist/node/plugins/stats.js +1 -0
  22. package/dist/node/src/ass-gen/__tests__/canvas.test.d.ts +1 -0
  23. package/dist/node/src/ass-gen/__tests__/generate.test.d.ts +1 -0
  24. package/dist/node/src/ass-gen/ass/create.d.ts +4 -0
  25. package/dist/node/src/ass-gen/ass/dialogue.d.ts +16 -0
  26. package/dist/node/src/ass-gen/ass/event.d.ts +2 -0
  27. package/dist/node/src/ass-gen/ass/info.d.ts +8 -0
  28. package/dist/node/src/ass-gen/ass/raw.d.ts +14 -0
  29. package/dist/node/src/ass-gen/ass/style.d.ts +2 -0
  30. package/dist/node/src/ass-gen/config.d.ts +2 -0
  31. package/dist/node/src/ass-gen/index.d.ts +30 -0
  32. package/dist/node/src/ass-gen/types.d.ts +71 -0
  33. package/dist/node/src/ass-gen/util/color.d.ts +18 -0
  34. package/dist/node/src/ass-gen/util/danconvert.d.ts +5 -0
  35. package/dist/node/src/ass-gen/util/index.d.ts +4 -0
  36. package/dist/node/src/ass-gen/util/lang.d.ts +3 -0
  37. package/dist/node/src/ass-gen/util/layout.d.ts +4 -0
  38. package/dist/node/src/index.d.ts +255 -0
  39. package/dist/node/src/index.test.d.ts +1 -0
  40. package/dist/node/src/plugins/bili-dedupe/index.d.ts +3 -0
  41. package/dist/node/src/plugins/bili-dedupe/index.test.d.ts +1 -0
  42. package/dist/node/src/plugins/index.d.ts +2 -0
  43. package/dist/node/src/plugins/stats/getLatestDan.d.ts +6 -0
  44. package/dist/node/src/plugins/stats/index.d.ts +1 -0
  45. package/dist/node/src/plugins/stats/index.test.d.ts +1 -0
  46. package/dist/node/src/proto/gen/bili/dm_pb.d.ts +3426 -0
  47. package/dist/node/src/proto/gen/danuni_pb.d.ts +172 -0
  48. package/dist/node/src/utils/dm-gen.d.ts +309 -0
  49. package/dist/node/src/utils/dm-gen.test.d.ts +1 -0
  50. package/dist/node/src/utils/id-gen.d.ts +50 -0
  51. package/dist/node/src/utils/platform.d.ts +24 -0
  52. package/dist/{index.umd.min.js → umd/index.umd.min.js} +76 -67
  53. package/dist/umd/plugins/bili-dedupe.umd.min.js +25028 -0
  54. package/dist/umd/plugins/bili-dedupe.umd.min.js.LICENSE.txt +34 -0
  55. package/dist/umd/plugins/index.umd.min.js +25048 -0
  56. package/dist/umd/plugins/index.umd.min.js.LICENSE.txt +34 -0
  57. package/dist/umd/plugins/stats.umd.min.js +39 -0
  58. package/dist/umd/src/ass-gen/__tests__/canvas.test.d.ts +1 -0
  59. package/dist/umd/src/ass-gen/__tests__/generate.test.d.ts +1 -0
  60. package/dist/umd/src/ass-gen/ass/create.d.ts +4 -0
  61. package/dist/umd/src/ass-gen/ass/dialogue.d.ts +16 -0
  62. package/dist/umd/src/ass-gen/ass/event.d.ts +2 -0
  63. package/dist/umd/src/ass-gen/ass/info.d.ts +8 -0
  64. package/dist/umd/src/ass-gen/ass/raw.d.ts +14 -0
  65. package/dist/umd/src/ass-gen/ass/style.d.ts +2 -0
  66. package/dist/umd/src/ass-gen/config.d.ts +2 -0
  67. package/dist/umd/src/ass-gen/index.d.ts +30 -0
  68. package/dist/umd/src/ass-gen/types.d.ts +71 -0
  69. package/dist/umd/src/ass-gen/util/color.d.ts +18 -0
  70. package/dist/umd/src/ass-gen/util/danconvert.d.ts +5 -0
  71. package/dist/umd/src/ass-gen/util/index.d.ts +4 -0
  72. package/dist/umd/src/ass-gen/util/lang.d.ts +3 -0
  73. package/dist/umd/src/ass-gen/util/layout.d.ts +4 -0
  74. package/dist/umd/src/index.d.ts +255 -0
  75. package/dist/umd/src/index.test.d.ts +1 -0
  76. package/dist/umd/src/plugins/bili-dedupe/index.d.ts +3 -0
  77. package/dist/umd/src/plugins/bili-dedupe/index.test.d.ts +1 -0
  78. package/dist/umd/src/plugins/index.d.ts +2 -0
  79. package/dist/umd/src/plugins/stats/getLatestDan.d.ts +6 -0
  80. package/dist/umd/src/plugins/stats/index.d.ts +1 -0
  81. package/dist/umd/src/plugins/stats/index.test.d.ts +1 -0
  82. package/dist/umd/src/proto/gen/bili/dm_pb.d.ts +3426 -0
  83. package/dist/umd/src/proto/gen/danuni_pb.d.ts +172 -0
  84. package/dist/umd/src/utils/dm-gen.d.ts +309 -0
  85. package/dist/umd/src/utils/dm-gen.test.d.ts +1 -0
  86. package/dist/umd/src/utils/id-gen.d.ts +50 -0
  87. package/dist/umd/src/utils/platform.d.ts +24 -0
  88. package/package.json +8 -8
  89. package/plugins/package.json +6 -0
  90. package/rslib.config.ts +11 -0
  91. package/src/index.ts +8 -4
  92. package/src/plugins/bili-dedupe/index.test.ts +43 -0
  93. package/src/plugins/bili-dedupe/index.ts +29 -0
  94. package/src/plugins/index.ts +2 -0
  95. package/src/plugins/stats/getLatestDan.ts +13 -0
  96. package/src/plugins/stats/index.test.ts +39 -0
  97. package/src/plugins/stats/index.ts +1 -0
  98. package/src/proto/gen/bili/dm_pb.ts +1 -1
  99. package/src/proto/gen/danuni_pb.ts +1 -1
  100. /package/dist/{index.min.js.LICENSE.txt → browser/17.min.js.LICENSE.txt} +0 -0
  101. /package/dist/{rslib-runtime.min.js → browser/rslib-runtime.min.js} +0 -0
  102. /package/dist/{src → browser/src}/ass-gen/__tests__/canvas.test.d.ts +0 -0
  103. /package/dist/{src → browser/src}/ass-gen/__tests__/generate.test.d.ts +0 -0
  104. /package/dist/{src → browser/src}/ass-gen/ass/create.d.ts +0 -0
  105. /package/dist/{src → browser/src}/ass-gen/ass/dialogue.d.ts +0 -0
  106. /package/dist/{src → browser/src}/ass-gen/ass/event.d.ts +0 -0
  107. /package/dist/{src → browser/src}/ass-gen/ass/info.d.ts +0 -0
  108. /package/dist/{src → browser/src}/ass-gen/ass/raw.d.ts +0 -0
  109. /package/dist/{src → browser/src}/ass-gen/ass/style.d.ts +0 -0
  110. /package/dist/{src → browser/src}/ass-gen/config.d.ts +0 -0
  111. /package/dist/{src → browser/src}/ass-gen/index.d.ts +0 -0
  112. /package/dist/{src → browser/src}/ass-gen/types.d.ts +0 -0
  113. /package/dist/{src → browser/src}/ass-gen/util/color.d.ts +0 -0
  114. /package/dist/{src → browser/src}/ass-gen/util/danconvert.d.ts +0 -0
  115. /package/dist/{src → browser/src}/ass-gen/util/index.d.ts +0 -0
  116. /package/dist/{src → browser/src}/ass-gen/util/lang.d.ts +0 -0
  117. /package/dist/{src → browser/src}/ass-gen/util/layout.d.ts +0 -0
  118. /package/dist/{src → browser/src}/index.test.d.ts +0 -0
  119. /package/dist/{src/utils/dm-gen.test.d.ts → browser/src/plugins/bili-dedupe/index.test.d.ts} +0 -0
  120. /package/dist/{src → browser/src}/proto/gen/bili/dm_pb.d.ts +0 -0
  121. /package/dist/{src → browser/src}/proto/gen/danuni_pb.d.ts +0 -0
  122. /package/dist/{src → browser/src}/utils/dm-gen.d.ts +0 -0
  123. /package/dist/{src → browser/src}/utils/id-gen.d.ts +0 -0
  124. /package/dist/{src → browser/src}/utils/platform.d.ts +0 -0
  125. /package/dist/{rslib-runtime.js → node/rslib-runtime.js} +0 -0
  126. /package/dist/{index.umd.min.js.LICENSE.txt → umd/index.umd.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1,255 @@
1
+ import 'reflect-metadata/lite';
2
+ import type { Options as AssGenOptions, CanvasCtx } from './ass-gen';
3
+ import type { CommandDm as DM_JSON_BiliCommandGrpc } from './proto/gen/bili/dm_pb';
4
+ import { UniDM } from './utils/dm-gen';
5
+ import * as UniDMTools from './utils/dm-gen';
6
+ import * as UniIDTools from './utils/id-gen';
7
+ import * as platform from './utils/platform';
8
+ interface DanUniConvertTip {
9
+ meassage: string;
10
+ version: string;
11
+ data?: string;
12
+ }
13
+ export interface DM_XML_Bili {
14
+ i: {
15
+ chatserver: string;
16
+ chatid: bigint;
17
+ mission: number;
18
+ maxlimit: number;
19
+ state: number;
20
+ real_name: number;
21
+ source: string;
22
+ d: {
23
+ '#text': string;
24
+ '@_p': string;
25
+ }[];
26
+ };
27
+ }
28
+ export interface DM_JSON_BiliUp {
29
+ /** 接口状态码,0 表示成功 */
30
+ code: number;
31
+ /** 文本形式的状态码,约定为字符串 "0" */
32
+ message: string;
33
+ /** TTL(time to live) 标识,本接口常量为 1 */
34
+ ttl: number;
35
+ data: {
36
+ /** 分页元信息 */
37
+ page: {
38
+ /** 当前页序号,从 1 开始 */
39
+ num: number;
40
+ /** 每页返回的弹幕条数 */
41
+ size: number;
42
+ /** 总页数 */
43
+ total: number;
44
+ };
45
+ result: {
46
+ /** 弹幕 ID,int64 */
47
+ id: bigint;
48
+ /** 弹幕 ID 字符串形式 */
49
+ id_str: string;
50
+ /** 弹幕类型:1 表示视频弹幕(当前接口恒为 1) */
51
+ type: number;
52
+ aid: bigint;
53
+ bvid: string;
54
+ oid: bigint;
55
+ mid: bigint;
56
+ /** 发送者 mid 的 CRC 哈希(正常接口里用的是这个,保护隐私) */
57
+ mid_hash: string;
58
+ /** 弹幕池 */
59
+ pool: number;
60
+ /** 属性位字符串,逗号分隔的数字列表,对应 attr 二进制位 */
61
+ attrs: string;
62
+ /** 弹幕出现时间,单位毫秒(注意,此处与protobuf接口保持一致,但xml中progress是秒) */
63
+ progress: number;
64
+ mode: number;
65
+ /** 弹幕内容, content */
66
+ msg: string;
67
+ state: number;
68
+ fontsize: number;
69
+ /** 弹幕颜色,需将16进制转化为普通弹幕的10进制,示例:"ffffff" */
70
+ color: string;
71
+ /** 发送时间戳,单位秒 */
72
+ ctime: number;
73
+ /** 发送者昵称 */
74
+ uname: string;
75
+ /** 发送者头像链接 */
76
+ uface: string;
77
+ /** 视频主标题 */
78
+ title: string;
79
+ self_seen: boolean;
80
+ /** 弹幕点赞数 */
81
+ like_count: number;
82
+ user_like: number;
83
+ /** 分 P 标题 */
84
+ p_title: string;
85
+ /** 视频封面链接 */
86
+ cover: string;
87
+ is_charge: boolean;
88
+ is_charge_plus: boolean;
89
+ following: boolean;
90
+ extra_cps: null;
91
+ }[];
92
+ };
93
+ }
94
+ export interface DM_JSON_Dplayer {
95
+ code: number;
96
+ /**
97
+ * progress,mode,color,midHash,content
98
+ */
99
+ data: [number, number, number, string, string][];
100
+ }
101
+ export interface DM_JSON_Artplayer {
102
+ danmuku: {
103
+ text: string;
104
+ time?: number;
105
+ mode?: number;
106
+ color?: string;
107
+ border?: boolean;
108
+ style?: {};
109
+ }[];
110
+ }
111
+ export interface DM_JSON_DDPlay {
112
+ count: number | string;
113
+ comments: {
114
+ cid: bigint;
115
+ p: string;
116
+ m: string;
117
+ }[];
118
+ }
119
+ export type DM_format = 'danuni.json' | 'danuni.pb.bin' | 'bili.xml' | 'bili.pb.bin' | 'bili.cmd.pb.bin' | 'bili.up.json' | 'dplayer.json' | 'artplayer.json' | 'ddplay.json' | 'common.ass';
120
+ type shareItems = Partial<Pick<UniDMTools.UniDMObj, 'SOID' | 'senderID' | 'platform' | 'SOID' | 'pool' | 'mode' | 'color'>>;
121
+ type statItems = Partial<Pick<UniDMTools.UniDMObj, 'SOID' | 'mode' | 'fontsize' | 'color' | 'senderID' | 'content' | 'weight' | 'pool' | 'platform'>>;
122
+ type Stats<T extends keyof statItems> = Map<statItems[T], number>;
123
+ type UniPoolPipe = (that: UniPool) => Promise<any>;
124
+ type UniPoolPipeSync = (that: UniPool) => any;
125
+ export interface Options {
126
+ dedupe?: boolean;
127
+ /**
128
+ * @description
129
+ * 当为`false`时,关闭DMID生成; 当为正整数时,表示生成DMID的截取位数; 或可传入一个DMID生成器实例
130
+ */
131
+ dmid?: boolean | number | UniIDTools.DMIDGenerator;
132
+ }
133
+ export declare class UniPool {
134
+ dans: UniDM[];
135
+ options: Options;
136
+ info: {
137
+ /**
138
+ * 是否从已被转换过的第三方格式弹幕再次转换而来
139
+ */
140
+ fromConverted: boolean;
141
+ };
142
+ constructor(dans: UniDM[], options?: Options, info?: {
143
+ /**
144
+ * 是否从已被转换过的第三方格式弹幕再次转换而来
145
+ */
146
+ fromConverted: boolean;
147
+ });
148
+ pipe<T extends (...args: any) => any = UniPoolPipe>(fn: T): Promise<ReturnType<T>>;
149
+ pipeSync<T extends (...args: any) => any = UniPoolPipeSync>(fn: T): ReturnType<T>;
150
+ /**
151
+ * @deprecated 使用 `getShared` 代替
152
+ */
153
+ get shared(): shareItems;
154
+ getShared<K extends keyof shareItems>(key: K): shareItems[K];
155
+ getStat<K extends keyof statItems>(key: K): Stats<K>;
156
+ getMost<K extends keyof statItems>(key: K): {
157
+ val: Partial<Pick<UniDMTools.UniDMObj, "SOID" | "mode" | "fontsize" | "color" | "senderID" | "content" | "weight" | "pool" | "platform">>[K] | undefined;
158
+ count: number;
159
+ };
160
+ /**
161
+ * @deprecated 使用 `getMost` 代替
162
+ */
163
+ get most(): {
164
+ mode: UniDMTools.Modes;
165
+ fontsize: number;
166
+ color: number;
167
+ senderID: string;
168
+ content: string;
169
+ weight: number;
170
+ pool: UniDMTools.Pools;
171
+ platform: string | undefined;
172
+ };
173
+ static create(options?: Options): UniPool;
174
+ /**
175
+ * 合并弹幕/弹幕库
176
+ */
177
+ assign(dans: UniPool | UniDM | UniDM[]): UniPool;
178
+ /**
179
+ * 按共通属性拆分弹幕库
180
+ */
181
+ split(key: keyof shareItems): UniPool[];
182
+ /**
183
+ * 基于DMID的基本去重功能,用于解决该class下dans为array而非Set的问题
184
+ */
185
+ private dedupe;
186
+ /**
187
+ * 合并一定时间段内的重复弹幕,防止同屏出现过多
188
+ * @param lifetime 查重时间区段,单位秒 (默认为 0,表示不查重)
189
+ */
190
+ merge(lifetime?: number): UniPool;
191
+ minify(): (Partial<UniDMTools.UniDMObj> & Pick<UniDMTools.UniDMObj, "SOID">)[];
192
+ static import(file: unknown, options?: Options,
193
+ /**
194
+ * 加载指定解析模块,为空则全选
195
+ */
196
+ mod?: ('json' | 'str' | 'bin')[]): {
197
+ pool: UniPool;
198
+ fmt: DM_format;
199
+ };
200
+ convert2(format: DM_format, continue_on_error?: boolean): string | Uint8Array<ArrayBuffer> | UniDM[] | (DM_JSON_Dplayer & {
201
+ danuni?: DanUniConvertTip;
202
+ }) | (DM_JSON_Artplayer & {
203
+ danuni?: DanUniConvertTip;
204
+ }) | (DM_JSON_DDPlay & {
205
+ danuni?: DanUniConvertTip;
206
+ });
207
+ static fromPb(bin: Uint8Array | ArrayBuffer, options?: Options): UniPool;
208
+ /**
209
+ * 转为 protobuf 二进制
210
+ */
211
+ toPb(): Uint8Array<ArrayBuffer>;
212
+ static fromBiliXML(xml: string, options?: Options): UniPool;
213
+ toBiliXML(options?: {
214
+ /**
215
+ * 当SOID非来源bili时,若此处指定则使用该值为cid,否则使用SOID
216
+ */
217
+ cid?: bigint;
218
+ /**
219
+ * 当仅含有来自bili的弹幕时,启用将保持发送者标识不含`@`
220
+ * @description
221
+ * bili的弹幕含midHash(crc),不启用该处使用senderID填充,启用则去除`@bili`部分,提高兼容性
222
+ */
223
+ avoidSenderIDWithAt?: boolean;
224
+ }): string;
225
+ static fromBiliGrpc(bin: Uint8Array | ArrayBuffer, options?: Options): UniPool;
226
+ /**
227
+ * @param bin 符合`DmWebViewReplySchema`(bili视频meta)的protobuf二进制
228
+ */
229
+ static fromBiliCommandGrpc(bin: Uint8Array | ArrayBuffer, options?: Options): UniPool;
230
+ static fromBiliUp(json: DM_JSON_BiliUp, options?: Options): UniPool;
231
+ static fromDplayer(json: DM_JSON_Dplayer & {
232
+ danuni?: DanUniConvertTip;
233
+ }, playerID: string, domain?: string, options?: Options): UniPool;
234
+ toDplayer(): DM_JSON_Dplayer & {
235
+ danuni?: DanUniConvertTip;
236
+ };
237
+ static fromArtplayer(json: DM_JSON_Artplayer & {
238
+ danuni?: DanUniConvertTip;
239
+ }, playerID: string, domain?: string, options?: Options): UniPool;
240
+ toArtplayer(): DM_JSON_Artplayer & {
241
+ danuni?: DanUniConvertTip;
242
+ };
243
+ static fromDDPlay(json: DM_JSON_DDPlay & {
244
+ danuni?: DanUniConvertTip;
245
+ }, episodeId: string, options?: Options): UniPool;
246
+ toDDplay(): DM_JSON_DDPlay & {
247
+ danuni?: DanUniConvertTip;
248
+ };
249
+ static fromASS(ass: string, options?: Options): UniPool;
250
+ /**
251
+ * 转换为ASS字幕格式的弹幕,需播放器支持多行ASS渲染
252
+ */
253
+ toASS(canvasCtx: CanvasCtx, options?: AssGenOptions): string;
254
+ }
255
+ export { platform, UniDM, UniDMTools, UniIDTools, type DM_JSON_BiliCommandGrpc, };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import { UniPool } from '../..';
2
+ export declare function to_bili_deduped(that: UniPool): UniPool;
3
+ export declare function bili_dedupe(that: UniPool): void;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export * as bili_dedupe from './bili-dedupe';
2
+ export * as stats from './stats';
@@ -0,0 +1,6 @@
1
+ import type { UniDM, UniPool } from '../..';
2
+ /**
3
+ * 从弹幕池中查找出最新的一条弹幕
4
+ * 按照弹幕的创建时间(ctime)排序,返回最新的一条
5
+ */
6
+ export default function getLatestDan(that: UniPool): UniDM | null;
@@ -0,0 +1 @@
1
+ export { default as getLatestDan } from './getLatestDan';
@@ -0,0 +1 @@
1
+ export {};