Uses the Best Signatures API to generate, display, and refresh World of Warcraft character signature graphics.
Best Signatures is my personal favorite forum signature image generator for World of Warcraft forums, but its biggest flaw is that it doesn't automatically refresh images. It does provide an API, which is rate-limited to ten requests per character per day.
What this simple Sinatra app does is:
-
Take a region, realm, and character name as part of the URL (e.g.,
http://bestsigs-wow-cacher.herokuapp.com/us/Earthen Ring/Adarystus.png
). -
Build and make a request to the Best Signatures API, which causes a signature image to be generated, then uploads the generated image to Amazon S3.
-
Responds to requests for the character's image with an HTTP 303 redirect to the image's URL on S3.
-
After a time delay (currently three hours), repeats steps 2 and 3 to generate and save a new image, overwriting the old image for that character.
The homepage now includes an HTML form that can be used to generate the image URL given the region, realm name, and character name, as well as a BBCode snippet that can be used directly in a forum post or signature.
What the image URLs look like:
http://bestsigs-wow-cacher.herokuapp.com/us/Earthen Ring/Adarystus.png
Replace us
with your region (e.g., eu
, kr
). Replace Earthen Ring
with your realm name (e.g. Spinebreaker
). Replace Adarystus
with
your character name (e.g. Vqshorkhas
). Use the URL in an image tag in
a forum signature or on a web page. Only a single realm and character
can be specified in an image URL.
A BBCode usage sample:
[url="http://us.battle.net/wow/en/character/Earthen Ring/Adarystus/"][img]http://bestsigs-wow-cacher.herokuapp.com/us/Earthen Ring/Adarystus.png[/img][/url]
What the image looks like:
-
Let you specify what kind of signature graphic to generate. I have lots of characters and like having them all displayed, and I prefer a row of spherical portrait icons.
-
Let you specify any customization at all for the signature graphic.
-
Let you force it to refresh. Depending on performance, I may shorten the refresh time to come closer to the API rate limit.