Documentation
¶
Index ¶
- func ClearBookNotExist()
- func ClearBookWhenStoreUrlNotExist(nowStoreUrls []string)
- func GenerateBookGroup()
- func GetAllBooksNumber() int
- type Book
- func (b *Book) CloneForView() *Book
- func (b *Book) GetPageCount() int
- func (b *Book) GetStoreID() string
- func (b *Book) GuessCover() (cover PageInfo)
- func (b *Book) ScanAllImage()
- func (b *Book) ScanAllImageGo()
- func (b *Book) SortPages(s string)
- func (b *Book) SortPagesByImageList(imageList []string)
- type BookInfo
- type BookInfos
- type BookMark
- type BookMarks
- type BookinfoWithBookMark
- type MarkType
- type PageInfo
- type PageInfos
- type StoreBookInfo
- type StoreInterface
- type SupportFileType
- type User
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ClearBookNotExist ¶ added in v1.1.0
func ClearBookNotExist()
ClearBookNotExist 检查内存中的书的源文件是否存在,不存在就删掉
func ClearBookWhenStoreUrlNotExist ¶ added in v1.1.7
func ClearBookWhenStoreUrlNotExist(nowStoreUrls []string)
ClearBookWhenStoreUrlNotExist 清理书库中不存在的书籍源对应的书籍,传入的是当前存在的书籍源
func GetAllBooksNumber ¶ added in v1.1.0
func GetAllBooksNumber() int
GetAllBooksNumber 获取书籍总数,不包括 BookGroup 类型
Types ¶
type Book ¶
Book 定义书籍结构
func NewBook ¶
func NewBook(bookPath string, modified time.Time, fileSize int64, storePath string, depth int, bookType SupportFileType) (*Book, error)
NewBook 初始化 Book,设置文件路径、书名、BookID 等
func (*Book) CloneForView ¶ added in v1.3.0
CloneForView 返回用于渲染和 API 输出的书籍副本,避免排序、URL 改写污染内存书库。
func (*Book) GetStoreID ¶ added in v1.1.0
GetStoreID 获取编码后的书库ID,StoreID是书库URL路径的 base62 编码
func (*Book) GuessCover ¶ added in v1.2.37
GuessCover 猜测书籍的封面
func (*Book) SortPagesByImageList ¶
SortPagesByImageList 根据给定的文件列表排序页面(用于 EPUB)
type BookInfo ¶
type BookInfo struct {
// ===== 基本标识 =====
BookID string `json:"id"` // 根据 BookPath 生成的唯一 ID
Title string `json:"title"` // 书名
Author string `json:"author"` // 作者
Type SupportFileType `json:"type"` // 书籍类型
// ===== 文件路径 =====
BookPath string `json:"-"` // 文件绝对路径,JSON 不解析
ParentFolder string `json:"-"` // 父文件夹名称,JSON 不解析
StoreUrl string `json:"-"` // 在哪个子书库, JSON 不解析
// ===== 远程存储 =====
IsRemote bool `json:"is_remote"` // 是否为远程书籍(WebDAV、Comigo 等)
RemoteURL string `json:"-"` // 远程存储的基础 URL,JSON 不解析
RemoteBookID string `json:"-"` // 远端 Comigo 中的原始 BookID,JSON 不解析
RemoteStoreKey string `json:"remote_store,omitempty"` // 远端 Comigo 书库公开标识,用于前端链接参数
RemoteShelfKey string `json:"-"` // 远端 Comigo 顶级书库内部标识,JSON 不解析
RemoteShelfName string `json:"-"` // 远端 Comigo 顶级书库显示名,JSON 不解析
// ===== 文件属性 =====
FileSize int64 `json:"file_size"` // 文件大小
Modified time.Time `json:"modified_time"` // 修改时间
PageCount int `json:"page_count"` // 总页数
Cover PageInfo `json:"cover"` // 封面图
// ===== 出版信息 =====
ISBN string `json:"isbn"` // ISBN
Press string `json:"press"` // 出版社
PublishedAt string `json:"published_at"` // 出版日期
// ===== 书组相关 =====
ChildBooksNum int `json:"child_books_num"` // 子书籍数量,只统计直接的子书籍
ChildBooksID []string `json:"child_books_id"` // 子书籍 BookID
Depth int `json:"depth"` // 书籍深度
// ===== 压缩包相关 =====
ExtractPath string `json:"extract_path"` // 解压路径,7z 用,JSON 不解析
ExtractNum int `json:"extract_num"` // 文件解压数
NonUTF8Zip bool `json:"non_utf_8_zip"` // 是否为特殊编码 zip
ZipTextEncoding string `json:"zip_text_encoding"` // zip 文件编码
// ===== 状态标记 =====
InitComplete bool `json:"init_complete"` // 是否初始化完成(todo:7z解压)
BookComplete bool `json:"book_complete"` // 书籍是否阅读完成
Deleted bool `json:"deleted"` // 源文件是否已删除
// ===== 元数据 =====
CreatedByVersion string `json:"created_by_version"` // 生成数据的 Comigo 版本
}
BookInfo 与 Book 唯一的区别是没有 AllPageInfo,而是封面图 URL,减小 JSON 文件的大小
func (*BookInfo) GetAllChildBooksNum ¶ added in v1.1.0
GetAllChildBooksNum 递归获取所有子书籍的数量
type BookInfos ¶ added in v1.1.0
type BookInfos []BookInfo
BookInfos 表示 BookInfo 的列表,排序用 在 Go 中,方法接收器必须是命名类型,这是为了确保类型具有一个唯一的标识和类型身份,从而可以在包级作用域中明确地定义和调用这些方法。 使用类型别名 BookInfos []BookInfo 来提供排序方法,这样可以确保 BookInfos 具有明确的类型身份,并且可以在包级作用域中使用和扩展。
type BookMark ¶ added in v1.1.0
type BookMark struct {
Type MarkType `json:"mark_type"` // 书签类型,auto 表示自动书签,user 表示用户书签
BookID string `json:"book_id"` // 书籍 ID
BookStoreID string `json:"book_store_id"` // 书籍所属书库 ID
PageIndex int `json:"page_index"` // 书签页码,从 1 开始,理论上不会超过 PageCount,但是现实中可能会有旧数据
Description string `json:"description"` // 用户添加的备注
CreatedAt time.Time `json:"created_at"` // 创建时间
UpdatedAt time.Time `json:"updated_at"` // 更新时间
}
type BookMarks ¶ added in v1.1.0
type BookMarks []BookMark
func (*BookMarks) GetLastReadPage ¶ added in v1.1.0
func (*BookMarks) GetLastReadTime ¶ added in v1.1.5
func (*BookMarks) SortBookmarks ¶ added in v1.1.0
SortBookmarks 根据 sortBy 参数对 BookInfos 进行排序
type BookinfoWithBookMark ¶ added in v1.1.8
type PageInfo ¶ added in v1.1.0
type PageInfo struct {
Name string `json:"name"` // 用于解压的压缩文件内文件路径,或图片名,为了适应特殊字符,经过一次转义
Path string `json:"path"` // 文件路径
Size int64 `json:"size"` // 文件大小
ModTime time.Time `json:"mod_time"` // 修改时间
Url string `json:"url"` // 远程用户读取图片的URL,为了适应特殊字符,经过转义
PageNum int `json:"page_num"` // 图片在原始文件中的页码位置,这个字段不解析。用来按照原始顺序排序
Blurhash string `json:"-"` // blurhash 占位符,扫描图片生成
Height int `json:"-"` // 图片高度,仅运行时分析使用
Width int `json:"-"` // 图片宽度,仅运行时分析使用
ImgType string `json:"-"` // 这个字段不解析
InsertHtml string `json:"-"` // 这个字段不解析
}
PageInfo 单个媒体文件的信息
func (PageInfo) MarshalJSON ¶ added in v1.2.33
MarshalJSON 只输出浏览器需要的页面信息;Path 是本机或远程存储内部路径,不能暴露给普通页面 JSON。
type PageInfos ¶ added in v1.1.0
type PageInfos []PageInfo
PageInfos 定义页面列表,并提供漫画页排序方法。
func (*PageInfos) SortImages ¶ added in v1.1.0
SortImages 根据 sortBy 参数对 PageInfos 进行排序
type StoreBookInfo ¶ added in v1.1.0
type StoreInterface ¶ added in v1.1.0
type StoreInterface interface {
StoreBook(b *Book) error
GetBook(id string) (*Book, error)
DeleteBook(id string) error
ListBooks() ([]*Book, error)
GenerateBookGroup() error
StoreBookMark(mark *BookMark) error
GetBookMarks(bookID string) (*BookMarks, error)
DeleteBookMark(bookID string, markType MarkType, pageIndex int) error
}
StoreInterface 书库相关基本操作接口
var IStore StoreInterface
type SupportFileType ¶
type SupportFileType string
const ( TypeDir SupportFileType = "dir" TypeZip SupportFileType = ".zip" TypeRar SupportFileType = ".rar" TypeBooksGroup SupportFileType = "book_group" TypeCbz SupportFileType = ".cbz" TypeCbr SupportFileType = ".cbr" TypeTar SupportFileType = ".tar" TypeEpub SupportFileType = ".epub" TypePDF SupportFileType = ".pdf" TypeHTML SupportFileType = ".html" TypeVideo SupportFileType = "video" TypeAudio SupportFileType = "audio" TypeUnknownFile SupportFileType = "unknown" )
书籍类型
func GetBookTypeByFilename ¶
func GetBookTypeByFilename(filename string) SupportFileType
GetBookTypeByFilename 初始化Book时,取得BookType