model

package
v1.2.2 Latest Latest
Warning

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

Go to latest
Published: Jan 1, 2026 License: MIT Imports: 20 Imported by: 0

Documentation

Index

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

type Book struct {
	BookInfo  // 嵌入 BookInfo 结构体
	BookMarks // 书签信息
	PageInfos // 书籍内所有页面的信息
}

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) GetPageCount

func (b *Book) GetPageCount() int

GetPageCount 获取页数

func (*Book) GetStoreID added in v1.1.0

func (b *Book) GetStoreID() string

GetStoreID 获取编码后的书库ID,StoreID是书库URL路径的 base62 编码

func (*Book) GuestCover

func (b *Book) GuestCover() (cover PageInfo)

GuestCover 猜测书籍的封面

func (*Book) ScanAllImage

func (b *Book) ScanAllImage()

ScanAllImage 服务器端分析分辨率、漫画单双页,只适合已解压文件

func (*Book) ScanAllImageGo

func (b *Book) ScanAllImageGo()

ScanAllImageGo 并发分析图片

func (*Book) SortPages

func (b *Book) SortPages(s string)

SortPages 对页面进行排序

func (*Book) SortPagesByImageList

func (b *Book) SortPagesByImageList(imageList []string)

SortPagesByImageList 根据给定的文件列表排序页面(用于 EPUB)

type BookInfo

type BookInfo struct {
	Author          string          `json:"author"`            // 作者
	BookID          string          `json:"id"`                // 根据 BookPath 生成的唯一 ID
	StoreUrl        string          `json:"store_url"`         // 在哪个子书库
	ChildBooksNum   int             `json:"child_books_num"`   // 子书籍数量,只统计直接的子书籍
	ChildBooksID    []string        `json:"child_books_id"`    // 子书籍BookID
	Cover           PageInfo        `json:"cover"`             // 封面图
	Deleted         bool            `json:"deleted"`           // 源文件是否已删除
	Depth           int             `json:"depth"`             // 书籍深度
	ExtractPath     string          `json:"extract_path"`      // 解压路径,7z 用,JSON 不解析
	ExtractNum      int             `json:"extract_num"`       // 文件解压数
	FileSize        int64           `json:"file_size"`         // 文件大小
	BookPath        string          `json:"book_path"`         // 文件绝对路径,JSON 不解析
	ISBN            string          `json:"isbn"`              // ISBN
	BookComplete    bool            `json:"book_complete"`     // 书籍是否阅读完成
	InitComplete    bool            `json:"init_complete"`     // 是否初始化完成(todo:7z解压)
	Modified        time.Time       `json:"modified_time"`     // 修改时间
	NonUTF8Zip      bool            `json:"non_utf_8_zip"`     // 是否为特殊编码 zip
	PageCount       int             `json:"page_count"`        // 总页数
	ParentFolder    string          `json:"parent_folder"`     // 父文件夹
	Press           string          `json:"press"`             // 出版社
	PublishedAt     string          `json:"published_at"`      // 出版日期
	Title           string          `json:"title"`             // 书名
	Type            SupportFileType `json:"type"`              // 书籍类型
	ZipTextEncoding string          `json:"zip_text_encoding"` // zip 文件编码
}

BookInfo 与 Book 唯一的区别是没有 AllPageInfo,而是封面图 URL,减小 JSON 文件的大小

func (*BookInfo) GetAllChildBooksNum added in v1.1.0

func (b *BookInfo) GetAllChildBooksNum() int

GetAllChildBooksNum 递归获取所有子书籍的数量

func (*BookInfo) GetCover

func (b *BookInfo) GetCover() PageInfo

GetCover 获取封面

func (*BookInfo) ShortName

func (b *BookInfo) ShortName() string

ShortName 返回简短的标题(文件名)

type BookInfos added in v1.1.0

type BookInfos []BookInfo

BookInfos 表示 BookInfo 的列表,排序用 在 Go 中,方法接收器必须是命名类型,这是为了确保类型具有一个唯一的标识和类型身份,从而可以在包级作用域中明确地定义和调用这些方法。 使用类型别名 BookInfos []BookInfo 来提供排序方法,这样可以确保 BookInfos 具有明确的类型身份,并且可以在包级作用域中使用和扩展。

func (*BookInfos) SortBooks added in v1.1.0

func (s *BookInfos) SortBooks(sortBy string)

SortBooks 根据 sortBy 参数对 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"`    // 书签页码,从 0 开始,理论上不会超过 PageCount - 1 ,但是现实中可能会有
	Description string    `json:"description"`   // 用户添加的备注
	CreatedAt   time.Time `json:"created_at"`    // 创建时间
	UpdatedAt   time.Time `json:"updated_at"`    // 更新时间
}

func NewBookMark added in v1.1.0

func NewBookMark(markType MarkType, bookID string, bookStoreID string, pageIndex int, description string) *BookMark

type BookMarks added in v1.1.0

type BookMarks []BookMark

func (*BookMarks) GetLastReadPage added in v1.1.0

func (s *BookMarks) GetLastReadPage() int

func (*BookMarks) GetLastReadTime added in v1.1.5

func (s *BookMarks) GetLastReadTime() time.Time

func (*BookMarks) SortBookmarks added in v1.1.0

func (s *BookMarks) SortBookmarks(sortBy string)

SortBookmarks 根据 sortBy 参数对 BookInfos 进行排序

type BookinfoWithBookMark added in v1.1.8

type BookinfoWithBookMark struct {
	BookInfo BookInfo `json:"book_info"` // 书籍信息
	BookMark BookMark `json:"book_mark"` // 书签信息
}

type MarkType added in v1.1.0

type MarkType string
const (
	AutoMark MarkType = "auto"
	UserMark MarkType = "user"
)

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:"-"`        // `json:"blurhash"` //blurhash占位符。扫描图片生成(tools.GetImageDataBlurHash)
	Height     int       `json:"-"`        // 暂时用不着 这个字段不解析`json:"height"`   //blurhash用,图片高
	Width      int       `json:"-"`        // 暂时用不着 这个字段不解析`json:"width"`    //blurhash用,图片宽
	ImgType    string    `json:"-"`        // 这个字段不解析
	InsertHtml string    `json:"-"`        // 这个字段不解析
}

PageInfo 单个媒体文件的信息

type PageInfos added in v1.1.0

type PageInfos []PageInfo

PageInfos 定义页面列表,排序用 在 Go 中,方法接收器必须是命名类型,这是为了确保类型具有一个唯一的标识和类型身份,从而可以在包级作用域中明确地定义和调用这些方法。 使用类型别名 PageInfos []PageInfo 来提供排序方法,这样可以确保 PageInfos 具有明确的类型身份,并且可以在包级作用域中使用和扩展。

func (*PageInfos) SortImages added in v1.1.0

func (s *PageInfos) SortImages(sortBy string)

SortImages 根据 sortBy 参数对 PageInfos 进行排序

type StoreBookInfo added in v1.1.0

type StoreBookInfo struct {
	StoreUrl     string    `json:"store_url"`
	ChildBookNum int       `json:"child_book_num"`
	BookInfos    BookInfos `json:"book_infos"`
}

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)
}

StoreInterface 书库相关基本操作接口 x6

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

type User

type User struct {
	ID       int    `json:"id"`
	Username string `json:"username"`
	Password string `json:"password"`
	Role     string `json:"role"` // 角色: admin, user, guest
	Email    string `json:"email"`
	Key      string `json:"key"` // login key
	ExpireAt string `json:"expireAt"`
}

Jump to

Keyboard shortcuts

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