ebookdownloader

package module
v1.7.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2022 License: GPL-3.0 Imports: 33 Imported by: 0

README

ebookdownloader

网文下载器

GitHub license

Build Statusrelease_versionDownload Count

Donate on PayPal

godoc

ebookdl 网文下载器,go语言版本

安装方法

go get github.com/sndnvaps/ebookdownloader/cli
go get github.com/sndnvaps/ebookdownloader/qtgui #此项目暂停更新,
go get github.com/sndnvaps/ebookdownloader/http-server #此项目暂停更新
go get github.com/sndnvaps/ebookdownloader/ui

使用方法

.\ebookdownloader.exe --bookid=0_642 --txt #只生成txt文本
.\ebookdownloader.exe --bookid=0_642 --mobi #只生成mobi电子书
.\ebookdownloader.exe --bookid=0_642 --txt --mobi #生成txt 和 mobi
.\ebookdownloader.exe --bookid=0_642 --txt --awz3 #生成txt 和 awz3
.\ebookdownloader.exe --proxy="http://proxyip:proxyport" --bookid=0_642 --mobi #生成mobi电子书,在下载章节的过程中使用 Proxy
.\ebookdownloader.exe --ebhost=xsbiquge.com --bookid=0_642 --txt --mobi #使用xsbiquge.com做为下载源,生成txt 和 mobi
.\ebookdownloader.exe --ebhost=999xs.com --bookid=0_642 --txt --mobi #使用999xs.com做为下载源,生成txt 和 mobi
 .\ebookdownloader.exe --ebhost=999xs.com --bookid=0_642 --txt --mobi --meta #使用999xs.com做为下载源,生成txt,mobi电子书,并生成meta.json文件于小说目录当中
.\ebookdownloader.exe --ebhost=23us.la --bookid=127064 --pv #新功能,用于打印小说的分卷信息,此时不下载小说任何内容
.\ebookdownloader.exe --bookid=0_0642 --json #生成json格式的小说数据
.\ebookdownloader.exe conv --json=".\outputs\我是谁-sndnvaps\我是谁-sndnvaps.json" --txt --mobi #新功能,转换json格式到txt,mobi格式
.\ebookdownloader.exe --help #显示帮助信息

依赖程序

1. kindlegen.exe 支持windows平台
2. kindlegenLinux 支持Linux 平台
3. kindlegenMac 支持 Mac平台
4. cli 项目只需要当前目录存在 ./tools/kindlegen(根据不同的平台,名字有所变化)即可运行
   4.1 Linux平台,需要将tools/kindlegenLinux 复制到/usr/bin/目录里面
5. qemu-i386-static-armhf 支持在linux arm平台上运行 kindlegenLinux
6. qemu-i386-static-arm64 支持在linux arm64平台上运行 kindlegenLinux
7. http-server 项目依赖:
      github.com/ajvb/kala 项目,用于任务控制和管理
      kala需要与ebookdownloader_cli运行在同一个目录里面
8. qtgui项目信赖
      goqt
      qt
      gcc
      https://github.com/akavel/rsrc ,用于生成windows系统中的图标
9. chromedp 项目,用于捉取小说封面
       需要安装chrome浏览器,做支持
10. ui项目依赖项目
      github.com/andlabs/ui, 用于生成界面
      gtk-3.0,用于构建ui界面

生成AppImage应用程序,主要是Linux系统支持

     1. 需要安装appimagetool程序支持(https://github.com/AppImage/AppImageKit/releases)
     2. 生成的Ebook_Downloader-x86_64.AppImage应用程序,无法在程序运行目录查找到kindlegenLinux,所以需要把tools/kindlegenLinux程序,复制到/usr/bin/目录下面。

后端服务器 API接口

主要目的是部署在vps上面,就可以方便随时下载小说了

API接口文档 ebookdownloader_http_api

配置文件ebdl_conf.ini

懒人模式,直接下载编译好的程序

墙里面使用gitee

gitee ebookdownloader release page

墙外面使用github

github ebookdownloader release page


❤️ 赞助

如果你觉得EbookDownloader项目对你有帮助。你可以给我来一杯啤酒!

PayPal打赏 微信打赏Pay
paypal.me/sndnvaps Donate_WeChatPay.jpg

支持的小说网站

网站名 网址 是否支持 备注
笔趣阁 https://www.xsbiquge.com/ × 网站改名
笔趣阁 https://www.vbiquge.com/ × 网站改名
笔趣阁 https://www.xxbiquge.net/ × 网站改名
笔趣阁 https://www.biqufan.com/
笔趣阁 https://www.biduo.cc/ × 网站改名
笔趣阁 https://www.biduoxs.com/
笔趣阁 https://www.biquwu.cc/ 网站的速度比较慢
笔趣阁 http://www.biqugse.com/
笔趣阁 https://www.biquge.so/ 准备添加支持
西西文学网 http://www.xixiwx.com/
999小说 https://www.999xs.com/ × 网站改名
999小说 https://www.899zw.net/ × 网站改名
999小说 https://www.6zw.net/
顶点小说网 https://www.booktxt.net/
顶点小说网 https://www.23us.la × 因为网站原因无法打开,暂定无法使用

更新日志

CHANGELOG


To Do List

 [√]  1. 添加生成封面功能
 [√]  2. 添加不同平台的接口实现
 [√]  3. 添加生成二级目录的方法(已经添加相应的实例)
 [√]  4. 添加界面版本gui
 [√]  5. 添加http-server,做为后端
 [√]  6. 添加linux arm,arm64平台支持
 [√]  7. 需要限制并发数量,因为vps性能有限 -> 目前限制的并发数量为(300+49)*2 = 698
 [√]  8. 使用boltdb记录小说数据(小说下载网站,bookid,uuid->NewV5格式,cover.jpg,mobi,azw3,txt,epub等位置及md5验证信息)
 [√]  9. 添加https://www.biduo.cc/ 小说网站支持
 [√]  10. 添加 https://www.booktxt.net/ 顶点小说网支持
 [√]  11. 添加 https://www.biquwu.cc/ 笔趣阁小说网支持
 [√]  12. 添加处理 作者,书名中包含的特殊字符串的方法
 [√]  13. 使用goqt对界面进行重写
 [ ]  14. 更新顶点小说 23us.la地址为23us.lol ->并重写其爬虫规则
 [√]  15. 打包需要用到的资源到程序中,减少目录数量,kindlegen程序因为技术和安全性考虑,暂不封装到go程序中
 [√]  16. 减少程序运行时的依赖,尝试使用 github.com/andlabs/ui来构建gui界面

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CreateMD5 added in v1.7.4

func CreateMD5(filename string) (md5Str string, err error)

CreateMD5 根据filename生成md5信息

func GenerateCover added in v1.3.0

func GenerateCover(this BookInfo)

GenerateCover 生成封面 cover.jpg

func KindlegenCmd added in v1.2.0

func KindlegenCmd(args ...string) *exec.Cmd

KindlegenCmd 执行外部kindlegen命令

func ReadAllString

func ReadAllString(filename string) string

ReadAllString 读取文件内容,并存入string,最终返回

func WriteFile

func WriteFile(filename string, data []byte) error

WriteFile 写入文件操作

Types

type Boltdb added in v1.7.6

type Boltdb struct {
	// contains filtered or unexported fields
}

Boltdb 定义boltdb的接口

func InitBoltDB added in v1.7.6

func InitBoltDB(dbname string) (Boltdb, error)

InitBoltDB 初始化boltdb数据库,根据dbname

func (*Boltdb) Close added in v1.7.6

func (this *Boltdb) Close() error

Close 关闭boltdb数据库

func (*Boltdb) Drop added in v1.7.6

func (this *Boltdb) Drop() error

Drop 删除boltdb中的bucket;不要轻易使用,除非是想删除数据库中所有数据

func (Boltdb) FindAll added in v1.7.6

func (this Boltdb) FindAll() ([]Meta, error)

FindAll 查询boltdb中所有的数据

func (Boltdb) FindAllByAuthor added in v1.7.6

func (this Boltdb) FindAllByAuthor(author string) ([]Meta, error)

FindAllByAuthor 查询当前作者author在blotdb中所有的作品

func (Boltdb) FindOneByAuthor added in v1.7.6

func (this Boltdb) FindOneByAuthor(author string) (Meta, error)

FindOneByAuthor 通过author来查询boltdb中的单一条数据

func (Boltdb) FindOneByBookName added in v1.7.6

func (this Boltdb) FindOneByBookName(bookname string) (Meta, error)

FindOneByName 通过Bookname来查询boltdb中的单一条数据

func (Boltdb) FindOneByFieldName added in v1.7.6

func (this Boltdb) FindOneByFieldName(fieldname string, val string) (Meta, error)

FindOneByFieldName 根据fieldname中定义的项目,进行查询,只返回一条结果

func (Boltdb) FindOneByMD5 added in v1.7.7

func (this Boltdb) FindOneByMD5(md5info string) (Meta, error)

FindOneByMD5 通过电子书的md5信息来查询boltdb中的单一条数据

func (Boltdb) FindOneByUUID added in v1.7.6

func (this Boltdb) FindOneByUUID(uuid string) (Meta, error)

FindOneByUUID 通过uuid查询boltdb中的单一条数据

func (*Boltdb) Save added in v1.7.6

func (this *Boltdb) Save(metainfo Meta) error

Save 保存metainfo数据到boltdb数据库中

func (*Boltdb) Update added in v1.7.6

func (this *Boltdb) Update(metainfo Meta) error

Update 更新uuid指定的数据

func (*Boltdb) UpdateAzw3Info added in v1.7.6

func (this *Boltdb) UpdateAzw3Info(uuid string, coverpath string, azw3path string, azw3md5 string) error

UpdateAzw3Info 更新boltdb中uuid指定的azw3数据

func (*Boltdb) UpdateEpubInfo added in v1.7.6

func (this *Boltdb) UpdateEpubInfo(uuid string, coverpath string, epubpath string, epubmd5 string) error

UpdateEpubInfo 更新boltdb中uuid指定的epub数据

func (*Boltdb) UpdateMobiInfo added in v1.7.6

func (this *Boltdb) UpdateMobiInfo(uuid string, coverpath string, mobipath string, mobimd5 string) error

UpdateMobiInfo 更新boltdb中uuid指定的mobi数据

func (*Boltdb) UpdateTXTInfo added in v1.7.6

func (this *Boltdb) UpdateTXTInfo(uuid string, txtpath string, txtmd5 string) error

UpdateTXTInfo 更新boltdb中uuid指定的txt数据

type BookInfo

type BookInfo struct {
	EBHost      string    `json:"ebook_host"`        //下载小说的网站
	EBookID     string    `json:"ebook_id"`          //对应小说网站的bookid
	BookISBN    string    `json:"isbn"`              //生成一个isbn码
	BookUUID    string    `json:"uuid"`              //生成一个uuid码,准备用于boltdb
	Name        string    `json:"bookname"`          //小说名字
	Author      string    `json:"author"`            //小说作者
	Description string    `json:"novel_description"` //小说简介
	CoverURL    string    `json:"cover_url"`         //小说封面图片地址
	IsMobi      bool      `json:"is_mobi"`           //当为true的时候生成mobi
	IsAzw3      bool      `json:"is_azw3"`           //当为true的时候生成azw3,
	HasVolume   bool      `json:"has_volume"`        //是否有小说分卷,默认为false;当设置为true的时候,Volumes里面需要包含分卷信息
	Volumes     []Volume  `json:"volumes"`           //小说分卷信息,一般不设置
	Chapters    []Chapter `json:"chapters"`          //小说章节信息
}

BookInfo 小说信息

func LoadBookJSONData added in v1.7.2

func LoadBookJSONData(filename string) (BookInfo, error)

LoadBookJSONData 从文件中读取BookInfo信息,并返回

func (*BookInfo) ChangeVolumeState added in v1.6.0

func (this *BookInfo) ChangeVolumeState(hasVolume bool)

ChangeVolumeState 设置 是否包含分卷信息

func (BookInfo) DownloadCoverImage added in v1.7.7

func (this BookInfo) DownloadCoverImage(coverURL string) error

DownloadCoverImage 下载小说的封面图片

func (BookInfo) GenerateEPUB added in v1.7.3

func (this BookInfo) GenerateEPUB() error

GenerateEPUB 生成ebpub小说

func (*BookInfo) GenerateISBN added in v1.7.4

func (this *BookInfo) GenerateISBN()

GenerateISBN GenerateISBN

func (BookInfo) GenerateJSON added in v1.7.2

func (this BookInfo) GenerateJSON() error

GenerateJSON 生成json格式的数据

func (BookInfo) GenerateMobi

func (this BookInfo) GenerateMobi()

GenerateMobi 生成mobi格式电子书

func (BookInfo) GenerateTxt

func (this BookInfo) GenerateTxt()

GenerateTxt 生成txt电子书

func (*BookInfo) GenerateUUID added in v1.7.4

func (this *BookInfo) GenerateUUID()

GenerateUUID 根据小说的作者名和小说名 生成uuid码,使用UUID_V5格式

func (BookInfo) GetCover added in v1.7.7

func (this BookInfo) GetCover() error

GetCover 主要用于从 起点中文网上提取小说的封面

func (BookInfo) ISBN added in v1.7.4

func (this BookInfo) ISBN() string

ISBN 返回小说的ISBN码

func (BookInfo) PrintVolumeInfo added in v1.6.0

func (this BookInfo) PrintVolumeInfo()

PrintVolumeInfo 用于打印 小说分卷信息

func (*BookInfo) SetISBN added in v1.7.4

func (this *BookInfo) SetISBN(value string)

SetISBN 对小说的ISBN码进行设置

func (*BookInfo) SetKindleEbookType added in v1.5.0

func (this *BookInfo) SetKindleEbookType(isMobi bool, isAzw3 bool)

SetKindleEbookType 现在设置,mobi和awz3格式不能同时设置为true

func (BookInfo) Split added in v1.7.1

func (this BookInfo) Split() []BookInfo

Split BookInfo里面的Chapter,以300章为一组进行分割 当少于300章的里面,全部分为一卷;当有1000卷的时候,分为4卷; 当分割有n个卷的时候,剩下的章节大于50章,重开一个分卷,当少于50的时候,分割到最后一个分卷里面

func (BookInfo) UUID added in v1.7.4

func (this BookInfo) UUID() string

UUID 返回小说对应的uuid信息

func (BookInfo) VolumeState added in v1.6.0

func (this BookInfo) VolumeState() bool

VolumeState 返回 HasVolume的状态,true,false

type Chapter

type Chapter struct {
	Title   string `json:"title"`
	Content string `json:"content"`
	Link    string `json:"chapter_url_link"`
}

Chapter 定义小说章节信息

type EBookDLInterface added in v1.4.0

type EBookDLInterface interface {
	GetBookInfo(ctx context.Context, bookid string, proxy string) BookInfo //获取小说的所有信息,包含小说名,作者,简介等信息
	GetBookBriefInfo(bookid string, proxy string) BookInfo                 //获取小说最基本的信息,不包含章节信息
	DownloaderChapter(ResultChan chan chan Chapter, pc ProxyChapter, wg *sync.WaitGroup)
	DownloadChapters(Bi BookInfo, proxy string) BookInfo
}

EBookDLInterface 小说下载器接口interface

type LatestReleasesInfo added in v1.7.3

type LatestReleasesInfo struct {
	URL string `json:"html_url"`
	Tag string `json:"tag_name"`
}

LatestReleasesInfo 获取最新的Releases信息

func UpdateCheck added in v1.7.3

func UpdateCheck() (obj LatestReleasesInfo, err error)

UpdateCheck 检查更新

func (LatestReleasesInfo) Compare added in v1.7.3

func (ri LatestReleasesInfo) Compare(CurVersion string) string

Compare 对版本进行对比

func (LatestReleasesInfo) String added in v1.7.3

func (ri LatestReleasesInfo) String() string

String ReleaseInfo String()

type Meta added in v1.7.1

type Meta struct {
	Ebhost      string `json:"ebhost" storm:"index"`
	Bookid      string `json:"bookid"`
	BookName    string `json:"bookname" storm:"index"`
	BookISBN    string `json:"isbn" storm:"index"`
	BookUUID    string `json:"uuid" storm:"id,index,unique"`
	Author      string `json:"author" storm:"index"`
	CoverURL    string `json:"cover_url"`
	Description string `json:"description"`
	TxtURLPath  string `json:"txt_url_path"`
	MobiURLPath string `json:"mobi_url_path"`
	EPUBURLPath string `json:"epub_url_path"`
	AZW3URLPath string `json:"azw3_url_path"`
	TxtMD5      string `json:"txt_md5_info"`
	MobiMD5     string `json:"mobi_md5_info"`
	EPUBMD5     string `json:"epub_md5_info"`
	AZW3MD5     string `json:"azw3_md5_info"`
}

Meta 小说的metainfo

func GetMetaData added in v1.7.1

func GetMetaData(filename string) (Meta, error)

GetMetaData 从文件中读取meta信息,并返回

func (Meta) WriteFile added in v1.7.1

func (this Meta) WriteFile(filename string) error

WriteFile 把json数据写入 filename定义的文件中

type ProxyChapter added in v1.3.0

type ProxyChapter struct {
	Proxy string
	C     Chapter
}

type Volume added in v1.6.0

type Volume struct {
	PrevChapterID int     `json:"prev_chapter_id"`
	PrevChapter   Chapter `json:"prev_chapter"`
	CurrentVolume string  `json:"current_volume_name"`
	NextChapterID int     `json:"next_chapter_id"`
	NextChapter   Chapter `json:"next_chapter"`
}

Volume 定义小说分卷信息

Directories

Path Synopsis
Code generated for package fonts by go-bindata DO NOT EDIT.
Code generated for package fonts by go-bindata DO NOT EDIT.
Package main Code generated by go-bindata.
Package main Code generated by go-bindata.
Code generated for package tpls by go-bindata DO NOT EDIT.
Code generated for package tpls by go-bindata DO NOT EDIT.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL