Topic: e621 Pool Tag Searcher (search for pools by their posts' tags)

Posted under e621 Tools and Applications

My first post here. I usually prefer lurking, browsing through posts that have some sort of story or continuity, so the e621 pools are pretty neat <3. Though of course we all have our own tastes, and finding pools that match those is a little annoying. Using inpool:true works fine of course, but then you gotta wade through tons of pools you've already seen before and work out which posts are all in the same pool etc, also annoying.

So I spent a weekend when I could have been browsing, instead building a thing to help me find pools I liked. Initially just as a CLI tool coz I hate frontend and I'm lazy, but while searching for something that could do this already (there didn't seem to be any), I did see a few feature requests around for one.

Fine, I decided. I put on my big boy pants, spent another day or two hacking out a bit of a kludge of an API, threw together a horribly simple frontend for it, and dumped it on heroku.

I present to you my simple and naive frankenstein, the e621 Pool Tag Searcher ( https://e621pts.herokuapp.com/ ).

You give it some tags (real tags, no filtering/ordering or whatever, doesn't know about aliases or anything atm) you want. It'll find pools that contain some posts with at least one of those tags. That is, if you specify "anthro female", it'll find pools that have at least one post with the anthro tag, and at least one post with the female tag. Unfortunately because tags are pre-aggregated at the pool level, it can't find pools that have posts each having all of the tags. It's fine, it works pretty well I promise.

It can also exclude tags, making sure the pool has no posts with any of the tags you give it. I.e. if you exclude "hair male dialogue" (maybe you're into bald silent women? idk. no judging.), it'll make sure that not a single post in the pool has any of those tags. In future I might think a bit harder and implement a threshold or something, but not yet.

Ordering is pretty simple. You can order by Count (total number of posts with the tags), Percentage (maximum percentage of posts with the tags), Average Score (the average score of all the posts in the pool) and Total Score (the summed score of all posts in the pool). Between these four you can kinda choose what sort of "quality" you're looking for. Dense pools that heavily focus on your tags, pools that have at least some part focusing on them, good quality pools... etc.

Filtering is even more simple. You're providing a minimum value of either Count or Percentage. Count means "I want pools that have at least X posts with these tags", and Percentage means "I want pools where at least X percent of all posts have one of these tags". Easy.

Search speed is kinda ok. The search itself is fairly fast, but I'm hosting the DB at home coz I'll be damned if I'm paying $50/m to host a postgres db somewhere for you lot ;-) So the latency is a little wonky. Still, a couple seconds, 4-5 at most. It might occasionally go down for an hour or two if I lose internet or power or whatever, but it should get at least a couple nines of uptime :P

Have a try, see if it works for you, let me know if something doesn't seem right (#it-works-in-dev), or any feedback or feature requests.

Edit: Also if this use of data isn't permitted (hosting the api), just let me know and I'll take it down and provide the cli tools instead. Just thought I'd save everyone from spending an hour having to download and process a couple hundred mb of dbexports.

Updated

This is pretty nice, only thing I think would improve it would be previews of the first post of the pool (like how the pools page does it ). Titles just don't stand out the same way an image does.

Yeah you're right, the table structure also didn't really feel right. I've put a bit more effort into the frontend, its still not amazing but I think it's a bit better than it was.

It now uses a similarish layout (though with less cards per page), and I've included the thumbnail of the first post in the pool as a preview. Let me know if it works better or exactly how terrible at frontend I am :P

I also added what I think now was a massive oversight, the ability to order by when the pool was last updated. Makes it much easier to see new/ongoing pools and find updates. Also done a couple of database and query optimisations to make it a little faster. Oh and I fixed an issue to hide pools containing only deleted posts.

Updated

  • 1