The star-citizen.wiki API. Automatically scrapes Comm-Links, Stats and the Ship-Matrix.
The documentation can be found at https://docs.star-citizen.wiki.
Using docker and docker-compose
Pull scwiki/api
or build the image:
$ ./docker-build.sh
Create the folders:
$ mkdir -p ./var/lib/api.star-citizen.wiki/storage
$ mkdir -p ./var/lib/api.star-citizen.wiki/logs
$ mkdir -p ./var/lib/api.star-citizen.wiki/db
$ touch ./var/lib/api.star-citizen.wiki/db/db.sqlite
$ mkdir -p ./etc/api.star-citizen.wiki
Create the production environment file:
Paste content into ./etc/api.star-citizen.wiki/env-production
.
APP_URL=http://localhost
APP_ENV=local
APP_DEBUG=false
APP_KEY=
LOG_LEVEL=info
# Run Jobs through the queue container
QUEUE_DRIVER=database
# Set to true to skip MediaWiki OAuth and always login with an admin account
# DO NOT USE IN PRODUCTION
ADMIN_AUTH_USE_STUB=true
# SQLITE
DB_CONNECTION=sqlite
DB_DATABASE=db.sqlite
# MYSQL
# DB_HOST=db
# DB_DATABASE=CHANGE_ME
# DB_USERNAME=CHANGE_ME
# DB_PASSWORD=CHANGE_ME
MAIL_DRIVER=smtp # OR log
MAIL_HOST=
MAIL_FROM_ADDRESS=
MAIL_FROM_NAME=
MAIL_USERNAME=
MAIL_PASSWORD=
#WIKI_URL=https://star-citizen.wiki
#WIKI_API_URL=https://star-citizen.wiki/api.php
# MediaWiki Bot credentials for accessing the MW API
WIKI_OAUTH_ID=
WIKI_OAUTH_SECRET=
# For Creating automated Comm-Link pages on the wiki
# Requires an the OAuth extension and an active app
WIKI_TRANS_OAUTH_CONSUMER_TOKEN=
WIKI_TRANS_OAUTH_CONSUMER_SECRET=
WIKI_TRANS_OAUTH_ACCESS_TOKEN=
WIKI_TRANS_OAUTH_ACCESS_SECRET=
# Translated text to use for wiki comm-link pages Default de_DE
WIKI_TRANS_LOCALE=
# DEEPL Access key for automated Comm-Link translations
DEEPL_AUTH_KEY=
# Target language of DeepL Translations Default: DE
DEEPL_TARGET_LOCALE=
SC_DATA_VERSION=3.13
version: '3'
services:
api.star-citizen.wiki:
image: scwiki/api:dev
container_name: api.star-citizen.wiki
restart: unless-stopped
security_opt:
- no-new-privileges:true
ports:
- 127.0.0.1:8000:80
environment:
CONTAINER_ROLE: app
volumes:
- ./var/lib/api.star-citizen.wiki/storage:/var/www/html/storage/app
- ./var/lib/api.star-citizen.wiki/logs:/var/www/html/storage/logs
- ./var/lib/api.star-citizen.wiki/db/db.sqlite:/var/www/html/database/db.sqlite
- ./etc/api.star-citizen.wiki/env-production:/var/www/html/.env
- /etc/localtime:/etc/localtime:ro
scheduler:
image: scwiki/api:dev
restart: unless-stopped
security_opt:
- no-new-privileges:true
depends_on:
- api.star-citizen.wiki
volumes:
- ./var/lib/api.star-citizen.wiki/storage:/var/www/html/storage/app
- ./var/lib/api.star-citizen.wiki/logs:/var/www/html/storage/logs
- ./var/lib/api.star-citizen.wiki/db/db.sqlite:/var/www/html/database/db.sqlite
- ./etc/api.star-citizen.wiki/env-production:/var/www/html/.env
- /etc/localtime:/etc/localtime:ro
environment:
CONTAINER_ROLE: scheduler
queue:
image: scwiki/api:dev
restart: unless-stopped
security_opt:
- no-new-privileges:true
depends_on:
- api.star-citizen.wiki
volumes:
- ./var/lib/api.star-citizen.wiki/storage:/var/www/html/storage/app
- ./var/lib/api.star-citizen.wiki/logs:/var/www/html/storage/logs
- ./var/lib/api.star-citizen.wiki/db/db.sqlite:/var/www/html/database/db.sqlite
- ./etc/api.star-citizen.wiki/env-production:/var/www/html/.env
- /etc/localtime:/etc/localtime:ro
environment:
CONTAINER_ROLE: queue
Start the container:
docker-compose up -d
Log into the container and run the setup scripts:
$ docker exec -it api.star-citizen.wiki /bin/bash
# In the Container
$ php artisan key:generate
$ php artisan migrate # Confirm
$ php artisan db:seed # Confirm
Users are authorized via OAuth through your wiki.
You'll need to have the Extension:OAuth installed and activated.
Register an oauth app on the wiki, and set the consumer and access tokens in the production environment file.
Users with the administrator group set in the wiki will have admin access on the api.
Alternatively you can set ADMIN_AUTH_USER_STUB=true
in your environment file to disable OAuth-authorization.
Be warned, that this skips the authorization check completely and logs everyone in with an admin account.
The API exposes several commands callable inside the container with php artisan COMMAND
.
All available commands can be listed by calling php artisan
.
To get help for a specific command call php artisan help COMMAND
.
To import all and everything you can run:
php artisan data:populate
This command will import everything but will take multiple hours to days.
You can alternatively skip some parts using the following options:
--skipCommLinks
--skipGalactapedia
--skipStarmap
--skipScUnpacked
All Comm-Link commands require that the database is seeded using php artisan db:seed
!
Inside the container execute
php artisan comm-links:schedule
This will download all Comm-Links, parse them and create metadata.
The import command can be safely stopped by Ctrl+C
.
Comm-Links should be accessible through API_URL/api/comm-links
.
Downloaded Comm-Links can be imported by calling php artisan comm-links:import --all
.
This command will dispatch parsing jobs for every downloaded Comm-Link found in storage/app/comm_links
.
Command: php artisan comm-links:download ID1 ID2 ID3 ...
.
Passing the --import
flag will import the Comm-Links after downloading them.
Passing --overwrite
will force the import even if a Comm-Link file exists locally.
Command: php artisan comm-links:download-images
.
This command downloads all parsed Comm-Link images and saves them locally to storage/app/public/comm_link_images
.
Jobs are dispatched on the comm_link_images
queue. This queue needs to be called manually inside the container using:
php artisan queue:work --queue=comm_link_images
.
Command: php artisan comm-links:images-create-metadata
.
Requests the following metadata for each image: size
, mime_type
, last_modified
.
Without the image metadata no images will be shown on the image index view.
Command: php artisan comm-links:images-create-hashes
.
Creates image hashes used by the reverse image search. Requires present metadata.
php artisan ship-matrix:download --import
Ships should be accessible through API_URL/api/ships
php artisan stats:download --import
The API includes stat dumps from 2012-11-13
until 2018-03-25
. To import the dumps call php artisan db:seed --class StatTableSeeder
.
Stats should be accessible through API_URL/api/stats
php artisan galactapedia:import-categories
php artisan galactapedia:import-articles
php artisan galactapedia:import-properties
Articles should be accessible through API_URL/api/galactapedia
To import the data found in the scunpacked folder run:
php artisan sc:import-items
The schedule container specified in docker-compose
will run the following commands:
- Download current funding statistics daily at 20:00:00
- Import missing Comm-Links every hour
- Download all missing Comm-Links starting at the first each month
- Import the Ship-Matrix twice a day
- Import all available Galactapedia articles daily at 02:00
- Requires to run
galactapedia:import-categories
first
- Requires to run
The API is heavily integrated into the german Star Citizen Wiki.
There is currently no known other installation except api.star-citizen.wiki
You'll have basic API access if you register an account on star-citizen.wiki. Each user gets an API token with almost unlimited rate-limiting.
If you have any questions open an issue on this repository or contact foxftw@star-citizen.wiki