book

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Sep 2, 2022 License: BSD-2-Clause Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// Verbose is the logger of book package that provides feedback of operation
	// done on books.
	Verbose = log.New(io.Discard, log.Prefix(), log.Flags())

	// Debug is the logger of book package that provides information for
	// debugging purpose.
	Debug = log.New(io.Discard, log.Prefix(), log.Flags())

	// ErrUnknownFormat is raised if supplied file format is unknown.
	ErrUnknownFormat = errors.New("unknown file format")
)

Functions

func NormalizeDate added in v0.2.0

func NormalizeDate(stamp string) string

NormalizeDate standardizes time stamps format using 2006-01-02 notation. If initial date is only a year, or only a year and a month, it does not substitute day or month to 01.

func NormalizeISBN added in v0.2.0

func NormalizeISBN(isbn string) (string, error)

NormalizeISBN returns a cleaned ISBN_13 identifier. If isbn is in ISBN_10 format it will be converted to ISBN_13. If isbn is not a valid ISBN format, an error will be raised.

func ParseTimestamp added in v0.2.0

func ParseTimestamp(stamp string) (t time.Time, err error)

ParseTimestamp parses a time stamp, trying different time format.

Types

type Book

type Book struct {
	// Path is the location of the book's file in the file-system.
	Path string

	// Title is the book's title.
	Title string

	// Authors is the list names of the authors and/or editors for this book.
	Authors []string

	// ISBN is the unique industry standard identifier for this book.
	// libro tends to prefer ISBN_13 format when available or when it can be
	// derived from an ISBN_10.  ISBN10 and ISBN13 methods can be invoked to
	// convert from one format to the other.
	// Most Book's functions dealing with ISBN will better work if ISBN is
	// 'normalized' using Book.SetISBN.
	ISBN string `json:",omitempty"`

	// SubTitle is the book's sub-title.
	SubTitle string `json:",omitempty"`

	// Publisher is the publisher of this book.
	Publisher string `json:",omitempty"`

	// PublishedDate is the date of publication of this book.
	// `libro` tries to normalize dates using '2006-01-02' format. When
	// 'precision' of date is not enough to capture known month or days, date
	// is cut to '2006-01' or simply to '2006'.
	// Most Book's functions dealing with Date will better work if Date is
	// 'normalized' using Book.SetPublishedDate.
	PublishedDate string `json:",omitempty"`

	// Description is the synopsis of the book. The text of the description
	// is formatted in HTML and includes simple formatting elements.
	Description string `json:",omitempty"`

	// Series is the series to which this book belongs to.
	Series string `json:",omitempty"`

	// SeriesIndex is the position in the series to which the book belongs to.
	SeriesIndex float64 `json:",omitempty"`

	// SeriesTitle is the book's title in the series (without Series nor
	// SubTitle information).
	SeriesTitle string `json:",omitempty"`

	// Language is the book's language. It is the two-letter ISO 639-1 code
	// such as 'fr', 'en'.
	Language string `json:",omitempty"`

	// PageCount is total number of pages of this book.
	PageCount int64 `json:",omitempty"`

	// Subject is the list of subject categories, such as "Fiction",
	// "Suspense".
	Subject []string `json:",omitempty"`

	// ToReview collects messages that report events encountered during Book's
	// processing that deserve end-user attention.
	*Report
}

Book represents a book.

func New

func New() *Book

New creates a new Book

func NewFromContent added in v0.4.0

func NewFromContent(path string) (*Book, error)

NewFromContent creates a Book whose information are guessed from its Content.

func NewFromEpub added in v0.2.0

func NewFromEpub(path string) (*Book, error)

NewFromEpub create a Book by populating information out of an EPUB file's Metadata.

func NewFromFile

func NewFromFile(path string) (*Book, error)

NewFromFile creates a new Book and populates its information according to the file's metadata.

func NewFromFilename added in v0.4.0

func NewFromFilename(path string) (*Book, error)

NewFromFilename creates a Book whose information are guessed from its filename.

func NewFromMap added in v0.2.0

func NewFromMap(m map[string]string) (*Book, error)

NewFromMap creates a Book's from to the attributes defined as a map where keys are attribute's name (insensitive to case) and value is a string representation of the attribute's value. For attributes that accept a list of values (like Authors or Subject), provided map value should be formatted like "val0 & val1" (individual value in as string separated by '&').

func (*Book) CanBeRendered added in v0.4.0

func (b *Book) CanBeRendered() error

CanBeRendered uses EPUBcheck to verify that the book will likely be properly rendered by most reading systems.

func (*Book) CheckContentSecurity added in v0.4.0

func (b *Book) CheckContentSecurity() error

CheckContentSecurity verifies that Book's content does not contain unsafe HTML.

func (*Book) CleanMetadata added in v0.3.0

func (b *Book) CleanMetadata() error

CleanMetadata cleans Book's metadata.

func (Book) CompareWith added in v0.4.0

func (b Book) CompareWith(b1 *Book) (SimilarityLevel, string)

CompareWith assesses the similarity level between two books with a short explanation of the rational.

func (*Book) CompleteFrom added in v0.2.0

func (b *Book) CompleteFrom(b1 *Book)

CompleteFrom completes Book's attributes by setting empty values to the corresponding value of the provided 'b1' Book. CompleteFrom is a shortcut to call MergeWith with override set to false.

func (*Book) CompleteFromMap added in v0.2.0

func (b *Book) CompleteFromMap(m map[string]string) error

CompleteFromMap completes Book's attributes by setting empty values to the corresponding value of the provided map. map format is similar to NewFromMap.

func (*Book) GuessFromMetadata added in v0.2.0

func (b *Book) GuessFromMetadata() error

GuessFromMetadata tries to guess Book's information based on known attributes (like Book's Title).

func (Book) ISBN10 added in v0.2.1

func (b Book) ISBN10() (string, error)

ISBN10 returns the ISBN_10 identifier of Book. ISBN10 assumes that b.ISBN is a "cleaned" ISBN (only digits, no '-' or things like that)

func (Book) ISBN13 added in v0.2.1

func (b Book) ISBN13() (string, error)

ISBN13 returns the ISBN_13 identifier of Book. ISBN13 assumes that b.ISBN is a "cleaned" ISBN (only digits, no '-' or things like that)

func (*Book) Identifiability added in v0.4.0

func (b *Book) Identifiability() QualityLevel

Identifiability assesses whether Book has enough Metadata to be identified by the end-user.

func (*Book) InformationCompleteness added in v0.4.0

func (b *Book) InformationCompleteness() QualityLevel

InformationCompleteness assesses whether Book's information is complete.

func (*Book) MergeWith added in v0.2.0

func (b *Book) MergeWith(b1 *Book, override bool)

MergeWith merges Book with 'b1' Book. If override is set, Book's attributes are replaced by the none-empty corresponding attribute of 'b1' Book.

func (*Book) ReplaceFrom added in v0.2.0

func (b *Book) ReplaceFrom(b1 *Book)

ReplaceFrom completes and replaces Book's attributes using the non-empty corresponding value of the provided 'b1' Book. ReplaceFrom is a shortcut to call MergeWith with override set to true.

func (*Book) ReplaceFromMap added in v0.2.0

func (b *Book) ReplaceFromMap(m map[string]string) error

ReplaceFromMap completes and replaces Book's attributes using the non-empty corresponding value of the provided map. map format is similar to NewFromMap.

func (*Book) SearchOnGooglebooks added in v0.4.0

func (b *Book) SearchOnGooglebooks(MaxResults int) ([]*Book, error)

SearchOnGooglebooks search Googlebooks for the Book. At most MaxResults Books are returned.

func (*Book) SetAuthors added in v0.2.1

func (b *Book) SetAuthors(authors []string)

SetAuthors sets Book's Authors and tries to keep Authors' names and surnames in a pre-defined order.

func (*Book) SetDescription added in v0.4.0

func (b *Book) SetDescription(desc string)

SetDescription sets Book's Description and tries to clean it from un-helping HTML formatting directives.

func (*Book) SetISBN added in v0.2.1

func (b *Book) SetISBN(isbn string)

SetISBN sets Book's ISBN and tries to normalize it to ISBN_13 format. SetISBN reports non-recognized ISBN but do not fail.

func (*Book) SetPublishedDate added in v0.2.1

func (b *Book) SetPublishedDate(date string)

SetPublishedDate sets Book's PublishedDate and tries to normalize its format.

type QualityLevel added in v0.4.0

type QualityLevel int

QualityLevel indicate the similarity level between two elements.

const (
	// Bad indicates that quality level is not acceptable
	Bad QualityLevel = iota
	// Poor indicates tat quality level is poor.
	Poor
	// Average indicates that quality level is acceptable
	Average
	// Good indicates that quality level is good.
	Good
	// Perfect indicates that quality level is perfect.
	Perfect
)

func (QualityLevel) String added in v0.4.0

func (lvl QualityLevel) String() string

String outputs a human understandable description of a QualityLevel.

type Report added in v0.2.1

type Report struct {
	// Issues collects messages that report events encountered during Book's
	// processing that deserve end-user attention.
	Issues []string `json:",omitempty"`

	// SimilarBooks collects alternative Book's metadata that are possibly
	// better or more complete than actual metada set. `libro`is for some reasons
	// usually not sure enough whether they are corresponding to exactly the
	// same book.
	SimilarBooks []*Book `json:",omitempty"`
}

Report represents a set of indications about libro's automatic or semi-automatic activities to the end-user that deserve attention or arbitration.

func NewReport added in v0.2.1

func NewReport() *Report

NewReport creates a new empty Report.

func (Report) NeedReview added in v0.2.1

func (r Report) NeedReview() bool

NeedReview returns whether Report contains significant elements for the end-user to consider.

func (*Report) ReportIssue added in v0.2.1

func (r *Report) ReportIssue(format string, a ...interface{})

ReportIssue reports a (possible) issue encountered during Book's processing that deserves end-user attention.

func (*Report) ReportSimilarBook added in v0.2.1

func (r *Report) ReportSimilarBook(book *Book)

ReportSimilarBook reports possible similar Book.

type SimilarityLevel added in v0.4.0

type SimilarityLevel int

SimilarityLevel indicate the similarity level between two elements.

const (
	// AreNotComparable indicates that two elements are not comparable.
	AreNotComparable SimilarityLevel = iota
	// AreNotTheSame indicates that two elements are different.
	AreNotTheSame
	// AreMaybeTheSame indicates that two elements are maybe the same.
	AreMaybeTheSame
	// AreAlmostTheSame indicates that elements are almost the same.
	AreAlmostTheSame
	// AreTheSame indicates that elements are the same.
	AreTheSame
)

func (SimilarityLevel) String added in v0.4.0

func (lvl SimilarityLevel) String() string

String outputs a human understandable description of a SimilarityLevel.

Directories

Path Synopsis
Package epubcheck provides basic bindings to run and interpret `epubcheck` tool.
Package epubcheck provides basic bindings to run and interpret `epubcheck` tool.
css
Package css - parse CSS
Package css - parse CSS

Jump to

Keyboard shortcuts

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