API to create fancy cards for FFXIV characters based on their Lodestone data, hosted at https://ffxiv-character-cards.herokuapp.com.
Find a file
arcanedisgea 626d8138ae 1.4.1
2021-12-07 15:42:15 -05:00
.github/workflows clean up release with ay suggestions 2021-06-04 21:57:23 -04:00
resources less pixelated this time 2021-12-03 13:26:19 -05:00
.gitignore ignore package-lock 2021-06-04 21:59:25 -04:00
.npmignore Add .github to .npmignore 2021-05-28 02:30:55 -07:00
create-card.js fix scholar levels 2021-12-07 15:39:50 -05:00
create-ilvl-filter.js Updated createIlvlFilter to include xivApiKey 2021-10-25 16:42:13 +02:00
gh-pages.js Updated gh-pages to similar styling 2021-10-25 16:42:28 +02:00
index.js Added init complete log to server 2021-10-25 16:47:40 +02:00
LICENSE Create LICENSE 2021-05-27 12:41:32 -04:00
package.json 1.4.1 2021-12-07 15:42:15 -05:00
readme.md Updated README 2021-10-25 16:48:33 +02:00
yarn.lock Added rate limiter to all XIV API requests 2021-10-25 16:40:39 +02:00

XIV Character Cards

npm Version Documentation

Library and API to create fancy cards for FFXIV characters based on their Lodestone data, powered by xivapi.com and hosted at https://ffxiv-character-cards.herokuapp.com.

Demo image

API

All API calls support the lang query parameter to create a character card with information in the specified language. The supported languages are the same as xivapi.com, which are English (en), Japanese (ja), German (de) and French (fr).

E.g. a request for a german character card would look like this: https://ffxiv-character-cards.herokuapp.com/characters/id/<LODESTONE ID>.png?lang=de

Getting a card for a character by its Lodestone ID

GET https://ffxiv-character-cards.herokuapp.com/characters/id/<LODESTONE ID>.png

Getting card for a character by its world and name

GET https://ffxiv-character-cards.herokuapp.com/characters/name/<WORLD>/<CHARACTER NAME>.png
Note: This is considerably slower than the creation by ID, since the character has to be looked up in the Lodestone first.


If you are using this API together with an application that requires the API to respond very quickly, like Discord, you may need to ask it to "prepare" the card image for a character beforehand. The API will reply with its status, and in case of success, the URL to the final image. {"status":"ok","url":"/characters/id/123456789.png"}

Requesting a card to be cached for a character by its Lodestone ID

GET https://ffxiv-character-cards.herokuapp.com/prepare/id/<LODESTONE ID>

Requesting a card to be cached for a character by its world and name

GET https://ffxiv-character-cards.herokuapp.com/prepare/name/<WORLD>/<CHARACTER NAME>

Library

To use the card creator as a library in your Node.JS application, first install it as a dependency with:

yarn add xiv-character-cards
# or
npm i xiv-character-cards

You can then instantiate the class CardCreator from the library, call the asynchronous insureInit() function to make sure all resources are loaded and then use the asynchronous createCard() function with your characters Lodestone ID. You will receive a promise that resolves to a Buffer of the PNG image of your card, that you can use in your bot or application.

Check the library documentation for more details.

Note: The API server is not published as an NPM package, so if you want to host it yourself, clone the Github repository and put the Express.JS webserver defined in the index.js file behind a reverse proxy.

Library example

const { CardCreator } = require("xiv-character-cards");
const { writeFileSync } = require("fs");

const creator = new CardCreator();
const lodestoneId = "13821878";

async function example() {
  await creator.ensureInit();
  return creator.createCard(lodestoneId);
}

example()
  .then(card => {
    writeFileSync(`./${lodestoneId}.png`, card);
  })
  .catch(error => {
    console.error('Creator initialization or card creation failed!');
    console.error(error);
  });