mikack 库的 Dart 绑定和包装。
本项目是 mikack 生态的一部分,是官方实现的下游绑定,主要用于 Flutter 应用。
本项目是一个规范的 Dart package,mikack-ffi 库是唯一 native 依赖(大约 10MB)。通常 BUG 由上游修复,本项目仅更新 API。
添加依赖:
dependencies:
mikack:
git: git@github.com:Hentioe/mikack-dart.git
通常来讲,不推荐直接调用绑定函数,所以本库在原生 API 的基础上进行了一组封装,会有些许风格差异。
首先导入必要的包:
import 'package:mikack/mikack.dart';
// 通常你不需要主动创建任何基本模型,如有必要请导入以下文件
// import 'package:mikack/models.dart' as models;
var platformList = platforms();
首先需要获取标签:
var tagList = tags();
// 假装用户选择了一些标签
var includeTags = // 需包含的标签
var excludeTags = // 需排除的标签
将标签列表作为参数
var filteredPlatforms = findPlatforms(includeTags, excludeTags);
如果不需要指定包含或排除的标签,传递空列表即可。
var platform = // 假装选中了一个平台
var page = // 分配一个页码
var comics = platform.index(page);
var platform = // 假装选中了一个平台
var keywords = // 假装输入了一些关键字
var comics = platform.search(keywords);
var platform = // 假装选中了一个平台
var comic = // 假装选中了一部漫画
platform.fetchChapters(comic);
comic.chapters; // 章节列表已经填充好了
var platform = // 假装选中了一个平台
var chapter = // 假装选中了一个漫画章节
// 创建页面迭代器
var pageIter = platform.createPageIter(chapter); // 传递章节是为了填充更多的元数据
var address = pageIter.next(); // 获取下一页的资源地址
var currentPage = // 假装有个自增的当前页码
if (currentPage < chapter.pageCount) {
pageIter.next(); // 翻页
} else {
// 到底啦
}
大多平台对图片资源进行了一些基本安全措施,例如基于 Referer
头的防盗链。客户端开发者不需要解决资源的下载问题,因为库帮你做了。
获取 HTTP headers 用于下载图片:
var chapter = // 假装选中了一个漫画章节
// 获取下载该章节必要的 HTTP 头数据(Map 结构)
var headers = chapter.pageHeaders;
// 将 headers 附加到链接下载中
// 自行发挥,略
- Dart VM 的 TLS 上下文创建失败
暂时无法解决,需绕开 VM 环境。也就是说无论将本库用于服务端程序还是 Flutter 应用开发,都应该 native 编译。