diff options
Diffstat (limited to 'skate/schema.go')
-rw-r--r-- | skate/schema.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/skate/schema.go b/skate/schema.go index 83ceea3..ad28389 100644 --- a/skate/schema.go +++ b/skate/schema.go @@ -88,6 +88,8 @@ type Release struct { Core string `json:"core,omitempty"` WikidataQID string `json:"wikidata_qid,omitempty"` Jstor string `json:"jstor,omitempty"` + ISBN10 string `json:"isbn10,omitempty"` + ISBN13 string `json:"isbn13,omitempty"` } `json:"ext_ids,omitempty"` Ident string `json:"ident,omitempty"` Publisher string `json:"publisher,omitempty"` @@ -314,3 +316,54 @@ func (c *MinimalCitations) ParseIDList() (result IDList) { } return result } + +// OpenLibraryWork from data dump (solr). +type OpenLibraryWork struct { + AuthorFacet []string `json:"author_facet"` + AuthorKey []string `json:"author_key"` + AuthorName []string `json:"author_name"` + CoverEditionKey string `json:"cover_edition_key"` + CoverI int64 `json:"cover_i"` + EbookCountI int64 `json:"ebook_count_i"` + EditionCount int64 `json:"edition_count"` + EditionKey []string `json:"edition_key"` + FirstPublishYear int64 `json:"first_publish_year"` + HasFulltext bool `json:"has_fulltext"` + IdGoodreads []string `json:"id_goodreads"` + IdLibrarything []string `json:"id_librarything"` + Isbn []string `json:"isbn"` + Key string `json:"key"` + Language []string `json:"language"` + LastModifiedI int64 `json:"last_modified_i"` + PublishDate []string `json:"publish_date"` + PublishYear []int64 `json:"publish_year"` + Publisher []string `json:"publisher"` + PublisherFacet []string `json:"publisher_facet"` + Seed []string `json:"seed"` + Text []string `json:"text"` + Title string `json:"title"` + TitleSuggest []string `json:"title_suggest"` + Type string `json:"type"` + Version int64 `json:"_version_"` +} + +// OpenLibraryToRelease convert OL data into a release. XXX: release/work? +func OpenLibraryToRelease(w *OpenLibraryWork) (*Release, error) { + var ( + release Release + contribs = make([]struct { + Index int `json:"index,omitempty"` + RawName string `json:"raw_name,omitempty"` + Role string `json:"role,omitempty"` + }, len(w.AuthorName)) + ) + for i, author := range w.AuthorName { + contribs[i].RawName = author + } + release.Title = w.Title + if len(w.PublishYear) > 0 { + release.ReleaseYearValue = w.FirstPublishYear + } + // XXX: isbn normalization + return nil, nil +} |