ebookdownloader

package module
v1.7.3 Latest Latest
Warning

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

Go to latest
Published: Mar 1, 2020 License: GPL-3.0 Imports: 21 Imported by: 0

README

ebookdownloader

网文下载器

GitHub license

Build Statusrelease_versionDownload Count

godoc

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

安装方法

go get github.com/sndnvaps/ebookdownloader/cli
go get github.com/sndnvaps/ebookdownloader/gui
go get github.com/sndnvaps/ebookdownloader/http-server

使用方法

.\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/gui 两个项目,都需要在当前项目的根目录运行
5. gui程序,需要依赖 https://github.com/akavel/rsrc ,项目来生成图标
6. qemu-i386-static-armhf 支持在linux arm平台上运行 kindlegenLinux
7. qemu-i386-static-arm64 支持在linux arm64平台上运行 kindlegenLinux
8. http-server 项目依赖:
      github.com/ajvb/kala 项目,用于任务控制和管理
      kala需要与ebookdownloader_cli运行在同一个目录里面

后端服务器 API接口

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

API接口文档 ebookdownloader_http_api

配置文件ebdl_conf.ini

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

墙里面使用gitee

gitee ebookdownloader release page

墙外面使用github

github ebookdownloader release page

更新日志

CHANGELOG


To Do List

 [√]  1. 添加生成封面功能
 [√]  2. 添加不同平台的接口实现
 [√]  3. 添加生成二级目录的方法(已经添加相应的实例)
 [√]  4. 添加界面版本gui
 [√]  5. 添加http-server,做为后端
 [√]  6. 添加linux arm,arm64平台支持
 [√]  7. 需要限制并发数量,因为vps性能有限 -> 目前限制的并发数量为(300+49)*2 = 698

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AsycChapter added in v1.6.0

func AsycChapter(ResultChan chan chan Chapter, chapter chan Chapter)

AsycChapter 同步下载章节的content内容

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 TestContainVolume added in v1.6.0

func TestContainVolume(src string) bool

检测是 第一个 dt标签是否包含 “正文卷”,如果不包含就表示是分卷

func WriteFile

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

WriteFile 写入文件操作

Types

type BookInfo

type BookInfo struct {
	EBHost      string    `json:"ebook_host"` //下载小说的网站
	EBookID     string    `json:"ebook_id"`   //对应小说网站的bookid
	Name        string    `json:"bookname"`
	Author      string    `json:"author"`
	Description string    `json:"novel_description"`
	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) GenerateEPUB added in v1.7.3

func (this BookInfo) GenerateEPUB() error

GenerateEPUB 生成ebpub小说

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) PrintVolumeInfo added in v1.6.0

func (this BookInfo) PrintVolumeInfo()

PrintVolumeInfo 用于打印 小说分卷信息

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) 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(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 Ebook23US added in v1.6.0

type Ebook23US struct {
	URL  string
	Lock *sync.Mutex
}

Ebook23US 顶点小说网 23us.la

func New23US added in v1.6.0

func New23US() Ebook23US

New23US 初始化

func (Ebook23US) DownloadChapters added in v1.6.0

func (this Ebook23US) DownloadChapters(Bi BookInfo, proxy string) BookInfo

DownloadChapters 下载小说章节

func (Ebook23US) DownloaderChapter added in v1.6.0

func (this Ebook23US) DownloaderChapter(ResultChan chan chan Chapter, pc ProxyChapter, wg *sync.WaitGroup)

DownloaderChapter 下载小说章节

func (Ebook23US) GetBookBriefInfo added in v1.7.2

func (this Ebook23US) GetBookBriefInfo(bookid string, proxy string) BookInfo

GetBookBriefInfo 获取小说的信息

func (Ebook23US) GetBookInfo added in v1.6.0

func (this Ebook23US) GetBookInfo(bookid string, proxy string) BookInfo

GetBookInfo 下载小说信息

type Ebook999XS added in v1.4.0

type Ebook999XS struct {
	URL  string
	Lock *sync.Mutex
}

999小说网 999xs.com

func New999XS added in v1.4.0

func New999XS() Ebook999XS

func (Ebook999XS) DownloadChapters added in v1.4.0

func (this Ebook999XS) DownloadChapters(Bi BookInfo, proxy string) BookInfo

func (Ebook999XS) DownloaderChapter added in v1.6.0

func (this Ebook999XS) DownloaderChapter(ResultChan chan chan Chapter, pc ProxyChapter, wg *sync.WaitGroup)

DownloaderChapter 下载小说

func (Ebook999XS) GetBookBriefInfo added in v1.7.2

func (this Ebook999XS) GetBookBriefInfo(bookid string, proxy string) BookInfo

GetBookBriefInfo 获取小说的信息

func (Ebook999XS) GetBookInfo added in v1.4.0

func (this Ebook999XS) GetBookInfo(bookid string, proxy string) BookInfo

type EbookXSBiquge added in v1.4.0

type EbookXSBiquge struct {
	URL  string
	Lock *sync.Mutex
}

EbookXSBiquge xsbiquge.com小说网

func NewXSBiquge added in v1.4.0

func NewXSBiquge() EbookXSBiquge

NewXSBiquge 初始化

func (EbookXSBiquge) DownloadChapters added in v1.4.0

func (this EbookXSBiquge) DownloadChapters(Bi BookInfo, proxy string) BookInfo

DownloadChapters 下载所有章节

func (EbookXSBiquge) DownloaderChapter added in v1.6.0

func (this EbookXSBiquge) DownloaderChapter(ResultChan chan chan Chapter, pc ProxyChapter, wg *sync.WaitGroup)

func DownloaderChapter(ResultChan chan chan Chapter)

func (EbookXSBiquge) GetBookBriefInfo added in v1.7.2

func (this EbookXSBiquge) GetBookBriefInfo(bookid string, proxy string) BookInfo

GetBookBriefInfo 获取小说的信息

func (EbookXSBiquge) GetBookInfo added in v1.4.0

func (this EbookXSBiquge) GetBookInfo(bookid string, proxy string) BookInfo

GetBookInfo 获取小说的信息

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"`
	Bookid      string `json:"bookid"`
	BookName    string `json:"bookname"`
	Author      string `json:"author"`
	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"`
}

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
Package main Code generated by go-bindata.
Package main Code generated by go-bindata.

Jump to

Keyboard shortcuts

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