Spore

From Archiveteam
Jump to navigation Jump to search
Spore
Spore.com - 29072022.png
URL http://www.spore.com/[IAWcite.todayMemWeb]
Status Online!
Archiving status In progress... (API data)
Saved! (website)
Archiving type Unknown
IRC channel #archiveteam-bs (on hackint)

Spore is a video game developed by Maxis and published by Electronic Arts. The game allows players to create customized creatures, buildings, vehicles, adventures (with expansion pack Spore: Galactic Adventures) and share them with other players via official game site, Spore.com, by publishing creations in-game or via third-party resources by publishing their 128x128 .png thumbnails without any postprocessing. (Data is embedded within the lowest bits of each pixel of those thumbnails.[1][2][3])

Numeric IDs

Spore website uses 12-digit numeric IDs for assets, users, sporecasts (feeds) and postcards (there are some bugged/technical assets that have short IDs with < 12 digits). In theory, one ID can be assigned to 2 or more entries, for example, an asset and a postcard.

Most of the IDs start with 500* or 501* (since 2015-01-01 16:54:20).

300* IDs are related to the staging server of Maxis.

600* IDs don't happen on the official Spore website, though fan-made server for Spore uses them. [4]

Site API

Public

Official Spore API documentation is available here: http://www.spore.com/comm/samples

URL Comments
Static Data /static/model/<subId1>/<subId2>/<subId3>/<AssetId>.xml

Asset XML model.

Sub IDs are 3 digit partitions of the Asset ID (like 500:123:456:789).
Should be requested on static subdomain which uses CDN.

/static/thumb/<subId1>/<subId2>/<subId3>/<AssetId>.png

Asset PNG 128x128 thumbnail. Can be imported into the game.

Sub IDs are 3 digit partitions of the Asset ID (like 500:123:456:789).
Should be requested on static subdomain which uses CDN.

/static/image/<subId1>/<subId2>/<subId3>/<AssetId>_lrg.png

/static/image/<subId1>/<subId2>/<subId3>/<AssetId>_2_lrg.png
/static/image/<subId1>/<subId2>/<subId3>/<AssetId>_3_lrg.png
/static/image/<subId1>/<subId2>/<subId3>/<AssetId>_4_lrg.png

Asset PNG 256x256 image.

_2_, _3_, _4_ are for additional adventure images.
Sub IDs are 3 digit partitions of the Asset ID (like 500:123:456:789).
Should be requested on static subdomain which uses CDN.

/static/postcard/<Date>/<subId1>/<subId2>/<subId3>/<PostcardId>.jpg (.png)

Postcard image.

Date is the date when the postcard was sent (YYYYMMDD).
Sub IDs are 2 digit partitions of the Postcard ID (like 5002:72:39:83:32).
Should be requested on static subdomain which uses CDN, although the site itself only uses www for postcards.

REST Service /rest/stats

Get daily stats about Spore.com.

/rest/creature/<CreatureAssetId>

Get various stats like height, diet, abilities etc. for a creature.

Returns <status>0</status> if the asset is not a creature or if the ID is invalid.

/rest/user/<Username>

Get profile pic, tagline, user id and creation date for a username.

Returns <status>0</status> if the username is invalid.
Note that all the non-ASCII symbols will be replaced with ? in the response.

/rest/assets/user/<Username>/<StartIndex>/<Length>/<AssetType>

Get asset id, name, creation date, type, parent and rating for a list of assets created by a user.

Always returns <status>1</status>.
Maximum length is 500 assets per request.
Ignores additional adventure images.
Note that all the non-ASCII symbols will be replaced with ? in the response.

/rest/sporecasts/<Username>

Get id, name, tags, subscription count, rating etc. for Sporecasts subscribed to by a user.

Returns <status>0</status> if the username is invalid.
Maximum length is unknown.
Note that all the non-ASCII symbols will be replaced with ? in the response.

/rest/assets/sporecast/<SporecastId>/<StartIndex>/<Length>

Get asset id, and name for assets in a sporecast.

Returns both <status>1</status> and <status>0</status> if the sporecast ID is invalid.
Maximum length is 500 assets per request.
Ignores additional adventure images.
Note that all the non-ASCII symbols will be replaced with ? in the response.

/rest/achievements/<Username>/<StartIndex>/<Length>

Get number of achievements for user and a list of achievement ids and unlock-dates.

Returns <status>0</status> if the username is invalid.
Maximum length is 500 achievements per request (real maximum achievements count is 151, 102 vanilla + 49 Galactic Adventures EP).
Note that all the non-ASCII symbols will be replaced with ? in the response.

/rest/asset/<AssetId>

For a given asset id, get name, description, tags, 10 latest comments, type, parent, rating, creation date and author name/id.

Returns <status>0</status> if the asset ID is invalid.
Note that all the non-ASCII symbols will be replaced with ? in the response.

/rest/comments/<AssetId>/<StartIndex>/<Length>

For a given asset id, get a list of comments, sender names and comment dates.

Returns <status>0</status> if the asset ID is invalid.
Maximum length is unknown.
Note that all the non-ASCII symbols will be replaced with ? in the response.

/rest/users/buddies/<Username>/<StartIndex>/<Length>

For a given username, get a list of buddy names and ids and total buddy count.

Returns <status>0</status> if the username is invalid.
Maximum length is unknown.
Note that all the non-ASCII symbols will be replaced with ? in the response.

/rest/users/subscribers/<Username>/<StartIndex>/<Length>

For a given username, get the list of users who have added that username as a buddy.

Returns <status>0</status> if the username is invalid.
Maximum length is 500 users per request.
Note that all the non-ASCII symbols will be replaced with ? in the response.

/rest/assets/search/<ViewType>/<StartIndex>/<Length>/<AssetType>

List creations for a given view.

View types:
TOP_RATED TOP_RATED_NEW NEWEST OLDEST FEATURED MAXIS_MADE RANDOM CUTE_AND_CREEPY TOP_RATED THERESA_VISION ALL

Asset types:
CREATURE BUILDING VEHICLE UFO ADVENTURE

Selects NEWEST view if the requested one doesn't exist.
Ignores asset type if the requested one doesn't exist.
Maximum length is 500 assets per request.
Note that all the non-ASCII symbols will be replaced with ? in the response.

/rest/assets/find/<Query>/<StartIndex>/<Length>/<AssetType>

Unmentioned endpoint, find creations for a query.

Query example: is_quality:true AND !author:MaxisCactus AND (tags:cat OR name:cat)

  1. Creation has 2 rates up or more (is_quality:true)
  2. The author is NOT MaxisCactus (!author:MaxisCactus)
  3. The name OR tags of the creation have "cat" in them ((tags:cat OR name:cat))

Known conditions:

id (number: ID of the creation)
name / plain text (string: name of the creation)
author (string: username of the author of the creation)
description (string: description of the creation)
tags (string: tags of the creation)
locale (BROKEN)
is_quality (bool: does the creation have 2+ rates up or not)
is_featured (bool: is the creation featured or not)

Asset types:
CREATURE BUILDING VEHICLE UFO ADVENTURE

Returns <status>0</status> if nothing found or the query is invalid.
Returns 500 if the query is missing (//).
Ignores asset type if the requested one doesn't exist.
Maximum length is 500 assets per request.
Note that all the non-ASCII symbols will be replaced with ? in the response.

ATOM Feeds /atom/news

Get Spore News feed.

/atom/assets/user/<Username>

Get a feed of all the assets for user. Asset name, description, type, creation date, PNG and XML links are included.

Returns 404 if the username is invalid.

/atom/events/user/<Username>

Get a feed of recent events for user.

Returns 500 if the username is invalid.
Maximum count of events is 20.
Maximum age of events is 1 month.

/atom/events/asset/<AssetId>

Get a feed of recent events for given asset id.

Returns an empty feed if the asset ID is invalid.
Maximum count of events is 20.

/atom/sporecast/<SporecastId>

Get a feed of all the assets in a sporecast, date they were added and links to PNG and XML.

Returns 404 if the sporecast ID is invalid.

/atom/assets/view/<ViewType>/<StartIndex>/<Length>

List creations for a given view.

View types:
TOP_RATED TOP_RATED_NEW NEWEST OLDEST FEATURED MAXIS_MADE RANDOM CUTE_AND_CREEPY TOP_RATED THERESA_VISION ALL

Returns 500 if the requested view doesn't exist.
Maximum length is 20 assets per request.

Internal

URL Method Form Data Comments
Flash Widget /view/user-thumbnail-count/<UserID>/<StartIndex>/<Length> GET

Used for a personal Flash widget, which can be grabbed on this page: http://www.spore.com/view/tools/widget

Returns an XML with user tagline and a list of assets with their IDs, names and thumbnail links.
The widget itself sends only /0/100 requests, although this request has no length limit.

DWR Interface W.I.P. POST W.I.P. Should be researched in the future.

Tools

  • SporeTools - a simple collection of tools for Spore written in TypeScript. Includes DWR API client.
  • Spore PNG Downloader - a simple CLI app that downloads all creations by a specific user or in a specific feed (only 128x128 thumbnails).
  • sporeget - a Docker image with CLI utility, saves the creations into .warc files using wget-lua with all the additional data available through GET.
  • spore_id_gatherer - a Rust code that brutes asset IDs that have existing thumbnails in the filestore.

References