QUOTE(hzqr @ Dec 9 2016, 23:38)

c) Unregulated API access might arguably become a problem eventually; if you keep installing scripts that communicate with the API directly, sooner or later you're going to trigger the API's flood protection (or whatever it's called)
This was my workaround for that without creating another system to handle it:
CODE
function parseMetadatas(response){
response.gmetadata.forEach(function(dataResponse){
...
it5.setAttribute('metadataInfo', JSON.stringify(dataResponse));
(IMG:[
invalid]
style_emoticons/default/tongue.gif)
QUOTE(hzqr @ Dec 9 2016, 23:38)

Right now, the Support limits the number of requests sent to the server to 1 per second. I'm not totally sure that won't irk the flood protection mechanism if you send very large requests (lot of galleries), but it seems to work.
I'm pretty sure it's safe to make multiple requests right after another as long as you don't make more than, say, 20 at once (and then give it a bit of time to cool down afterward). My Tag Check occasionally makes ~30 requests at once and I've never seen a problem.
QUOTE(hzqr @ Dec 9 2016, 23:38)

IndexedDB would probably a better pick for storage, but I'm not going near that thing with a ten foot pole.
The code required for it is really annoying but I ran into localStorage limits really quickly with my
SmartSearch. If you want, feel free to copy the IndexedDB interaction functions (near the bottom: dbDelete, dbCreate, dbSet, dbGet), I made them to be able to (nearly) set/get storage with the same ease as localStorage (just with one more callback).