遇见数据集

Nyora Data-Driven Sources

收藏
github2026-08-03 更新2026-08-05 收录
官方服务:

资源简介:

数据驱动的漫画源定义目录,包含1071个具体源的信息,每个源由引擎、域名和配置组成,用于运行时动态加载漫画源。

A data-driven comic source definition directory containing information of 1071 specific sources. Each source consists of an engine, domain name and configuration, and is used for dynamically loading comic sources during runtime.

创建时间:
2026-07-20
原始信息汇总

数据集概述

Nyora — Data-Driven Sources 是 Nyora(一款原生 Kotlin 漫画阅读器)的数据驱动源架构目录,核心目标是将漫画源的实现从“捆绑解析器类代码”转变为“数据而非代码”的模型。


核心概念

  • Source 定义:每个漫画源由三元组 { engine, domain, config } 构成。

    • engine:通用内置渲染引擎标识(如 "madara""mangareader""wpcomics""galleryadults""mangadex" 等),共 34 种内置引擎
    • domain:站点主机名(不含协议,如 hiperdex.com),所有 URL 基于 https://{domain}/… 构建。
    • config:纯数据对象(标量、枚举、短列表、CSS 选择器),其结构由 engine 决定,见 schema/SourceDef.schema.json
  • 引擎为通用模板:每种引擎是针对一类站点(如 Madara 格式的 WordPress 阅读器、MangaThemesia 阅读器、NetTruyen/wpcomics 阅读器、nhentai/galleryadults 阅读器等)编译好的通用模板,在应用中只捆绑一次。每个具体站点(如 AdultWebtoon、HiperDex、SushiScan、NetTruyen 等)仅是一行 JSON 配置,驱动某个内置引擎。1071 个具体源 被归纳为 34 个引擎 加 34 个 JSON 文件(例如约 545 个 Madara 站点和约 259 个 MangaReader 站点各自仅对应一个引擎)。


设计动机:Play Store 合规姿态

  • 发布的 Play Store 版本仅包含 34 个通用引擎(编译好的 Kotlin,知道如何读取 Madara/MangaThemesia/wpcomics 等站点,但不提及任何真实站点名称)。
  • APK 中不内置任何站点域名(无站点主机、slug、标签前缀或封面 URL)。
  • 所有真实源在运行时以数据形式到达,来自用户添加的仓库 URL(如 repo/madara.json)。应用获取 JSON,按 schema 校验,并通过 EngineRegistry 实例化 {engine, domain, config}

硬性约束(通过构建设计而非政策强制):

  • 无 JavaScript:禁止源提供 JS 代码。站点所需的反机器人原语(如 AES 章节保护解密、encodedSrc base64 解码、NetShield/Cloudflare cookie 解决)是内置引擎功能,通过布尔标志切换,仓库永不携带实现代码。
  • 无下载代码:SourceDef 为惰性数据,无 eval、无字节码、无动态类加载;引擎集在构建时固定。
  • 无 APK 扩展:与 Tachiyomi/Mihon 风格的可安装扩展 APK 不同,本架构不安装任何可执行内容,添加仓库只是向表中添加行。

架构组件

数据流repo/*.json(34 个文件,1071 行 SourceDef)→ schema/SourceDef.schema.json 校验 → engine/EngineRegistry.kt(字符串 id → 捆绑引擎工厂)→ 具体引擎(如 MadaraEngine.ktMangaReaderEngine.kt 等)→ Nyora 领域模型(Manga / MangaChapter / MangaPage)。

EngineRegistry:单例工厂,映射仓库提供的 engine 字符串到捆绑的 SourceEngine

  • 使用字符串键而非枚举;共享的 EngineId 枚举仅涵盖两个原始引擎(MADARAMANGAREADER),注册表通过字符串统一解析全部 34 个引擎。
  • 使用 Creator 构造 lambda,避免调用可能抛异常的 engineId getter。
  • 处理 objectclass 工厂的差异。
  • 确保 34 个引擎文件 ⇄ 34 个注册条目 ⇄ 34 个 schema engine 枚举值 一一对应,无重复。

Typed config 与 rawConfig:仅 madaramangareader 有类型化 EngineConfig 及匹配子 schema;其他 32 个引擎从 SourceDef.rawConfig 解析设置。相关规范文档:spec/ENGINE_SPEC_madara.mdspec/ENGINE_SPEC_mangareader.md;提取器脚本 extract_madara.py 从 kotatsu 源代码生成 JSON 行。


扩展覆盖指南

  1. 将标记的长尾覆盖纳入配置:优先通过新增配置项(如 COVERAGE.md 中的 143 行 needsCustomLogic 列表)吸收残留的每源覆盖,而非新增代码。
  2. 新增通用引擎族:流程包括阅读基础解析器 .kt、编写 spec/ENGINE_SPEC_<family>.md、扩展 schema 枚举、构建引擎、注册到 EngineRegistry、编写提取器。优先级见 COVERAGE.md
  3. 处理定制 API 源
    • 若多个站点共享 API 形态,构建小规模专用引擎(仍为通用+数据驱动)。
    • 若站点独有,构建一次性引擎(如 asurascansguyamangago),仍捆绑、无源提供代码。
    • 提取器不会将不支持的源作为 Madara/MangaReader 行输出,避免渲染错误;它们被列为 COVERAGE.md 中的缺口。

内容政策注意事项

  • 将源数据化使 二进制文件中性(仅含引擎,无域名、无成人内容),但中性姿态需刻意维持。
  • 应用不得预置、宣传、策划或默认启用任何特定仓库(尤其成人仓库);用户提供仓库 URL,应用仅作为传输工具。
  • NSFW 源带有 nsfw:true / contentType:"HENTAI",UI 必须通过显式成人开关进行门控,并排除在默认/引导界面之外。
  • 对用户界面不展示引擎名称、解析器内部或“扩展”术语;源仅显示为用户添加的带标题条目。
搜集汇总
数据集介绍
Nyora Data-Driven Sources 数据集图片
构建方式
Nyora数据驱动源体系摒弃了传统的代码捆绑式解析器,将每个漫画网站抽象为纯数据定义,即由引擎、域名与配置三元组构成的数据源。其中,引擎为内置的34种通用阅读器模板,如Madara、MangaReader等,负责解析特定类型的网站结构;域名指明具体站点;配置则依据引擎类型定义相应的数据字典,涵盖标量、枚举、CSS选择器等。所有具体站点,如AdultWebtoon、HiperDex等,均以JSON行形式存储,通过运行时用户添加的仓库文件加载,并经由统一模式验证。该构造方式将1071个具体站点转化为34个引擎与34个JSON文件,实现了从代码到数据的根本性转变。
特点
该数据集的核心特质在于其数据驱动的架构,使得应用二进制保持纯净与中立。引擎为通用模板,不内嵌任何具体站点域名,所有真实源均在运行时以数据形式注入,严禁包含JavaScript或可执行代码,配置文件仅能启用原生功能而无法定义其实现,从而杜绝了远程代码执行。此外,其扩展性极强,新增站点只需扩展配置架构或注册新引擎,无需修改核心代码。对于非主题型API,则定制小型专用引擎,确保所有源均可被一致地处理。这种设计不仅提升了维护效率,更在合规性上具备显著优势,使应用成为名副其实的通用阅读工具。
使用方法
使用时,用户需手动添加仓库URL,该URL指向包含数据源定义的JSON文件,例如repo/madara.json。应用获取并验证这些数据,通过引擎注册表将引擎字符串映射至相应的构建器,进而实例化具体的源引擎。配置项如NetShield开关等,以布尔标志形式在数据中声明,由内置引擎原生处理。对于开发人员,扩展覆盖范围需遵循既定流程:分析目标站点解析器,编写引擎规范,扩展模式枚举,构建引擎类并注册,最后生成提取器产出JSON数据。该流程确保所有新增源均符合数据驱动范式,无需动态加载任何外部代码。
背景与挑战
背景概述
Nyora Data-Driven Sources数据集由Nyora项目团队于近年创建,旨在革新漫画阅读器扩展机制。该项目源自Kotlin原生漫画阅读器Nyora,核心研究问题在于将传统的源代码捆绑式站点解析器(每站点一个编译类)重构为纯数据驱动的源架构,即源由引擎、域名与配置三元组构成。该架构通过34个通用引擎与34个JSON文件支撑1071个具体站点,实现了从代码到数据的范式转换。此数据集对漫画阅读器领域影响深远,它奠定了Play Store合规的中立阅读器基础,使二进制文件仅包含通用引擎而零站点域,所有真实源以运行时数据注入,为内容聚合类应用提供了合法、可扩展的架构范本。
当前挑战
该数据集面临的挑战多维且深刻。在领域问题层面,需在保障应用商店合规性与功能丰富性间寻求平衡,既要实现无JavaScript、无下载代码、无APK扩展的硬性约束,又要维持对反爬机制的兼容,如通过布尔标志启用NetShield/Cloudflare cookie解决等原生引擎特性。在构建过程中,挑战集中于通用引擎的抽象粒度与配置驱动的灵活性,需将大量站点差异(如懒加载图片特性、相对日期词汇、自定义选择器)收敛为配置旋钮而非代码分支,同时为独特的REST/JSON API站点(如westmanga的HMAC-SHA256签名)设计专用引擎,并确保提取器不生成渲染异常的源条目,避免静默部署失效代码。此外,内容政策的中立性维护亦是一大挑战,需杜绝预置、推广或默认启用任何特定仓库,尤其是成人内容,并确保用户界面不暴露引擎名称或扩展术语。
常用场景
经典使用场景
Nyora数据驱动源架构的核心使用场景在于将漫画阅读器的内容源从硬编码的解析器类转变为纯数据配置。该数据集以JSON格式定义了1071个真实站点源,这些源通过34种通用引擎模板(如Madara、MangaReader等)进行渲染,每个源仅由引擎标识、域名和配置对象组成。研究者或开发者可基于此架构快速构建或扩展自己的漫画聚合应用,无需为每个站点编写专属解析代码,只需配置数据即可接入新站点,从而显著降低多源适配的复杂度和维护成本。
衍生相关工作
基于Nyora数据驱动源架构,已衍生出多项相关技术工作。首先,其引擎规范文档(如ENGINE_SPEC_madara.md)详细记录了从Kotatsu中逆向工程各站点解析器的字段分类方法,为后续自动化提取脚本(如extract_madara.py)提供了理论依据。其次,该架构提出的'引擎即模板,源即数据'模式,启发了其他开源项目探索类似的配置化爬虫设计,例如将不同网站的解析逻辑统一为可配置的模板引擎。此外,COVERAGE.md中列出的待支持长尾站点列表,也成为研究社区中关于如何平衡通用性与特殊性的典型分析案例,推动了数据驱动爬虫工具链的进一步优化。
数据集最近研究
最新研究方向
当前前沿研究聚焦于将漫画阅读器来源从硬编码解析器迁移至纯数据驱动的架构体系,通过通用引擎与运行时JSON配置的分离,实现二进制中立性。Nyora项目展示了如何将1071个具体网站抽象为34个模板引擎,并借助严格的模式验证与无反射机制,达成代码零注入与动态扩展的平衡。这一方向在规避平台审核风险的同时,催生了可泛化的数据驱动内容适配方法论,为跨站内容聚合工具提供了兼顾安全性与灵活性的设计范式,其影响延伸至数字内容分发的隐私保护与版权合规等议题。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务