[add] editing
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user