npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

quotebook-api

v1.0.7

Published

npm package for quotebook

Downloads

15

Readme

Quotebook API

The Quotebook API JavaScript library provides simple access to Quotebook API for applications written in server-side JavaScript.

Currently, we have a growing database of over 80,000+ quotes from 20,000+ authors and up to 120 different tags. Search by authors and tags to retrieve quotes in bulk or in single quotes.

Note: We don't recommend using Quotebook API in client-side JavaScript in the browser because it will leak your API key to the public.

If you have any questions, please contact [email protected].

Installation

Install the official NPM package of the Quotebook API:

npm install quotebook-api --save
# or
yarn add quotebook-api

Requirements

* Node 10 or higher

Usage

The library needs to be configured to your account's API key. Set apiKey to it's value:

const { Client } = require("quotebook-api");
const client = Client({ apiKey: "api-key122345" });

client
  .fetchRandom()
  .then(response => console.log(response.data.result))
  .catch(e => console.log(e));

If apiKey is null, then the request will fail. Please use the test apiKey which is api-key122345.

API Reference

Retrieve a random quote

const { Client } = require("quotebook-api");
const client = Client({ apiKey: "api-key122345" });

// Promise
client
  .fetchRandom()
  .then(response => console.log(response.data.result))
  .catch(e => console.log(e));

// Async-Await
(async () => {
  try {
    const response = await client.fetchRandom();
    return console.log(response.data.result);
  } catch (e) {
    return console.log(e);
  }
})();

Search for quote

const { Client } = require("quotebook-api");
const client = Client({ apiKey: "api-key122345" });

// Promise
client
  .search({ q: "I can't change the direction of the wind" })
  .then(response => console.log(response.data.result))
  .catch(e => console.log(e));

// Async-Await
(async () => {
  try {
    const response = await client.search({
      q: "I can't change the direction of the wind"
    });
    return console.log(response.data.result);
  } catch (e) {
    return console.log(e);
  }
})();

Retrieve author names - in bulk of 30

const { Client } = require("quotebook-api");
const client = Client({ apiKey: "api-key122345" });

// Promise
client
  .fetchAllAuthors()
  .then(response => console.log(response.data.result))
  .catch(e => console.log(e));

// Async-Await
(async () => {
  try {
    const response = await client.fetchAllAuthors();
    return console.log(response.data.result);
  } catch (e) {
    return console.log(e);
  }
})();

Retrieve a quote based on author name

const { Client } = require("quotebook-api");
const client = Client({ apiKey: "api-key122345" });

// Promise
client
  .fetchByAuthor({ q: "Bruce Lee" })
  .then(response => console.log(response.data.result))
  .catch(e => console.log(e));

// Async-Await
(async () => {
  try {
    const response = await client.fetchByAuthor({ q: "Bruce Lee" });
    return console.log(response.data.result);
  } catch (e) {
    return console.log(e);
  }
})();

Retrieve list of all tags - 117 in total

const { Client } = require("quotebook-api");
const client = Client({ apiKey: "api-key122345" });

// Promise
client
  .fetchAllTags()
  .then(response => console.log(response.data.result))
  .catch(e => console.log(e));

// Async-Await
(async () => {
  try {
    const response = await client.fetchAllTags();
    return console.log(response.data.result);
  } catch (e) {
    return console.log(e);
  }
})();

Retrieve by tag - in bulk of 30

const { Client } = require("quotebook-api");
const client = Client({ apiKey: "api-key122345" });

// Promise
client
  .fetchByTag({ q: "age" })
  .then(response => console.log(response.data.result))
  .catch(e => console.log(e));

// Async-Await
(async () => {
  try {
    const response = await client.fetchByTag({ q: "age" });
    return console.log(response.data.result);
  } catch (e) {
    return console.log(e);
  }
})();

Testing

Unit tests are available for each feature:

  • GET Health Check
  • GET Authentication error (failed to pass in API key)
  • GET Random Quote
  • GET All Authors
  • GET All Quotes by Author
  • GET List of Tags
  • GET All Quotes by Tag
  • GET Search for similar Quote
npm run test

Miscellaneous

Each request is limited to 30 quotes. To increase the limit, kindly email [email protected]!

Contributions

We are happy to accept any pull requests from individual contributors so long as they have well defined tests.

Feature Requests

Please reach out to us for any feature requests and we will try to allocate resources for it.