
Universalis
A crowdsourced market board aggregator.
Endpoint Reference
- /api/:world/:item
- /api/history/:world/:item
- /api/tax-rates
- /api/extra/content/:contentID
- /api/extra/stats/upload-history
- /api/extra/stats/recently-updated
- /api/extra/stats/least-recently-updated
- /api/extra/stats/world-upload-counts
- /upload/:apiKey
Client-app Development
Please see goat’s ACT plugin for an example of how to collect and upload market board data.
Development
Requires Node.js v10 or higher, PHP, MariaDB, Redis, Composer, and MongoDB Community Edition v4.2 or higher.
Also build a DataExports and an icon2x by running the exporter solution.
Uncomment/add in php.ini:
extension=redis.so
MariaDB commands:
CREATE DATABASE `dalamud`;
CREATE USER 'dalamud'@localhost IDENTIFIED BY 'dalamud';
Setup script:
npm install -g yarn
npm install
git submodule init
git submodule update
cd mogboard
git submodule init
git submodule update
composer install
php bin/console doctrine:schema:create
php bin/console PopulateGameDataCommand -vvv
php bin/console ImportTranslationsCommand -vvv
yarn
yarn dev
symfony server:start -vvv --port 8000
cd ..
npm run build
npm start
To update
Go to the mogboard/ folder, and execute the following commands after adding any new front-end data.
sudo rm -rf var/
sudo redis-cli FLUSHALL
sudo php bin/console PopulateGameDataCommand -vvv
sudo php bin/console ImportTranslationsCommand -vvv
sudo chmod 0777 var/ -R
sudo rm -rf var/ && sudo redis-cli FLUSHALL && sudo php bin/console PopulateGameDataCommand -vvv && sudo php bin/console ImportTranslationsCommand -vvv && sudo chmod 0777 var/ -R
Uploads
Listings upload format (JSON):
{
worldID: number;
itemID: number;
uploaderID: string | number;
listings: [{
listingID: string;
hq: boolean;
materia?: ItemMateria[];
pricePerUnit: number;
quantity: number;
total?: number;
retainerID: string;
retainerName: string;
retainerCity: number;
creatorName?: string;
onMannequin?: boolean;
sellerID: string;
creatorID?: string;
lastReviewTime: number;
stainID?: number;
}];
}
History upload format (JSON):
{
worldID: number;
itemID: number;
uploaderID: number | string;
entries: [{
hq: boolean;
pricePerUnit: number;
quantity: number;
total?: number;
buyerName: string;
timestamp: number;
onMannequin?: boolean;
sellerID: string;
}];
}
Crafter upload format (JSON):
{
contentID: number;
characterName: string;
}
评论