@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.
- package/dist/browser/157.min.js +30 -0
- package/dist/{index.min.js → browser/17.min.js} +14 -8
- package/dist/browser/898.min.js +10 -0
- package/dist/browser/index.min.js +1 -0
- package/dist/browser/plugins/bili-dedupe.min.js +1 -0
- package/dist/browser/plugins/index.min.js +2 -0
- package/dist/browser/plugins/stats.min.js +1 -0
- package/dist/{src → browser/src}/index.d.ts +4 -4
- package/dist/browser/src/plugins/bili-dedupe/index.d.ts +3 -0
- package/dist/browser/src/plugins/index.d.ts +2 -0
- package/dist/browser/src/plugins/stats/getLatestDan.d.ts +6 -0
- package/dist/browser/src/plugins/stats/index.d.ts +1 -0
- package/dist/browser/src/plugins/stats/index.test.d.ts +1 -0
- package/dist/browser/src/utils/dm-gen.test.d.ts +1 -0
- package/dist/node/157.js +30 -0
- package/dist/{index.js → node/17.js} +2 -2
- package/dist/node/898.js +10 -0
- package/dist/node/index.js +1 -0
- package/dist/node/plugins/bili-dedupe.js +1 -0
- package/dist/node/plugins/index.js +2 -0
- package/dist/node/plugins/stats.js +1 -0
- package/dist/node/src/ass-gen/__tests__/canvas.test.d.ts +1 -0
- package/dist/node/src/ass-gen/__tests__/generate.test.d.ts +1 -0
- package/dist/node/src/ass-gen/ass/create.d.ts +4 -0
- package/dist/node/src/ass-gen/ass/dialogue.d.ts +16 -0
- package/dist/node/src/ass-gen/ass/event.d.ts +2 -0
- package/dist/node/src/ass-gen/ass/info.d.ts +8 -0
- package/dist/node/src/ass-gen/ass/raw.d.ts +14 -0
- package/dist/node/src/ass-gen/ass/style.d.ts +2 -0
- package/dist/node/src/ass-gen/config.d.ts +2 -0
- package/dist/node/src/ass-gen/index.d.ts +30 -0
- package/dist/node/src/ass-gen/types.d.ts +71 -0
- package/dist/node/src/ass-gen/util/color.d.ts +18 -0
- package/dist/node/src/ass-gen/util/danconvert.d.ts +5 -0
- package/dist/node/src/ass-gen/util/index.d.ts +4 -0
- package/dist/node/src/ass-gen/util/lang.d.ts +3 -0
- package/dist/node/src/ass-gen/util/layout.d.ts +4 -0
- package/dist/node/src/index.d.ts +255 -0
- package/dist/node/src/index.test.d.ts +1 -0
- package/dist/node/src/plugins/bili-dedupe/index.d.ts +3 -0
- package/dist/node/src/plugins/bili-dedupe/index.test.d.ts +1 -0
- package/dist/node/src/plugins/index.d.ts +2 -0
- package/dist/node/src/plugins/stats/getLatestDan.d.ts +6 -0
- package/dist/node/src/plugins/stats/index.d.ts +1 -0
- package/dist/node/src/plugins/stats/index.test.d.ts +1 -0
- package/dist/node/src/proto/gen/bili/dm_pb.d.ts +3426 -0
- package/dist/node/src/proto/gen/danuni_pb.d.ts +172 -0
- package/dist/node/src/utils/dm-gen.d.ts +309 -0
- package/dist/node/src/utils/dm-gen.test.d.ts +1 -0
- package/dist/node/src/utils/id-gen.d.ts +50 -0
- package/dist/node/src/utils/platform.d.ts +24 -0
- package/dist/{index.umd.min.js → umd/index.umd.min.js} +76 -67
- package/dist/umd/plugins/bili-dedupe.umd.min.js +25028 -0
- package/dist/umd/plugins/bili-dedupe.umd.min.js.LICENSE.txt +34 -0
- package/dist/umd/plugins/index.umd.min.js +25048 -0
- package/dist/umd/plugins/index.umd.min.js.LICENSE.txt +34 -0
- package/dist/umd/plugins/stats.umd.min.js +39 -0
- package/dist/umd/src/ass-gen/__tests__/canvas.test.d.ts +1 -0
- package/dist/umd/src/ass-gen/__tests__/generate.test.d.ts +1 -0
- package/dist/umd/src/ass-gen/ass/create.d.ts +4 -0
- package/dist/umd/src/ass-gen/ass/dialogue.d.ts +16 -0
- package/dist/umd/src/ass-gen/ass/event.d.ts +2 -0
- package/dist/umd/src/ass-gen/ass/info.d.ts +8 -0
- package/dist/umd/src/ass-gen/ass/raw.d.ts +14 -0
- package/dist/umd/src/ass-gen/ass/style.d.ts +2 -0
- package/dist/umd/src/ass-gen/config.d.ts +2 -0
- package/dist/umd/src/ass-gen/index.d.ts +30 -0
- package/dist/umd/src/ass-gen/types.d.ts +71 -0
- package/dist/umd/src/ass-gen/util/color.d.ts +18 -0
- package/dist/umd/src/ass-gen/util/danconvert.d.ts +5 -0
- package/dist/umd/src/ass-gen/util/index.d.ts +4 -0
- package/dist/umd/src/ass-gen/util/lang.d.ts +3 -0
- package/dist/umd/src/ass-gen/util/layout.d.ts +4 -0
- package/dist/umd/src/index.d.ts +255 -0
- package/dist/umd/src/index.test.d.ts +1 -0
- package/dist/umd/src/plugins/bili-dedupe/index.d.ts +3 -0
- package/dist/umd/src/plugins/bili-dedupe/index.test.d.ts +1 -0
- package/dist/umd/src/plugins/index.d.ts +2 -0
- package/dist/umd/src/plugins/stats/getLatestDan.d.ts +6 -0
- package/dist/umd/src/plugins/stats/index.d.ts +1 -0
- package/dist/umd/src/plugins/stats/index.test.d.ts +1 -0
- package/dist/umd/src/proto/gen/bili/dm_pb.d.ts +3426 -0
- package/dist/umd/src/proto/gen/danuni_pb.d.ts +172 -0
- package/dist/umd/src/utils/dm-gen.d.ts +309 -0
- package/dist/umd/src/utils/dm-gen.test.d.ts +1 -0
- package/dist/umd/src/utils/id-gen.d.ts +50 -0
- package/dist/umd/src/utils/platform.d.ts +24 -0
- package/package.json +8 -8
- package/plugins/package.json +6 -0
- package/rslib.config.ts +11 -0
- package/src/index.ts +8 -4
- package/src/plugins/bili-dedupe/index.test.ts +43 -0
- package/src/plugins/bili-dedupe/index.ts +29 -0
- package/src/plugins/index.ts +2 -0
- package/src/plugins/stats/getLatestDan.ts +13 -0
- package/src/plugins/stats/index.test.ts +39 -0
- package/src/plugins/stats/index.ts +1 -0
- package/src/proto/gen/bili/dm_pb.ts +1 -1
- package/src/proto/gen/danuni_pb.ts +1 -1
- /package/dist/{index.min.js.LICENSE.txt → browser/17.min.js.LICENSE.txt} +0 -0
- /package/dist/{rslib-runtime.min.js → browser/rslib-runtime.min.js} +0 -0
- /package/dist/{src → browser/src}/ass-gen/__tests__/canvas.test.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/__tests__/generate.test.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/ass/create.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/ass/dialogue.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/ass/event.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/ass/info.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/ass/raw.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/ass/style.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/config.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/index.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/types.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/util/color.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/util/danconvert.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/util/index.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/util/lang.d.ts +0 -0
- /package/dist/{src → browser/src}/ass-gen/util/layout.d.ts +0 -0
- /package/dist/{src → browser/src}/index.test.d.ts +0 -0
- /package/dist/{src/utils/dm-gen.test.d.ts → browser/src/plugins/bili-dedupe/index.test.d.ts} +0 -0
- /package/dist/{src → browser/src}/proto/gen/bili/dm_pb.d.ts +0 -0
- /package/dist/{src → browser/src}/proto/gen/danuni_pb.d.ts +0 -0
- /package/dist/{src → browser/src}/utils/dm-gen.d.ts +0 -0
- /package/dist/{src → browser/src}/utils/id-gen.d.ts +0 -0
- /package/dist/{src → browser/src}/utils/platform.d.ts +0 -0
- /package/dist/{rslib-runtime.js → node/rslib-runtime.js} +0 -0
- /package/dist/{index.umd.min.js.LICENSE.txt → umd/index.umd.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//基于以下注释,根据vitest生成测试用例
|
|
2
|
+
import { describe, expect, it } from 'vitest'
|
|
3
|
+
|
|
4
|
+
import { bili_dedupe, to_bili_deduped } from '.'
|
|
5
|
+
import { UniPool } from '../..'
|
|
6
|
+
|
|
7
|
+
const xml = `<i>
|
|
8
|
+
<chatserver>chat.bilibili.com</chatserver>
|
|
9
|
+
<chatid>1156756312</chatid>
|
|
10
|
+
<mission>0</mission>
|
|
11
|
+
<maxlimit>2947</maxlimit>
|
|
12
|
+
<state>0</state>
|
|
13
|
+
<real_name>0</real_name>
|
|
14
|
+
<source>k-v</source>
|
|
15
|
+
<d p="13.213,1,25,16777215,1686314041,3,ff41173d,1335658005672492032">喜欢</d>
|
|
16
|
+
<d p="13.213,1,25,16777215,1686590010,0,296b35b5,1337972999512832512">来了 哈哈~~</d>
|
|
17
|
+
<d p="13.246,1,25,16777215,1686276875,0,5664cfc4,1335346233459549696">就是</d>
|
|
18
|
+
<d p="13.266,1,25,16777215,1686283375,0,c7e6646f,1335400761013670912">什么鬼?</d>
|
|
19
|
+
<d p="13.284,1,25,16777215,1686291338,0,38662881,1335517923728804864">哇哦</d>
|
|
20
|
+
<d p="13.306,1,25,16777215,1686268410,0,4c01de10,1335275224983600896">试试</d>
|
|
21
|
+
<d p="13.331,1,25,16777215,1686948453,3,56a3c5d5,1340979831550069760">不喜欢</d>
|
|
22
|
+
<d p="13.374,1,25,16777215,1686300770,3,647fe355,1335546672880933888">不喜欢</d>
|
|
23
|
+
<d p="13.376,1,25,16777215,1686297921,0,469d94b8,1335522778300134400">哦豁</d>
|
|
24
|
+
<d p="13.419,1,25,8700107,1686268005,0,be402447,1335271828100244224">太酷啦</d>
|
|
25
|
+
<d p="13.419,1,25,16777215,1686316828,3,7ffb6619,1335681385016736768">喜欢</d>
|
|
26
|
+
<d p="13.459,1,25,16777215,1686299729,0,45834405,1335537942797634048">一般,不好看</d>
|
|
27
|
+
<d p="13.462,1,25,16777215,1686302133,0,3cab672c,1335558106620590080">哈哈哈</d>
|
|
28
|
+
<d p="13.481,1,25,16777215,1686297342,0,ce67fafd,1335517923728804864">?</d>
|
|
29
|
+
<d p="13.499,1,25,16777215,1686301548,3,2848bf1c,1335517923728804864">不喜欢</d>
|
|
30
|
+
</i>`
|
|
31
|
+
|
|
32
|
+
describe('其它', () => {
|
|
33
|
+
const pool = UniPool.fromBiliXML(xml)
|
|
34
|
+
it('B站dmid去重(仅限主站直接获取的弹幕)', () => {
|
|
35
|
+
const ori = pool.dans.length
|
|
36
|
+
expect(ori).toBe(15)
|
|
37
|
+
const n = pool.pipeSync(to_bili_deduped)
|
|
38
|
+
expect(n.dans.length).toBe(13)
|
|
39
|
+
expect(pool.dans.length).toBe(15)
|
|
40
|
+
pool.pipeSync(bili_dedupe)
|
|
41
|
+
expect(pool.dans.length).toBe(13)
|
|
42
|
+
})
|
|
43
|
+
})
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { UniDM } from '../..'
|
|
2
|
+
|
|
3
|
+
import { UniPool } from '../..'
|
|
4
|
+
import { PlatformVideoSource } from '../../utils/platform'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 用于过滤直接从B站api获取到的弹幕中去除dmid重复的弹幕
|
|
8
|
+
*/
|
|
9
|
+
function main(that: UniPool) {
|
|
10
|
+
that.dans.forEach((d) => {
|
|
11
|
+
if (d.platform !== PlatformVideoSource.Bilibili)
|
|
12
|
+
throw new Error('bili-dedupe: 仅支持B站(主站)的弹幕')
|
|
13
|
+
if (!d.extra.bili?.dmid)
|
|
14
|
+
throw new Error('bili-dedupe: 弹幕缺少bili extra dmid字段')
|
|
15
|
+
})
|
|
16
|
+
const map = new Map<bigint, UniDM>()
|
|
17
|
+
that.dans.forEach((d) => map.set(d.extra.bili!.dmid!, d)) // 已由上方的检查保证存在
|
|
18
|
+
return map
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function to_bili_deduped(that: UniPool): UniPool {
|
|
22
|
+
const map = main(that)
|
|
23
|
+
return new UniPool([...map.values()], that.options, that.info)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function bili_dedupe(that: UniPool): void {
|
|
27
|
+
const map = main(that)
|
|
28
|
+
that.dans = [...map.values()]
|
|
29
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { UniDM, UniPool } from '../..'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 从弹幕池中查找出最新的一条弹幕
|
|
5
|
+
* 按照弹幕的创建时间(ctime)排序,返回最新的一条
|
|
6
|
+
*/
|
|
7
|
+
export default function getLatestDan(that: UniPool): UniDM | null {
|
|
8
|
+
return that.dans.length === 0
|
|
9
|
+
? null
|
|
10
|
+
: that.dans.reduce((latest, current) =>
|
|
11
|
+
current.ctime > latest.ctime ? current : latest,
|
|
12
|
+
)
|
|
13
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import { UniPool } from '../..'
|
|
4
|
+
import getLatestDan from './getLatestDan'
|
|
5
|
+
|
|
6
|
+
const xml = `<i>
|
|
7
|
+
<chatserver>chat.bilibili.com</chatserver>
|
|
8
|
+
<chatid>1156756312</chatid>
|
|
9
|
+
<mission>0</mission>
|
|
10
|
+
<maxlimit>2947</maxlimit>
|
|
11
|
+
<state>0</state>
|
|
12
|
+
<real_name>0</real_name>
|
|
13
|
+
<source>k-v</source>
|
|
14
|
+
<d p="13.213,1,25,16777215,1686314041,3,ff41173d,1335658005672492032">喜欢</d>
|
|
15
|
+
<d p="13.213,1,25,16777215,1686590010,0,296b35b5,1337972999512832512">来了 哈哈~~</d>
|
|
16
|
+
<d p="13.246,1,25,16777215,1686276875,0,5664cfc4,1335346233459549696">就是</d>
|
|
17
|
+
<d p="13.266,1,25,16777215,1686283375,0,c7e6646f,1335400761013670912">什么鬼?</d>
|
|
18
|
+
<d p="13.284,1,25,16777215,1686291338,0,38662881,1335467554877267456">哇哦</d>
|
|
19
|
+
<d p="13.306,1,25,16777215,1686268410,0,4c01de10,1335275224983600896">试试</d>
|
|
20
|
+
<d p="13.331,1,25,16777215,1686948453,3,56a3c5d5,1340979831550069760">不喜欢</d>
|
|
21
|
+
<d p="13.374,1,25,16777215,1686300770,3,647fe355,1335546672880933888">不喜欢</d>
|
|
22
|
+
<d p="13.376,1,25,16777215,1686297921,0,469d94b8,1335522778300134400">哦豁</d>
|
|
23
|
+
<d p="13.419,1,25,8700107,1686268005,0,be402447,1335271828100244224">太酷啦</d>
|
|
24
|
+
<d p="13.419,1,25,16777215,1686316828,3,7ffb6619,1335681385016736768">喜欢</d>
|
|
25
|
+
<d p="13.459,1,25,16777215,1686299729,0,45834405,1335537942797634048">一般,不好看</d>
|
|
26
|
+
<d p="13.462,1,25,16777215,1686302133,0,3cab672c,1335558106620590080">哈哈哈</d>
|
|
27
|
+
<d p="13.481,1,25,16777215,1686297342,0,ce67fafd,1335517923728804864">?</d>
|
|
28
|
+
<d p="13.499,1,25,16777215,1686301548,3,2848bf1c,1335553202649003264">不喜欢</d>
|
|
29
|
+
</i>`
|
|
30
|
+
|
|
31
|
+
describe('统计', () => {
|
|
32
|
+
it('获取最新的一条弹幕', () => {
|
|
33
|
+
const pool = UniPool.fromBiliXML(xml)
|
|
34
|
+
const latest = pool.pipeSync(getLatestDan)
|
|
35
|
+
expect(latest).not.toBeNull()
|
|
36
|
+
expect(latest?.content).toBe('不喜欢')
|
|
37
|
+
expect(latest?.ctime).toStrictEqual(new Date(1686948453 * 1000))
|
|
38
|
+
})
|
|
39
|
+
})
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as getLatestDan } from './getLatestDan'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/{src/utils/dm-gen.test.d.ts → browser/src/plugins/bili-dedupe/index.test.d.ts}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|