npm.io
1.2.0 • Published 1 month ago

comicgeeks

Licence
MIT
Version
1.2.0
Deps
2
Size
53 kB
Vulns
0
Weekly
0
Stars
8

comicgeeks

A NodeJS module to get data from League of Comic Geeks

npm install comicgeeks

Features

  • Fetching weekly release lists
  • Fetching search results
  • Fetching user pull lists
  • Fetching user collections
  • Fetching user wish lists
  • Filter by publisher, comic format, etc
  • Sort by pull count, community rating, price, alphabetically, etc

Usage

View the full documentation here.

Every method to retrieve data is prefixed with fetch:

  • fetchReleases
  • fetchSearchResults
  • fetchPulls
  • fetchCollection
  • fetchWishList

Each method returns a Promise that resolves with the data. Here are a few examples:

const { fetchReleases, FilterTypes } = require("comicgeeks");
// ES Module or TypeScript: import { fetchReleases, FilterTypes } from 'comicgeeks';

// Fetch regular, digital, and annual DC Comics issues that released on 2020-12-15, and sort them alphabetically
fetchReleases("2020-12-15", {
	publishers: ["DC Comics"],
	filter: [FilterTypes.Regular, FilterTypes.Digital, FilterTypes.Annual],
	sort: SortTypes.AlphaAsc,
})
	// Resolves to an array of objects
	.then(console.log)
	.catch(console.error);

The return objects will look something like this:

{
    name: 'Batman #105',
    publisher: 'DC Comics',
    url: 'https://leagueofcomicgeeks.com/comic/9430629/batman-105',
    cover: 'https://s3.amazonaws.com/comicgeeks/comics/covers/large-9430629.jpg?1612100060',
    description: 'GHOST STORIES, PART 4 Batman battles Ghost-Maker in the no-holds-barred, bloody conclusion of this epic tale…winner take Gotham City! And the outcome is not what you’re expecting! The future of Gotham City and the fate of...',
    price: '$3.99',
    rating: 84,
    pulls: 9288,
    potw: 2
}

Let's try search results.

const { fetchSearchResults, CollectionTypes } = require("comicgeeks");

// Search for 'batman' in issue format
fetchSearchResults("batman", CollectionTypes.Issue)
	// Will resolve to an array of objects, similar to the one above
	.then(console.log)
	.catch(console.error);

When fetching user specific data, things become a bit more complicated. Each method will take the user's ID as the first parameter. There is a helper method, fetchUser to retrieve the ID from a username.

const { fetchUser } = require("comicgeeks");

fetchUser("demo_user_123").then(console.log).catch(console.error);

/*
{
    id: 12345678,
    name: 'demo_user_123',
    url: 'https://leagueofcomicgeeks.com/profile/demo_user_123',
    avatar: 'https://s3.amazonaws.com/comicgeeks/avatars/large-12345678.jpg?t=1609863575'
}
 */

Let's try fetching a pull list, collection, and wish list.

const {
	CollectionTypes,
	fetchCollection,
	fetchPulls,
	fetchUser,
	fetchWishList,
	SortTypes,
} = require("comicgeeks");

fetchUser("demo_user_123")
	// async/await syntax
	.then(async (user) => {
		// Fetch the collection
		const collection = await fetchCollection(
			user.id,
			CollectionTypes.Series,
			{
				sort: SortTypes.AlphaAsc,
			},
		);

		// Fetch the pull list and order by most pulled
		const pullList = await fetchPulls(user.id, "2021-01-05", {
			sort: SortTypes.MostPulled,
		});

		// Fetch the wish list and order by price
		const wishList = await fetchWishList(user.id, CollectionTypes.Series, {
			sort: SortTypes.HighPrice,
		});

		// Do stuff with the data
	})
	.catch(console.error);