@jamesdanylik/gatsby-source-goodreads

A GatsbyJS source plugin for building websites using GoodReads

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@jamesdanylik/gatsby-source-goodreads
1210.1.04 years ago4 years agoMinified + gzip package size for @jamesdanylik/gatsby-source-goodreads in KB

Readme

gatsby-source-goodreads
Build Status npm package npm package
This is a source plugin for GatsbyJS to pull information from the GoodReads API. It is an alternative to gatsby-source-goodreads by Daniel Oliver, which predates it. While the original pulls these books in under a single node type, the goal in my version is to grabs all the books, author, and shelf information for a single user while preserving the links between data.

Notes on GoodReads API Structure

Note that good reads keeps the books and ratings as seperate data objects; these reviews are what are placed on shelves, not books, and I preserve this relation to provide the most transparant access possible. In short, your data is in the reviews nodes; data on the book itself is in the book node.

Install

npm install --save @jamesdanylik/gatsby-source-goodreads

Configuration

// In your gatsby-config.js
plugins: [
	{
	      resolve: "@jamesdanylik/gatsby-source-goodreads",
	      options: {
						key: '<<YOUR GOODREADS API KEY>>',
						id: '<<USER ID TO TRACK>>'
	      },
	},
	...
]

Provided Queries

Reviews

allGoodreadsReview {
  edges {
    node {
      id
      rating
      votes
      spoiler_flag
      spoilers_state
      recommended_by
      recommended_for
      started_at
      read_at
      date_added
      date_updated
      read_count
      body
      comments_count
      url
      link
      owned
      book {
        id
        # book node here!
        # see book query for all fields
      }
      shelves {
        id
        # shelf nodes here!
        # see shelf query for all fields
      }
    }
  }
}

Shelves

allGoodreadsShelf {
  edges {
    node {
      id
      name
      exclusive
      review_shelf_id
      reviews {
        id
        # reviews nodes here!
        # see review query for all fields
      }
    }
  }
}

Books

allGoodreadsBook {
  edges {
    node {
      id, 
      isbn, 
      isbn13, 
      text_reviews_count, 
      uri, 
      title, 
      title_without_series, 
      image_url, 
      small_image_url, 
      large_image_url, 
      link, 
      num_pages, 
      format, 
      edition_information, 
      publisher, 
      publication_day, 
      publication_month, 
      publication_year, 
      average_rating, 
      ratings_count, 
      description,
      published,
      work {
        id
        uri
      }
      authors {
        id
        # author nodes here!
        # see author query for all fields
      }
      reviews {
        id
        # review nodes here!
        # see review query for all fields
      }
    }
  }
}

Authors

allGoodreadsAuthor {
  edges {
    node {
      id
      name
      role
      image_url
      small_image_url
      link
      average_rating
      ratings_count
      text_reviews_count
      books {
        id
        # book nodes here!
        # see book query for all available fields
      }
    }
  }
}