[a / b / c / d / e / f / g / gif / h / hr / k / m / o / p / s / t / u / v / vg / vm / vmg / vr / vrpg / vst / w / wg] [i / ic] [r9k / s4s / vip] [cm / hm / lgbt / y] [3 / aco / adv / an / bant / biz / cgl / ck / co / diy / fa / fit / gd / hc / his / int / jp / lit / mlp / mu / n / news / out / po / pol / pw / qst / sci / soc / sp / tg / toy / trv / tv / vp / vt / wsg / wsr / x / xs] [Settings] [Search] [Mobile] [Home]
Board
Settings Mobile Home
/g/ - Technology


Thread archived.
You cannot reply anymore.


[Advertise on 4chan]


File: sneediad.png (1.5 MB, 1831x1127)
1.5 MB PNG
Sup /g/

Just released the first version of naiad-net, a hobby project that I ended up pushing into a usable state. The tl;dr of it is you add picture folders to it, it indexes them into a sqlite db, and you can tag shit.

But I also wanted what the Hydrus network has, in a more lightweight package. So I have a dev server that ingests hydrus ptr updates every night. This way you can also pull tags from the net, in a quicker and only slightly less private way. Basically instead of downloading the entire db, you request buckets via hash prefixes. It's pretty fast this way.

Shit's made in rust, optimized for speed, interface is wip but imo right now the basic functionality of 'just put tags on my images' works. It's completely slopped together, and I'm actually surprised I got this far. If anyone cares enough I'll keep adding planned features, like plugins to scrape/autotag via model, but right now only basic functionality is done.
>>
>>109593708
tried hydrus once and uninstalled the turd 10m later. explain how your fecal matter is different and what it does better than windows explorer.
>>
>>109593708
what gui library is used?
>>
>>109594835
Claude webshit
>>
>>109593708
A thread died for this. Fuck you.
>>
>>109594825
You unzip it, add an image folder, and 5 minutes later you've got hydrus tags for them.

>>109594835
Svelte

>>109594947
Yea
>>
Oh right, forgot to put up the github.
https://github.com/scoopscoop/naiad-net
>>
>>109594825
>filtered by autismo software
lol
>>
>>109595046
>Shit's made in rust, optimized for speed
>Svelte
lol
>>
>>109595285
gave it a 10 seconds look
>uses "jpeg_decoder" for thumbnails when "image" with jpeg decoding is in the dependency tree
>(picky) uses sync-only ureq in the client when async is already used in the workspace
is this the power of trillion dollar intelligence? lol.
a funnier game for someone with more time, is to figure out what parts were "borrowed" from where.
>>
>>109595448
It can filter through a 90k image library in seconds, and pull just as many hashes from a repo in minutes, that's good enough for me.
>>
>>109595582
i made that comment before seeing you posted the repo.
>>109595482 is may last comment.
>>
>>109595448
Svelte is not what's doing the actual numbers crunching in this sort of programs, it's just gui library.

>>109595582
>It can filter through a 90k image library in seconds
That's really bad to be honest. People use Hydrus for collections with tens of millions files and billions of mappings.
You gotta optimize it to under 100ms and hopefully it scales sub linearly with the database size.
>>
>>109595968
I haven't tried going past 90k to benchmark it even further, though it would be worth trying to duplicate my library a few times to see where it might grind. Like I said, it started as a hobby project so currently I'm just doing whatever features I want to personally use. Next up would be a plugin system that lets you write scrapers/importers or accept tags from autotagging models.

>>109595482
I mean there might be unused/legacy code in there or suboptimal patterns, but as far as I know I'm the only user and it's not bothering me, so it doesn't make sense to look into it atm.
>>
>>109596150
>though it would be worth trying to duplicate my library a few times to see where it might grind
https://github.com/funmaker/hygen
Here is a simple image + tags(sidecar) generator I use to benchmark my project.
For the performance tips, I personally do not know how hydrus actually does it, but it archives pretty good performance with sqlite alone. I am using postgresql and use intarray extension. Basically, I store sorted list of post ids for each tag and then do set operations on them. Sorted arrays are very fast for this, you can get unions, intersections and differences in O(n) with simple algorithms. If you use Rust, you might do all of that on the Rust side and even add some smart parallelism to really speed things up. But that if you ever feel like optimizing it all. Just be mindful that if your solution is worth shit, people with millions of images will flood in and constantly bitch about performance.
Good luck!
>>
>>109596271
Thanks anon

>Just be mindful that if your solution is worth shit, people with millions of images will flood in and constantly bitch about performance.

Yeah, I get that, but I'm not intending to replace hydrus, in fact somewhere down the line I want the server to push tags with good enough sources (direct booru scrapes or manual tags) to the hydrus PTR, but once again that depends on demand
>>
>>109593708
BASED BASED BASED I always wanted something like this. Always felt getting used to hydrus was a waste of time because now everything is fragmented under a trillion tags and easy to lose track of compared to just using subfolders
>>
>>109596880
>because now everything is fragmented under a trillion tags and easy to lose track of compared to just using subfolders
You can use tags like paths. Tags are more general structure.
>>
>>109596880
Naiad doesn't move anything, it just creates a list of hashes from your files, creates a thumbnail cache, then whatever tags you have are stored in a sqlite db.
>>
No, thanks.
>>
>>109593708
What are you using to tag the images?
>>
>>109597717
Currently just manually, but you can pull tags from a hydrus-derived database sitting in a public repo. It doesn't have tags for everything, but at least half of everything I throw at it gets tagged pretty easily with just a download.



[Advertise on 4chan]

Delete Post: [File Only] Style:
[Disable Mobile View / Use Desktop Site]

[Enable Mobile View / Use Mobile Site]

All trademarks and copyrights on this page are owned by their respective parties. Images uploaded are the responsibility of the Poster. Comments are owned by the Poster.