Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CountBookmarks ¶
func CountContent ¶
func FindMountedDevices ¶
FindMountDevices runs a variety of detection methods for different operating systems (Linux, macOS, Windows) returning any results it can find. Those results are then checked for the existence of a .kobo folder which is used to determine whether a device is valid or not.
func QueryDistinctVolumes ¶
QueryDistinctVolumes retrieves all books that contains highlights and reside (or did at one point) on the device itself. We exclude Kobo store books for simplicity where the path is a GUID which is not useful in the context of retrieving the underlying epub for scanning.
Types ¶
type Bookmark ¶
type Bookmark struct { BookmarkID string `db:"BookmarkID"` VolumeID string `db:"VolumeID"` ContentID string `db:"ContentID"` StartContainerPath string `db:"StartContainerPath"` StartContainerChild string `db:"StartContainerChild"` StartContainerChildIndex int `db:"StartContainerChildIndex"` StartOffset int `db:"StartOffset"` EndContainerPath string `db:"EndContainerPath"` EndContainerChildIndex int `db:"EndContainerChildIndex"` EndOffset int `db:"EndOffset"` Text string `db:"Text"` Annotation string `db:"Annotation"` ExtraAnnotationData string `db:"ExtraAnnotationData"` DateCreated string `db:"DateCreated"` ChapterProgress float64 `db:"ChapterProgress"` Hidden bool `db:"Hidden"` Version string `db:"Version"` DateModified string `db:"DateModified"` Creator string `db:"Creator"` UUID string `db:"UUID"` UserID string `db:"UserID"` SyncTime string `db:"SyncTime"` Published bool `db:"Published"` ContextString string `db:"ContextString"` Type string `db:"Type"` }
type Content ¶
type Content struct { ContentID string `db:"ContentID"` ContentType string `db:"ContentType"` MimeType string `db:"MimeType"` BookID string `db:"BookID"` BookTitle string `db:"BookTitle"` ImageId string `db:"ImageId"` Title string `db:"Title"` Attribution string `db:"Attribution"` Description string `db:"Description"` DateCreated string `db:"DateCreated"` ShortCoverKey string `db:"ShortCoverKey"` AdobeLocation string `db:"adobe_location"` Publisher string `db:"Publisher"` IsEncrypted bool `db:"IsEncrypted"` DateLastRead string `db:"DateLastRead"` FirstTimeReading bool `db:"FirstTimeReading"` ChapterIDBookmarked string `db:"ChapterIDBookmarked"` ParagraphBookmarked int `db:"ParagraphBookmarked"` BookmarkWordOffset int `db:"BookmarkWordOffset"` NumShortcovers int `db:"NumShortcovers"` VolumeIndex int `db:"VolumeIndex"` NumPages int `db:"___NumPages"` ReadStatus int `db:"ReadStatus"` SyncTime string `db:"___SyncTime"` UserID string `db:"___UserID"` PublicationId string `db:"PublicationId"` FileOffset int `db:"___FileOffset"` FileSize int `db:"___FileSize"` PercentRead int `db:"___PercentRead"` ExpirationStatus int `db:"___ExpirationStatus"` FavouritesIndex int `db:"FavouritesIndex"` Accessibility int `db:"Accessibility"` ContentURL string `db:"ContentURL"` Language string `db:"Language"` BookshelfTags string `db:"BookshelfTags"` IsDownloaded bool `db:"IsDownloaded"` FeedbackType int `db:"FeedbackType"` AverageRating int `db:"AverageRating"` Depth int `db:"Depth"` PageProgressDirection string `db:"PageProgressDirection"` InWishlist bool `db:"InWishlist"` ISBN string `db:"ISBN"` WishlistedDate string `db:"WishlistedDate"` FeedbackTypeSynced int `db:"FeedbackTypeSynced"` IsSocialEnabled bool `db:"IsSocialEnabled"` EpubType int `db:"EpubType"` Monetization int `db:"Monetization"` ExternalId string `db:"ExternalId"` Series string `db:"Series"` SeriesNumber string `db:"SeriesNumber"` Subtitle string `db:"Subtitle"` WordCount int `db:"WordCount"` Fallback string `db:"Fallback"` RestOfBookEstimate int `db:"RestOfBookEstimate"` CurrentChapterEstimate int `db:"CurrentChapterEstimate"` CurrentChapterProgress float32 `db:"CurrentChapterProgress"` PocketStatus int `db:"PocketStatus"` UnsyncedPocketChanges string `db:"UnsyncedPocketChanges"` ImageUrl string `db:"ImageUrl"` DateAdded string `db:"DateAdded"` WorkId string `db:"WorkId"` Properties string `db:"Properties"` RenditionSpread string `db:"RenditionSpread"` RatingCount int `db:"RatingCount"` ReviewsSyncDate string `db:"ReviewsSyncDate"` MediaOverlay string `db:"MediaOverlay"` MediaOverlayType string `db:"MediaOverlayType"` RedirectPreviewUrl bool `db:"RedirectPreviewUrl"` PreviewFileSize int `db:"PreviewFileSize"` EntitlementId string `db:"EntitlementId"` CrossRevisionId string `db:"CrossRevisionId"` DownloadUrl string `db:"DownloadUrl"` ReadStateSynced bool `db:"ReadStateSynced"` TimesStartedReading int `db:"TimesStartedReading"` TimeSpentReading int `db:"TimeSpentReading"` LastTimeStartedReading string `db:"LastTimeStartedReading"` LastTimeFinishedReading string `db:"LastTimeFinishedReading"` ApplicableSubscriptions string `db:"ApplicableSubscriptions"` ExternalIds string `db:"ExternalIds"` PurchaseRevisionId string `db:"PurchaseRevisionId"` SeriesID string `db:"SeriesID"` SeriesNumberFloat float64 `db:"SeriesNumberFloat"` AdobeLoanExpiration string `db:"AdobeLoanExpiration"` HideFromHomePage bool `db:"HideFromHomePage"` IsInternetArchive bool `db:"IsInternetArchive"` TitleKana string `db:"titleKana"` SubtitleKana string `db:"subtitleKana"` SeriesKana string `db:"seriesKana"` AttributionKana string `db:"attributionKana"` PublisherKana string `db:"publisherKana"` IsPurchaseable bool `db:"IsPurchaseable"` IsSupported bool `db:"IsSupported"` AnnotationsSyncToken string `db:"AnnotationsSyncToken"` DateModified string `db:"DateModified"` StorePages int `db:"StorePages"` StoreWordCount int `db:"StoreWordCount"` StoreTimeToReadLowerEstimate int `db:"StoreTimeToReadLowerEstimate"` StoreTimeToReadUpperEstimate int `db:"StoreTimeToReadUpperEstimate"` Duration int `db:"Duration"` IsAbridged bool `db:"IsAbridged"` }
type Kobo ¶
type Kobo struct { Name string `json:"device_name"` Storage int `json:"device_storage"` DisplayPPI int `json:"display_ppi"` MountPath string `json:"mount_path"` DbPath string `json:"db_path"` Serial string `json:"serial"` Version string `json:"version"` DeviceId string `json:"deviceId"` // contains filtered or unexported fields }
Kobo represents a device, either physically connected or it may be operating on a backup locally stored on disc. It doesn't make much difference operationally.
func GetDeviceMetadata ¶
GetDeviceMetadata looks up the connected Kobo by checking the version string located at <kobo>/.kobo/version An uninitialised KoboConnection will be returned populated with identifiers like device name, storage etc If a device is unknown (ie; released before we support it), a minimally populated KoboConnection will be returned which should still contain enough information for October to still connect regardless.
func NewKobo ¶
NewKobo can be used to emulate a connection to a device on disc with some reasonable defaults. Rather than using default Kobo layout, it is possible to store your Kobo device layout in one folder and your DB in another but the underlying assumption is that it will try to operate upon a folder as if it has epubs and what not in addition to being able to query a database
func (*Kobo) Connect ¶
Connect will do some sanity checking around the configured database path and upon passing, will instantiate the connection to the underlying Kobo sqlite database
func (*Kobo) Disconnect ¶
Disconnect can be called to shut down the underlying database connection. This is generally done when switching from one database to another.