@@ -25,15 +25,15 @@ type Reader struct {
25
25
width , height int
26
26
fname string
27
27
//
28
- asin , cdetype , assetID , bookID , cover string
29
- thumbnail []byte
28
+ asin , cdetype , assetID , bookID string
29
+ thumbnail []byte
30
30
}
31
31
32
32
func (r * Reader ) String () string {
33
33
if r == nil {
34
34
return "nil"
35
35
}
36
- return fmt .Sprintf ("asin: %s, cdetype: %s, asset_id: %s, book_id: %s, cover_image: %s " , r .asin , r .cdetype , r .assetID , r .bookID , r . cover )
36
+ return fmt .Sprintf ("asin: %s, cdetype: %s, asset_id: %s, book_id: %s" , r .asin , r .cdetype , r .assetID , r .bookID )
37
37
}
38
38
39
39
func NewReader (fname string , w , h int , log * zap.Logger ) (* Reader , error ) {
@@ -133,6 +133,9 @@ func (r *Reader) extractThumbnail(data []byte) error {
133
133
if err := decodeIon (lstProlog , metaEntys [0 ].data , & bmd ); err != nil {
134
134
return err
135
135
}
136
+
137
+ // NOTE: we expect a single metadata entity with category "kindle_title_metadata"
138
+ var coverResourceName string
136
139
if index := slices .IndexFunc (bmd .CategorizedMetadata , func (p properties ) bool {
137
140
if p .Category == "kindle_title_metadata" {
138
141
for _ , prop := range p .Metadata {
@@ -146,7 +149,7 @@ func (r *Reader) extractThumbnail(data []byte) error {
146
149
case "book_id" :
147
150
r .bookID = prop .Value .(string )
148
151
case "cover_image" :
149
- r . cover = prop .Value .(string )
152
+ coverResourceName = prop .Value .(string )
150
153
}
151
154
}
152
155
return true
@@ -156,12 +159,12 @@ func (r *Reader) extractThumbnail(data []byte) error {
156
159
return errors .New ("no kindle book metadata found" )
157
160
}
158
161
159
- if r .cdetype != "EBOK" || len (r .asin ) == 0 || len (r . cover ) == 0 {
162
+ if r .cdetype != "EBOK" || len (r .asin ) == 0 || len (coverResourceName ) == 0 {
160
163
// bail out early - we are only interested in non-personal books
161
164
return nil
162
165
}
163
166
164
- coverEnty , err := entities .getByName (r . cover , symExternalResource )
167
+ coverEnty , err := entities .getByName (coverResourceName , symExternalResource )
165
168
if err != nil {
166
169
return fmt .Errorf ("unable to get cover image entity: %w" , err )
167
170
}
0 commit comments