book

package
v0.2.1 Latest Latest
Warning

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

Go to latest
Published: May 19, 2022 License: BSD-2-Clause Imports: 12 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 CompareNormalizedDate added in v0.2.0

func CompareNormalizedDate(date1, date2 string) (string, bool)

CompareNormalizedDate compares two 'normalized' date and returns the most 'precise' one in case of equality.

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 in a non-supported format, the 'cleaned' ISBN is returned and 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 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 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) 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) FromGooglebooks added in v0.2.0

func (b *Book) FromGooglebooks(MaxResults int) error

FromGooglebooks gets Book's metadata from Googlebooks. If search successfully returns a Book with same ISBN, Book's metadata are superseded, otherwise the first MaxResult matches are memorized for further end-user review only.

func (*Book) GuessFromFilename added in v0.2.0

func (b *Book) GuessFromFilename() error

GuessFromFilename tries to guess Book's information based on its filename.

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.

func (Book) ISBN13 added in v0.2.1

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

ISBN13 returns the ISBN_13 identifier of Book.

func (*Book) IsComplete

func (b *Book) IsComplete() bool

IsComplete gives an evaluation whether a Book's information seems complete enough. Objective is to provide a way for the tool to decide whether a human intervention is a good idea.

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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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