GithubHelp home page GithubHelp logo

zzzia / easybook Goto Github PK

View Code? Open in Web Editor NEW
319.0 10.0 73.0 2.18 MB

Java/Android多站点小说爬虫库,并发搜索,epub/txt下载,在线书源等,已实现小说app

Java 91.44% Kotlin 8.56%
book read novel xiaoshuo epub

easybook's Introduction

Java/Android小说爬虫工具

使用简单的几行代码,打造你自己的小说开源软件,自定义书源,多站点解析,并发搜索下载。

App体验

QQ交流群:29527219

Android平台

Step 1. Add the JitPack repository to your build file

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

Step 2. Add the dependency

dependencies {
    implementation 'com.github.Zzzia:EasyBook:2.58'
    implementation 'com.squareup.okhttp3:okhttp:4.2.2'
    implementation 'com.google.code.gson:gson:2.8.5'
}

混淆(默认自动加入)

-keep class com.zia.bookdownloader.bean.** { *; }

使用说明:(具体可参照项目内简单示例或我写的小说神器

搜索:(Android会自动切换到主线程)

EasyBook.search("天行")
        .subscribe(new StepSubscriber<List<Book>>() {
            @Override
            public void onFinish(@NonNull List<Book> books) {
                //所有站点小说爬取完后调用这个方法,传入所有站点解析的有序结果
            }

            @Override
            public void onError(@NonNull Exception e) {
                e.printStackTrace();
            }

            @Override
            public void onMessage(@NonNull String message) {
                //一些搜索中的进度消息,错误原因等,可以用toast弹出
            }

            @Override
            public void onProgress(int progress) {
                //搜索进度
            }

            @Override
            public void onPart(@NonNull List<Book> books) {
                //某一个站点的小说搜索结果
            }
        });

加载目录:

EasyBook.getCatalog(book)
        .subscribe(new Subscriber<List<Catalog>>() {
            @Override
            public void onFinish(List<Catalog> catalogs) {
                //加载结果,返回该书籍所有目录
            }
            //...
        });

加载某一章节内容:

EasyBook.getContent(book,catalog)
        .subscribe(new Subscriber<List<String>>() {
            @Override
            public void onFinish(List<String> strings) {
                //返回该章节所有内容,按行保存在集合内,需要自行调整格式
            }
            //...
        });

下载书籍:

EasyBook.download(book)
		.setSavePath("/sdcard/book")//设置保存的路径
		.setThreadCount(150)//设置下载的线程数
		.setType(Type.EPUB)//设置下载格式,如epub或txt
		.subscribe(new Subscriber<File>() {
			@Override
			public void onFinish(File file) {
				//下载完成后的文件
			}
			//...
		});

分段下载:

EasyBook.downloadPart(book, 0, 100)
        .setThreadCount(50)
        .subscribe(new Subscriber<ArrayList<Chapter>>() {
            @Override
            public void onFinish(@NonNull ArrayList<Chapter> chapters) {
                //返回一个Chapter集合,保证不为空且都有contents
            }
            //...
        });

当然也支持同步调用,但不建议使用:

List<Catalog> list = EasyBook.getCatalog(book).getSync();

销毁线程(解决内存泄漏):

Disposable disposable;

void onCreate(){
    disposable = EasyBook.search("天行").subscribe(...);
}

void onDestroy(){
    disposable.dispose();
}

添加自己的站点解析:

教程

//添加一个自己解析的站点类,叫Zhuishushenqi,需要继承Site
SiteCollection.getInstance().addSite(Zhuishushenqi());

解析起点排行榜:

EasyBook.getHottestRank().subscribe();

解析起点分类排行榜:

EasyBook.getRank(rankInfo);

添加json站点解析 json格式如zzzia源 详细说明如XpathSiteRule

val json = getJson()
val rules = Gson().fromJson<List<XpathSiteRule>>(
    json, TypeToken.getParameterized(List::class.java, XpathSiteRule::class.java).type
)
val sites = ArrayList<Site>()
rules.forEach {
      sites.add(CustomXpathSite(it))
}
SiteCollection.getInstance().addSites(sites)
v2.59
将生成的epub指定为utf-8格式

v2.58
修复url merge规则bug
提高自定义书源目录解析速度

v2.57
修复了书源并部分转移至在线书源
修复了一些在线书源的小问题
添加了在线书源制作教程

v2.55
删除/增加了几个书源
修复在线解析规则不能去广告bug
暴露网络接口供自定义实现

v2.50
修复自定义书源问题
删除了dom4j依赖

v2.49
增加了自定义json站点规则,基于xpath

v2.48
增加了更多解析内容,能够解析小说简介了,同时保证了图片等内容的完整性
在调用目录解析后会自动把内容更新在book里

v2.47
完善demo的分段搜索,升级至Androidx
提高了爬虫稳定性

v2.46
支持了分段搜索,以站点为单位陆续返回结果
为所有解析添加了同步方法,但不建议在含有并发的操作中使用
提高了爬虫稳定性

v2.45
更新了分段下载,将并发下载逻辑单独封装,便于使用

v2.44
添加对起点中文网的排行解析,用于书城功能

v2.42
尝试添加热修复版本控制

v2.40
添加EPUB封面,更换为xhtml格式,支持更多阅读软件

Thanks

  • okHttp
  • epublib
  • jsoup

easybook's People

Contributors

zzzia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

easybook's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.