Skip to content

FoxBook的golang版本,仅供学习,不推荐个人使用

Notifications You must be signed in to change notification settings

linpinger/foxbook-golang

Repository files navigation

FoxBook(狐狸的小说下载阅读及转换工具) GoLang版

名称: FoxBook

功能: 狐狸的小说下载阅读及转换工具(下载小说站小说,制作为mobi,epub,azw3格式,http/webdav/cgi服务器)

作者: 爱尔兰之狐(linpinger)

邮箱: mailto:linpinger@gmail.com

主页: http://linpinger.olsoul.com?s=FoxBook-GoLang_MD

缘起: 用别人写的工具,总感觉不能随心所欲,于是自己写个下载管理工具,基本能用,基本满意

原理: 下载网页,分析网页,文本保存在文本数据库中,转换为其他需要的格式

亮点: 通用小说网站规则能覆盖大部分文字站的目录及正文内容分析,不需要针对每个网站的规则

依赖: golang.org/x/text/encoding/simplifiedchinese golang.org/x/net/webdav github.com/leotaku/mobi

感谢: 2021-11-25: 非常感谢 github.com/leotaku/mobi 这个库,它让我们摆脱了x86 cpu的限制,可以在arm或其他golang支持的平台下生成azw3格式,意味着我们可以在手机/路由上生成azw3文件,而不需要开电脑了,结合本程序的http服务器功能,可以直接让kindle直接通过浏览器访问手机热点,从手机上下载电子书了

旧版(2019-12-13之前)依赖: https://github.com/axgle/mahonia

预编译版的下载地址:

编译:

  • 下载go: https://golang.google.cn/dl/https://golang.org/dl/

  • 配置好 GOPATH

    • 例如下载 go1.17.3.windows-amd64.zip 解压到 D:\,于是存在 D:\go 目录
    • 准备一个放置源码的工作目录 D:\prj
    • Win + R 输入 cmd 回车进入命令行
    • cd /d D:\prj
    • set PATH=D:\go\bin;%PATH%
    • set GOROOT=D:\go
    • set GOPATH=D:\prj
    • set GOPROXY=https://goproxy.cn,direct
  • 如果go version的版本大于等于1.16

    • 下载,编译
      • go get github.com/linpinger/foxbook-golang
    • 或只下载main.go,放到D:\prj目录下
      • go mod init github.com/linpinger/foxbook-golang
      • go mod tidy
      • go mod vendor
      • go build -ldflags "-s -w"
  • 依赖的库,GBK与UTF-8互转

    • 下载这个包(40多M): https://github.com/golang/text/
    • 或者单独下载这9个文件(对应上面包中文件,按下面路径保存):
      • D:\prj\src\golang.org\x\text\transform\transform.go
      • D:\prj\src\golang.org\x\text\encoding\encoding.go
      • D:\prj\src\golang.org\x\text\encoding\internal\internal.go
      • D:\prj\src\golang.org\x\text\encoding\internal\identifier\identifier.go
      • D:\prj\src\golang.org\x\text\encoding\internal\identifier\mib.go
      • D:\prj\src\golang.org\x\text\encoding\simplifiedchinese\all.go
      • D:\prj\src\golang.org\x\text\encoding\simplifiedchinese\gbk.go
      • D:\prj\src\golang.org\x\text\encoding\simplifiedchinese\hzgb2312.go
      • D:\prj\src\golang.org\x\text\encoding\simplifiedchinese\tables.go
  • 下载源码

    • 不存在git
    • 如果存在git
      • go get github.com/linpinger/foxbook-golang
  • 最小编译: go build -ldflags "-s -w" github.com/linpinger/foxbook-golang

小提示:

  • foxbook-golang-x86.exe -h 可以查看命令行参数
  • foxbook-golang-x86.exe -v 可以查看常用用法
  • 把生成的exe重命名为http.exe,它就成了一个简单的http文件服务器:
  • 如果是服务器模式,默认根目录为当前目录,默认端口为80(linux/mac下因权限问题需使用-p参数修改一下端口)

2018-06-12 交叉编译

  • 原来go支持交叉编译,本人之前还傻傻的在多个平台上去编译,WTF
  • 只要修改环境变量 GOARCHGOOS 即可,例如:
export PATH="/dev/shm/go/bin:$PATH"
export GOROOT="/dev/shm/go"
# export GOPATH="/dev/shm"
export GOPATH="$HOME"

export GOOS=linux
export GOARCH=amd64
echo "- $GOOS $GOARCH"
go build -o foxbook-golang-linux-x64.elf -ldflags "-s -w" github.com/linpinger/foxbook-golang

export GOOS=windows
export GOARCH=386
echo "- $GOOS $GOARCH"
go build -o foxbook-golang-x86.exe -ldflags "-s -w" github.com/linpinger/foxbook-golang

更新日志:

  • 2024-08-30: 添加: 倒序清空内容字节小于3000的章节
  • 2024-08-28: 修改: 几个站点,排序方法
  • 2023-08-07: 修改: 起点url换成桌面版(更新太频繁了,旧的url已经不可用了),添加: -ls: 列出fml中book信息, -ubt 0: 更新idx=0的目录
  • 2021-12-27: 修改: 去除idx参数,简化转为mobi
  • 2021-11-25: 添加: 转换为azw3格式,不依赖kindlege,故可以做到全平台都可以转换,已经在安卓手机上成功转换文本到azw3格式
  • 2021-11-24: 修改: 重构项目结构
  • 2021-05-13: 添加: 使用go mod适应新版go1.16,http中添加webDAV,什么设置都不改的话,可以用 curl -X PROPFIND -H "Depth: 1" http://fox:book@127.0.0.1:80/webdav/ 查看返回的目录信息
  • 2020-11-11: 修改: 修改GetTOC/Last相关代码
  • 2020-05-21: 修改: 修改server相关代码
  • 2020-05-15: 修改: 重构项目结构,更清晰化,修改http客户端,加入一些网页检测已经隐形bug,加入一些开关
  • 2020-05-11: 修改: 针对追更的书,取倒数80个链接getTOCLast
  • 2020-05-09: 修改: 整理了一下命令行参数,添加了几个开关控制服务器功能及选项
  • 2020-04-27: 修改: 更新常用书架,添加ymxxs.com
  • 2020-04-23: 修改: 更新常用书架
  • 2019-12-16: 修改: xbiquge6.com to xsbiquge.com
  • 2019-12-13: 测试: GBK2UTF8的转换使用官方的包可以减小exe体积849K
  • 2019-12-13: 修改: 文件服务器检测UA包含Kindle时,添加样式将链接转为按钮,方便下载mobi
  • 2019-12-12: 修改: 起点epub下载失效,目前根据qidianid还只能获得书名,作者还不好获取,准备根据qidianid生成fml,然后更新,然后tom,修改tomobi时单本带入fml中的author字段
  • 2019-11-18: 修改: 比较新章节时从后向前搜列表,起点Android接口部分失效,替换为m.qidian.com的接口,生成mobi的一些样式修改
  • 2018-10-31: 修改: 一些站点书架的处理
  • 2018-09-12: 修改: 上传文件异常处理:使用复制返回的长度代替不靠谱的sizer接口,抄来的代码不知其所以然
  • 2018-06-13: 添加: 上传页面添加一临时文本框,便于在各设备共享文本
  • 2018-06-11: 修改: kindle固件升级导致字体不可用,修改CSS以适应
  • 2018-05-13: 修复: epub内的文件随机顺序造成的获取信息失败bug
  • 2018-05-09: 修复: 生成文件名修复,epub不存在检测
  • 2018-05-08: 修改: 书架使用rawcookie,添加: 起点epub转mobi
  • 2018-04-28: 修改: 一些bug的修复,改了一些结构,现在再看代码觉得好乱,等有动力的时候再改改...
  • 2017-10-23: 添加: wutuxs.com的书架,一些bug的修复
  • 2017-07-07: 添加: pu参数来使用POST发送文件,若是中文文件名,会发送GBK编码的文件名哦,可以使用本程序来接收(文件大小在99M以下),是配套的
  • 2017-06-25: 服务器网页命令链接后加入t参数,避免在firefox中不处理相同url的问题
  • 2017-06-21: 发布第一个版本,路径让人懒得上传
  • ...: 懒得写了,就这样吧