Documentation
¶
Index ¶
- Variables
- func DeleteBookJson(book *model.Book) error
- func GetBookInfoListByParentFolder(parentFolder string) (*model.BookInfos, error)
- func GetChildBooksInfo(BookID string) (*model.BookInfos, error)
- func IsRemoteURL(storeURL string) bool
- func SaveBookJson(book *model.Book) error
- func TopOfShelfInfo(sortBy string) ([]model.StoreBookInfo, error)
- type Backend
- func (backend *Backend) ParseFTPURL(u *url.URL) error
- func (backend *Backend) ParseFileURL(urlStr string) error
- func (backend *Backend) ParseS3URL(u *url.URL) error
- func (backend *Backend) ParseSFTPURL(u *url.URL) error
- func (backend *Backend) ParseSMBURL(u *url.URL) error
- func (backend *Backend) ParseStoreURL(urlStr string) error
- func (backend *Backend) ParseWebDAVURL(u *url.URL) error
- type BackendType
- type Store
- type StoreInRam
- func (ramStore *StoreInRam) AddBookToSubStore(storeURL string, b *model.Book) error
- func (ramStore *StoreInRam) AddBooks(books []*model.Book) error
- func (ramStore *StoreInRam) AddStore(storeURL string) error
- func (ramStore *StoreInRam) DeleteBook(id string) error
- func (ramStore *StoreInRam) DeleteBookMark(bookID string, markType model.MarkType, pageIndex int) error
- func (ramStore *StoreInRam) GenerateBookGroup() (e error)
- func (ramStore *StoreInRam) GetArchiveBooks() []*model.Book
- func (ramStore *StoreInRam) GetBook(id string) (*model.Book, error)
- func (ramStore *StoreInRam) GetBookMarks(bookID string) (*model.BookMarks, error)
- func (ramStore *StoreInRam) GetParentBookID(childID string) (string, error)
- func (ramStore *StoreInRam) ListBooks() ([]*model.Book, error)
- func (ramStore *StoreInRam) LoadBooks() error
- func (ramStore *StoreInRam) SaveBooksToJson() error
- func (ramStore *StoreInRam) StoreBook(b *model.Book) error
- func (ramStore *StoreInRam) StoreBookMark(mark *model.BookMark) error
- type StoreInfo
Constants ¶
This section is empty.
Variables ¶
var RamStore = &StoreInRam{ StoreInfo: StoreInfo{ BackendURL: "comigo://main", Name: "Comigo StoreInfo", Description: "Comigo Main book store", }, ChildStores: sync.Map{}, }
RamStore 扫描后生成。可以有多个子书库。内部使用并发安全的 sync.Map 存储书籍和书组
Functions ¶
func DeleteBookJson ¶
func GetBookInfoListByParentFolder ¶
GetBookInfoListByParentFolder 根据父文件夹获取书籍列表
func GetChildBooksInfo ¶
GetChildBooksInfo 根据 ID 获取书籍列表
func IsRemoteURL ¶ added in v1.2.17
IsRemoteURL 判断 URL 是否为远程存储(非本地文件系统)
func TopOfShelfInfo ¶
func TopOfShelfInfo(sortBy string) ([]model.StoreBookInfo, error)
TopOfShelfInfo 获取顶层书架信息
Types ¶
type Backend ¶
type Backend struct {
URL string `json:"url"` // 本地书库为文件路径(/home/pi/books C:\Users\用户名\books或 file://some_path/books),其他类型的书库是对应文件服务的 url 形式,
Type BackendType `json:"backend_type"` // 文件后端类型 1: 本地文件夹,2: SMB共享,3: SFTP服务器,4: WebDAV服务器,5: S3存储,6: FTP服务器
ServerHost string `json:"server_host"` // 文件服务的服务器地址,smb、ftp、sftp、webdav等类型的书库需要填写。
ServerPort int `json:"server_port"` // 文件服务的端口号,smb、ftp、sftp、webdav等类型的书库需要填写。
NeedAuth bool `json:"need_auth"` // 相关文件服务是否需要认证,smb、ftp、sftp、webdav等类型的书库需要填写。
AuthUsername string `json:"auth_username"` // 认证用户名,smb、ftp、sftp、webdav等类型的书库需要填写。
AuthPassword string `json:"auth_password"` // 认证密码,smb、ftp、sftp、webdav等类型的书库需要填写。
SMBPath string `json:"smb_path"` // SMB共享路径,smb类型的书库需要填写
}
Backend 文件后端。 可能是 1: 本地文件系统,2: SMB共享,3: SFTP服务器,4: WebDAV服务器,5: S3存储,6: FTP服务器 可能用到的字段都放进一个结构体;调用方只填需要字段 核心配置是“URL”,其余大多数参数都解析此URL生成。 本地书库为文件路径(/home/pi/books C:\Users\用户名\books或 file://some_path/books), 其他类型的书库是对应文件服务的 url 形式, 如 smb://workgroup;user:password@server/share/folder/books 或 sftp://<user>:<password>@<host>/<path> 或 webdav://192.168.1.100/books <scheme>://[<username>[:<password>]@]<host>[:<port>]/<base-path>/<resource-path> scheme 为 http 或 https(也接受 dav:// 与 davs:// 作为同义写法) 或 ftp://<user>:<password>@<host>:<port>/<dir1> ftps://<user>:<password>@<host>:<port>/<dir1> 或 s3://<S3_endpoint>[:<port>]/<bucket_name>/[<S3_prefix>] [region=<S3_region>] [config=<config_file_location> | config_server=<url>] [section=<section_name>]
func (*Backend) ParseFTPURL ¶
ParseFTPURL 解析FTP URL 格式: ftp://user:password@host:port/dir 或 ftps://user:password@host:port/dir
func (*Backend) ParseFileURL ¶
ParseFileURL 解析File URL 格式: file:///path/to/books 或 file:///C:/path/to/books
func (*Backend) ParseS3URL ¶
ParseS3URL 解析S3 URL 格式: s3://endpoint/bucket/prefix
func (*Backend) ParseSFTPURL ¶
ParseSFTPURL 解析SFTP URL 格式: sftp://user:password@host/path
func (*Backend) ParseSMBURL ¶
ParseSMBURL 解析SMB URL 格式: smb://workgroup;user:password@server/share/folder/books
func (*Backend) ParseStoreURL ¶
ParseStoreURL 解析URL字符串并返回FileBackend配置 支持的URL格式: - 本地文件: file:///path/to/books 或 /path/to/books (Unix路径) 或 C:\path\to\books D:\path\to\books E:\path\to\books (Windows路径) - SMB: smb://workgroup;user:password@server/share/folder/books - SFTP: sftp://user:password@host/path - WebDAV: webdav://host/path 或 http://host/path 或 https://host/path - FTP: ftp://user:password@host:port/dir 或 ftps://user:password@host:port/dir - S3: s3://endpoint/bucket/prefix
func (*Backend) ParseWebDAVURL ¶
ParseWebDAVURL 解析WebDAV URL 格式: webdav://host/path 或 http://host/path 或 https://host/path
type BackendType ¶
type BackendType int
BackendType 文件存储类型
const ( LocalDisk BackendType = 1 + iota SMB SFTP WebDAV S3 FTP )
func GetBackendType ¶ added in v1.2.17
func GetBackendType(storeURL string) (BackendType, error)
GetBackendType 获取 URL 对应的后端类型
func (BackendType) String ¶
func (f BackendType) String() string
type Store ¶
type Store struct {
StoreInfo
BookMap sync.Map // 拥有的书籍,key是BookID,存储 *Book 与 *BooksGroup
BookMarksMap sync.Map // 书签,key是BookID,存储 BookMarks
}
Store 对应某个扫描路径的子书库,目前只支持本地书库
func (*Store) GenerateBookGroup ¶
GenerateBookGroup 分析书库中已有书籍的路径,生成书籍组信息
type StoreInRam ¶
type StoreInRam struct {
StoreInfo
ChildStores sync.Map // key为路径 存储 *Store
PendingBookmarks sync.Map // 待迁移的书签,key为BookID,value为model.BookMarks
}
StoreInRam 内存书库,扫描后生成。可以有多个子书库。
func (*StoreInRam) AddBookToSubStore ¶
func (ramStore *StoreInRam) AddBookToSubStore(storeURL string, b *model.Book) error
AddBookToSubStore 将某一本书,放到BookMap里面去
func (*StoreInRam) AddBooks ¶
func (ramStore *StoreInRam) AddBooks(books []*model.Book) error
AddBooks 添加多本书
func (*StoreInRam) AddStore ¶
func (ramStore *StoreInRam) AddStore(storeURL string) error
AddStore 创建一个新书库
func (*StoreInRam) DeleteBook ¶
func (ramStore *StoreInRam) DeleteBook(id string) error
func (*StoreInRam) DeleteBookMark ¶ added in v1.2.12
func (ramStore *StoreInRam) DeleteBookMark(bookID string, markType model.MarkType, pageIndex int) error
DeleteBookMark 删除指定书籍的特定书签 根据 bookID + markType + pageIndex 唯一确定一个书签
func (*StoreInRam) GenerateBookGroup ¶
func (ramStore *StoreInRam) GenerateBookGroup() (e error)
GenerateBookGroup 分析所有子书库,并并生成书籍组
func (*StoreInRam) GetArchiveBooks ¶
func (ramStore *StoreInRam) GetArchiveBooks() []*model.Book
GetArchiveBooks 获取所有压缩包格式的书籍
func (*StoreInRam) GetBook ¶
func (ramStore *StoreInRam) GetBook(id string) (*model.Book, error)
GetBook 根据 BookID 获取书籍 GetBookByID 根据 BookID 获取书籍
func (*StoreInRam) GetBookMarks ¶
func (ramStore *StoreInRam) GetBookMarks(bookID string) (*model.BookMarks, error)
func (*StoreInRam) GetParentBookID ¶
func (ramStore *StoreInRam) GetParentBookID(childID string) (string, error)
GetParentBookID 通过子书籍 ID 获取所属书组 ID
func (*StoreInRam) SaveBooksToJson ¶ added in v1.1.5
func (ramStore *StoreInRam) SaveBooksToJson() error
SaveBooksToJson 保存书籍信息到本地硬盘(JSON 文件)
func (*StoreInRam) StoreBook ¶
func (ramStore *StoreInRam) StoreBook(b *model.Book) error
StoreBook 添加一本书
func (*StoreInRam) StoreBookMark ¶
func (ramStore *StoreInRam) StoreBookMark(mark *model.BookMark) error