核心概念:ComicGlass 插件系统

要明白 ComicGlass 是如何工作的,它本身不直接抓取任何网站的内容,它的核心是一个“阅读器引擎”,而“从哪里获取漫画”这个功能是由“插件”来完成的。

comicglass增加网站
(图片来源网络,侵删)
  • 插件:本质上是一小段代码,它知道如何与特定的漫画网站进行“沟通”(解析网页、提取漫画列表、获取图片链接等)。
  • 插件类型:ComicGlass 支持两种插件:
    1. 官方插件:由 ComicGlass 开发者维护,通常是一些非常流行且稳定的网站。
    2. 自定义插件:由用户自己创建或从社区获取,用于添加官方未支持的网站。

我们将专注于创建一个自定义插件


第一步:分析您的网站(最重要的一步)

在编写任何代码之前,您必须彻底分析您的网站,这是最关键、最耗时的一步,您需要像一个侦探一样,找出 ComicGlass 需要的所有信息。

请准备好以下信息:

  1. 漫画列表页

    comicglass增加网站
    (图片来源网络,侵删)
    • URL 格式https://your-website.com/comics/https://your-website.com/comics/list
    • 页面结构:这个页面上是如何展示所有漫画的?是每个漫画都在一个 <div class="comic-item"> 里面,还是每个都在一个 <li> 标签里?用浏览器的“检查元素”功能(右键 -> 检查)来查看 HTML 结构。
    • 关键信息:在列表项中,如何找到漫画的和详情页链接可能在 <h3> 标签里,链接可能是 <a href="/comics/detail/123">
  2. 漫画详情页

    • URL 格式:详情页的 URL 有没有规律?https://your-website.com/comics/detail/{comic_id}
    • 章节列表:在详情页上,章节是如何排列的?是在一个 <ul class="chapter-list"> 里吗?每个章节的链接是什么样子的?
    • 关键信息:如何提取章节的和阅读页链接
  3. 漫画阅读页

    • URL 格式:阅读页的 URL 通常包含章节 ID,https://your-website.com/comics/read/{chapter_id}
    • 图片容器:最核心的部分!漫画图片是如何加载的?
      • 它是直接在 <img> 标签的 src 属性里吗?(最简单)
      • 还是在一个 <div class="reader-image"> 里面,通过 JavaScript 动态加载?
      • 图片的 URL 是固定的还是需要拼接的?
    • 关键信息:如何定位到包含漫画图片的那个 HTML 元素?如何从这个元素中提取出图片的真实 URL?

工具推荐

  • 浏览器开发者工具:按 F12 打开,使用“元素”和“网络”标签进行分析。
  • JSON 提取器:有些网站通过 API 返回 JSON 数据,这会让解析变得非常简单,检查网络请求,看看有没有类似 api/comics/list 的请求。

第二步:选择插件格式并编写代码

分析完网站后,就可以开始写代码了,ComicGlass 支持多种插件格式,最推荐使用 JSON 格式,因为它最简单,不需要懂编程。

comicglass增加网站
(图片来源网络,侵删)

使用 JSON 插件(推荐,最简单)

JSON 插件是一个 .json 文件,您只需要按照格式填写您在第一步中分析出的信息即可。

JSON 文件结构示例:

{
  "name": "您的网站名称",
  "version": "1.0",
  "author": "您的名字",
  "description": "一个用于从您的网站获取漫画的插件",
  "baseUrl": "https://your-website.com",
  "comicList": {
    "url": "/comics/",
    "parser": {
      "container": "div.comic-item",
      "title": "h3.title",
      "link": "a"
    }
  },
  "chapterList": {
    "url": "",
    "parser": {
      "container": "ul.chapter-list li",
      "title": "a",
      "link": "a"
    }
  },
  "imageList": {
    "url": "",
    "parser": {
      "container": "div.reader-image img",
      "image": "src"
    }
  }
}

如何填写上面的字段:

  • name, version, author, description: 填写您的基本信息。
  • baseUrl: 您网站的根域名,不带末尾的斜杠。
  • comicList: 定义如何获取漫画列表。
    • url: 漫画列表页的相对路径(相对于 baseUrl)。
    • parser: 定义解析规则。
      • container: 包含单个漫画信息的元素选择器(div.comic-item)。
      • title: 在 container 内部,提取标题的元素选择器(h3.title)。
      • link: 在 container 内部,提取链接的元素选择器(a)。
  • chapterList: 定义如何获取章节列表。
    • url: 通常为空,因为详情页的 URL 已经在 comicList 中获取了,如果章节列表页是独立的,就填写。
    • parser: 和上面类似,定义章节的解析规则。
  • imageList: 定义如何获取漫画图片。
    • url: 通常为空,因为阅读页的 URL 已经在 chapterList 中获取了。
    • parser: 定义图片解析规则。
      • container: 包含图片的元素选择器(div.reader-image img)。
      • image: 从 container 元素中提取图片 URL 的属性名(通常是 src,也可能是 data-srcdata-original)。

选择器语法:这是 CSS 选择器,您可以简单理解为:

  • div:选择 <div>
  • .class-name:选择 class="class-name" 的元素。
  • #id-name:选择 id="id-name" 的元素。
  • div p:选择 <div> 内部的所有 <p>
  • div > a:选择 <div> 的直接子元素 <a>

使用 JavaScript 插件(高级,更灵活)

如果您的网站结构非常复杂,或者需要动态计算、处理反爬虫机制,那么您可能需要使用 JavaScript 插件,这需要您懂一些 JavaScript 知识。

一个 JS 插件通常是一个 .js 文件,它导出一个对象,该对象包含一些函数,如 getComicList, getChapterList, getImageList 等,这些函数接收一个 document 对象(页面的 DOM)作为参数,您可以在函数内使用 document.querySelector() 等方法来手动解析网页。

由于这部分代码量较大且需要编程基础,建议先尝试 JSON 格式,JSON 无法满足需求,再研究 JS 插件。


第三步:安装和测试插件

编写好插件文件(.json.js)后,就可以在 ComicGlass 中加载它了。

  1. 放置插件文件

    • 打开 ComicGlass 的设置。
    • 找到“插件”或“自定义插件”相关选项。
    • 通常会有一个“插件目录”或“文件夹”的路径,将您创建的插件文件(my-website.json)放入这个文件夹中。
  2. 启用插件

    • 重启 ComicGlass。
    • 在插件管理列表中,您应该能看到您刚刚添加的插件,勾选它以启用。
  3. 测试

    • 在 ComicGlass 的主界面,尝试添加一个新漫画源。
    • 选择您创建的插件。
    • 它会自动跳转到您在 baseUrl 中指定的网站。
    • 尝试搜索或浏览漫画列表,看是否能正确加载。
    • 点击进入一部漫画,看章节列表是否能正确加载。
    • 点击进入一个章节,看漫画图片是否能正确显示。

调试技巧

  • 如果加载失败,仔细检查您在 JSON 文件中的选择器是否正确,一个字符的错误都可能导致失败。
  • 重新 ComicGlass 或重新加载插件。
  • 去社区论坛(如 Reddit、GitHub Discussions)寻求帮助,提供您的网站 URL 和插件代码片段。

第四步:分享您的插件(可选)

如果您认为您的