[add] editing

This commit is contained in:
2023-09-23 14:14:57 -04:00
parent 3150c89303
commit 4b0bbda017
7 changed files with 526 additions and 88 deletions

View File

@@ -46,48 +46,56 @@ const GBOOKS_QUERY_URL string = "https://www.googleapis.com/books/v1/volumes?q=%
const GBOOKS_GBID_INFO_URL string = "https://www.googleapis.com/books/v1/volumes/%s"
const GBOOKS_GBID_COVER_URL string = "https://books.google.com/books/content/images/frontcover/%s?fife=w480-h690"
func GetMetadata(data *MetadataInfo) error {
var queryResult *gBooksQueryItem
if data.GBID != nil {
func GetMetadata(metadataSearch MetadataInfo) ([]MetadataInfo, error) {
var queryResults []gBooksQueryItem
if metadataSearch.GBID != nil {
// Use GBID
resp, err := performGBIDRequest(*data.GBID)
resp, err := performGBIDRequest(*metadataSearch.GBID)
if err != nil {
return err
return nil, err
}
queryResult = resp
} else if len(data.ISBN) > 0 {
searchQuery := "isbn:" + *data.ISBN[0]
queryResults = []gBooksQueryItem{*resp}
} else if len(metadataSearch.ISBN) > 0 {
searchQuery := "isbn:" + *metadataSearch.ISBN[0]
resp, err := performSearchRequest(searchQuery)
if err != nil {
return err
return nil, err
}
queryResult = &resp.Items[0]
} else if data.Title != nil && data.Author != nil {
searchQuery := url.QueryEscape(fmt.Sprintf("%s %s", *data.Title, *data.Author))
queryResults = resp.Items
} else if metadataSearch.Title != nil && metadataSearch.Author != nil {
searchQuery := url.QueryEscape(fmt.Sprintf("%s %s", *metadataSearch.Title, *metadataSearch.Author))
resp, err := performSearchRequest(searchQuery)
if err != nil {
return err
return nil, err
}
queryResult = &resp.Items[0]
queryResults = resp.Items
} else {
return errors.New("Invalid Data")
return nil, errors.New("Invalid Data")
}
// Merge Data
data.GBID = &queryResult.ID
data.Description = &queryResult.Info.Description
data.Title = &queryResult.Info.Title
if len(queryResult.Info.Authors) > 0 {
data.Author = &queryResult.Info.Authors[0]
}
for _, item := range queryResult.Info.Identifiers {
if item.Type == "ISBN_10" || item.Type == "ISBN_13" {
data.ISBN = append(data.ISBN, &item.Identifier)
// Normalize Data
allMetadata := []MetadataInfo{}
for _, item := range queryResults {
itemResult := MetadataInfo{
GBID: &item.ID,
Title: &item.Info.Title,
Description: &item.Info.Description,
}
if len(item.Info.Authors) > 0 {
itemResult.Author = &item.Info.Authors[0]
}
for _, item := range item.Info.Identifiers {
if item.Type == "ISBN_10" || item.Type == "ISBN_13" {
itemResult.ISBN = append(itemResult.ISBN, &item.Identifier)
}
}
allMetadata = append(allMetadata, itemResult)
}
return nil
return allMetadata, nil
}
func SaveCover(id string, safePath string) error {