Sign in

    dan-any-mbt

    MoonBit port of the dan-any danmaku conversion library

    Download zip
    Author
    Version
    0.2.0
    License
    LGPL-3.0-or-later
    Last updated
    2 months ago
    Downloads
    14

    #dan-any-mbt

    dan-any-mbt 是 @dan-uni/dan-any 的 MoonBit 移植项目,面向跨平台弹幕导入、统一处理和导出。

    当前阶段提供纯内存核心、完整公开纯格式适配器、插件协议、基础插件和 Morm/SQLite native 持久化后端。XMLParser、Moonproto 和 mooncry 已接入;DanUni protobuf、命令弹幕、其他数据库后端和结构化平台扩展字段仍未迁移。

    适配器状态:DanUni JSON、Bilibili XML、Artplayer、DPlayer、DanDanPlay、Vod 和 Baha 支持导入导出;Bilibili UP、MGTV、Tencent、Youku 和 iQIYI XML 按参考库能力提供导入,其中 iQIYI 保持 import-only。

    #使用示例

    下面的代码创建内存数据库,将 DanUni JSON 导入 chunk,再导出为 JSON:

    ///|
    import {
    "rinnein/dan-any-mbt/core",
    "rinnein/dan-any-mbt/adapters",
    }

    ///|
    fn example() raise @adapters.AdapterError {
    let db = @core.new_db().init()
    let chunk = db.make_chunk()
    let items = @adapters.parse_danuni_json(
    "[{\"DMID\":\"demo\",\"content\":\"hello MoonBit\"}]",
    )
    chunk.upsert(items)
    @adapters.export_danuni_json(chunk.danmakus())
    }

    普通 Bilibili XML 可通过 parse_bili_xml 导入,并用 export_bili_xml 导出。 Bilibili mobile protobuf 段响应可通过 parse_bili_protobuf(Bytes) 导入。 DanUni JSON 和 Bilibili XML 之外的格式也使用对应的 parse_* 与 adapter 入口;所有解析错误通过 AdapterError 返回。

    Morm 后端位于 storage/morm,使用 MormDB::open、init、save、load 和 restore 持久化 DBSnapshot。它是 native-only;运行测试前执行 node scripts/prepare-morm-0.4.1.mjs。 插件组合可通过 @plugins.count、@plugins.merge 和 @plugins.heatmap 使用。

    #开发

    moon test moon check --target all moon build cmd/main --target native moon build cmd/main --target wasm moon run cmd/main

    详细迁移流程见 docs/migration-guide.md,项目范围见 docs/migration-matrix.md。参考 fixture 使用 bun scripts/generate-reference-fixtures.mjs 生成。

    #来源与许可证

    本项目移植并参考 @dan-uni/dan-any,原项目地址为 https://github.com/ani-uni/dan-any,原项目采用 LGPL-3.0-or-later。 本项目也采用 LGPL-3.0-or-later,并保留移植范围及未支持功能说明。

    version

    fn version() -> String

    Source Files