INTRODUCTIONI've been working lately on an web app that would be a browser for DeviantArt content (and I've called it "Deviant Browser", cool, huh?). So it uses DeviantArt API to communicate with servers (and get the content) and for now only this, so no web scraping or anything - if you've ever used this API you know it has it's limits, but I'll talk about it later.
I guess I wanted to learn something new and create something that is actually somehow useful (at least for me), so it's really made to meet specific user's needs - users like me, who mainly just browse and fave a lot of stuff.
So what this app is now:
- you can browse "popular", "hot", "newest", "undiscovered" tabs (specification of time-frames, categories, etc. is in plans)
- search by phrase and by tag
- browse other users profiles (only their deviations and favorites/collections)
- authenticate the app in DeviantArt to be able to add deviations to your favorites/collections, (un)watch users and browse your watch feed (and to be honest for now I didn't care much to write this app for it to work without authenticating it, but there is some base ground for this prepared!)
BROWSINGHow does it look like? Well, like this:
This is main page with DDs and when you scroll down rest looks like this:
And some details:
Yeah, I like it dark.
I decided that masonry layout would be a good choice and to be honest... it's far from perfect, but it's good enough. I try to keep it minimalistic and uniform, use as much as possible available space to present the images, but rather to give them more place to be noticed that to show more of them at the same time on screen. Yes, thumbnails are cropped to fit the layout and some of them suffer because of it, but after some testing and comparisons I decided that it looks the best this way (layout is regular with the least amount of empty space or fillers).
What's cool is that history is updated as you scroll up and down, but contrary to original DeviantArt here it works everywhere. Yes, in user's galleries and collections too. And in watch feed but unfortunately this part doesn't work how you'd expect, because of the nature of it's implementation and lacks in DeviantArt API (later about that).
Well, user profiles don't have all of the other cool stuff that is available on the original DA, but again - I focus on deviations. In galleries and collections there's this side navigational menu, which allows to change gallery/collection (depends on context).
As they say "a picture is worth a thousand words":
Even though the images are using as much space as possible on screen, header still seems like a waste of space for me, but I didn't have any better idea to place the elements that it holds in a way that would be readable and would't clutter the screen with floating buttons everywhere.
I want to get the comments working at some point, but for now I couldn't find the willingness to take care of that (and don't have much time either).
I must admin that I'm particularly proud of what I've done to make adding to favorites as fast and convenient as possible. So, when you're like me - browse a lot and have tens (or maybe hundreds) of collections to put your favourite stuff into (I have around 80), it may become quite painful to look for particular collection every time you want to save something there, even if you have them sorted so it's easier for you, it's still painful (for me at least). To fix that I added a simple filter. You don't even have to hover the cursor above this star icon and click the field to be able to filter collections, just start typing and it automatically picks up, and filters as you type each character. At this point you can use arrow keys, mouse wheel or just hover the mouse to pick desired collection and click enter or press it with mouse to add deviation to this collection. It's stupidly simple, but so effective. On original DeviantArt finding collections takes me on average at least few seconds, but in my app less than one. Note to DA staff: please, implement this in Eclipse, you have my permission xd
WATCH FEEDThis was actually the main thing that I wanted to make better suit my taste (like size of the thumbnails), so I started writing this app, but I was quite disappointed when I finally found out that I practically can't do much with using official API. The reason is API doesn't allow in any way to manipulate its contents, so basically to clear the feed like on original website. It's implemented like feed on Facebook and API allows to only read from it and read only in such a way that to get to old content you have to fetch everything that came after it, and this is painful because API has quite strict limits on usage (number of request across a timespan).
So, currently it's possible to browse the feed, but clearing it is not. It sucks.
TECHNICALSBackend: Python with Django.
To connect with the API I used BloodyWing's django-deviantart package which helped me greatly to get this thing fast on the feet, I had to modify it later (add POST requests, and caching and "cooldowns" because of the API limits) but it was still of invaluable help, so thank you for sharing it
LIMITSAs I said - DeviantArt API has quite strict limit on number of request. Most of the time I probably spent trying to reduce number of them without hurting functionality, but it's still quite bad, because after about an hour of using the app I alone am able to hit the limit easily, so there's no chance that it could be used by more people as they would basically instantly hit the limit. Only way for others to use it would be to release it as a whole with the Django server, so anyone who would use it would provide their own app id and secret, run the server on their computer and use it locally. Not like I'm planning on releasing it, but I guess it shows that it's hard (or impossible) to make "real" app that uses this API, or I just don't know something, so if you do - explain
PS. I'm sorry slyvanie that you became my involuntary volunteer to present some aspects of this project, so of course if you don't wish me to use your art here i'll remove the images.