Fetcharr - a human-developed Huntarr replacement
from egg82@lemmy.world to selfhosted@lemmy.world on 08 Mar 19:01
https://lemmy.world/post/44006156
from egg82@lemmy.world to selfhosted@lemmy.world on 08 Mar 19:01
https://lemmy.world/post/44006156
Disclaimer: I am the developer
Long story short, after Huntarr exploded I still wanted an app that did the core of Huntarr’s job: find and fetch missing or upgradable media. I looked around for some solutions but didn’t like them for various reasons. So, I made my own.
No web UI, configured via environment variables in a similar manner to Unpackerr. It does one job and it does it (a little too) well. Even when trying a few different solutions for a few days each, Fetcharr caught a bunch of stuff they all missed almost immediately. This is likely due to the way it weights media for search.
Since you made it this far, a few notes:
- I did still use ChatGPT on a couple of occasions. They’re documented and entirely web UI - no agents. Anything it gave me was vetted and noted in the code before publishing.
- The current icon is temporary and LLM-generated. I’ve put out some feelers to pay an artist to create an icon. Waiting to hear back.
- It’s written in Java because that’s the language I’m most familiar with. SSL certs in Java containers can be painful but I added some code to make it as easy as Python requests or Node
- While it still has a skip-if-tagged-with-X feature, it doesn’t create or apply any tags. I didn’t find that portion necessary, despite other popular *arrs using it. Not sure why they do, even after developing this.
- Caution is advised when first using it on a large media collection. It’ll very likely pick up quite a number of things initially if you weren’t on top of things beforehand. Just make sure your pipeline is set up well, or you limit the number of searches or lengthen the amount of time between searches using the environment variables.
threaded - newest
Love the distinction. LOL
it’s today’s trend! One I happen to agree with, which is nice.
I’m trying to limit LLM exposure on this one to “as little as possible, within reason”. It’s still a tool and can be used effectively in some areas.
My only real conundrum with AI coding, is totally relying on AI as the dev, then releasing it for public use without really knowing what happens behind the scenes and obviously the security of said app. Now if the dev is using AI as an assistant, and the dev is knowledgeable enough to know that things are operating securely, I’m ok with it.
Yeah, there’s a version of using AI to help with coding that’s more along the lines of cobbling together pieces from tutorials to figure out how to do something and making it fit your needs rather than just straight up asking for code and blindly adding it. It’s obviously not going to be as good as code from someone experienced who’s managed to internalize the relevant documentaion, but it’s at least informed by a human who understands what it’s doing
Also people who think they can just vibe code without ever learning how to code for real. I’ll “vibe code”, but I’m also 10+ years experienced. I can quickly detect bullshit from the AI and I check pretty thoroughly.
Some dentist turned vibe coder will make absolute trash
We have IDEs and all kinds of tools to help us code. AI is just another tool. Granted, it’s a tool that needs some heavy regulation, but a tool nonetheless.
@irmadlad @reabsorbthelight in the case of coding also needs supervision. it would totally push to prod on friday closing time lol. But yes it can be a useful tool for certain things....n ot everything the AI companies try to tell us.
Of course not. They are sales. They are trying to maximize the profit potential to their investors. I do believe that if we could get some oversight and regulation, as much as I chafe against regulation…it’s necessary, and get past this novelty stage of AI Rice Cookers, I think AI does have a lot of potential.
@irmadlad yep. right now it's like the wild west and in large part they come off a snake oil salesman. But there is some truth there since for some tasks it can be helpful.
I expect as there is a shift to vibe coding, saying “human coded” is going to be similar to “free from artificial colours and flavours”.
100% ethically-sourced, organic code
I like that.
LOL
For some reason the hubub around non-AI software reminds me of produce.
‘Guaranteed 100% locally open-sourced, free-range,
GMOAI-free code!’Maybe we should have some rating system like Rated PG, or R, etc but for opensource software:
It’s better is more fine grained.
Stealing this for my projects that are 100% human supervised. I used “vibe coded” so far but I felt I still brang a lot.
except GMOs aren’t actively harmful while AI is
GMO’s create a societal harm, not a physiological one. Patenting a cultivar of a plant is a slippery slope, and we have already had quite a slide. In theory, if somebody works very hard to breed a new cultivar, they deserve to reap the rewards of that work and protect their creation. Okay, that makes sense. But if I have all the ingredients to breed that same cultivar, and do all the same work myself, should they be able to restrict my ability to profit? A step farther, and this is the reality we inhabit. Monsanto has created an environment where their patented corn seed is the best bet for a profitable harvest, but farmers are required to sign highly binding contracts with ridiculous stipulations. Beyond that, if a neighbor farmer dares to plant non patented seed, and the wind blows his neighbors Monsanto pollen (corn is wind pollinated) into his field and it pollinates his crop, he is now in patent violation of a company he has no business with that is now going to aggressively come after him in court. This is actually happening in the American Midwest.
In this day and age, shouldn’t Huntarr be replaced by Gatherarr? You know, sustainability and all…
Wouldn’t it be called Foragarr then?
Why not skip ahead in time a little and call it farmarr?
Agricultarr?
I don’t think gathering is more sustainable than hunting at the numbers we’re at now. Humans could easily strip everything bare
Since Sonarr et al already find/upgrade missing media, how does this fit with them? Is it finding stuff they miss? Or does this replace them?
That’s an interesting point. In my years of running them all I’ve always needed a third-party something to upgrade or find missing media. I don’t exactly know why the built-in systems don’t work, but they genuinely do not seem to. I’ll occasionally see a scan go off but, for some reason, nothing ever gets picked up.
So, yeah; long story short, the built-ins don’t work and I don’t know why and this was still easier than trying to figure it out.
Edit: if you’re curious, give Fetcharr a try and let me know if it does anything for you. It’s free and takes a couple minutes. It should be pretty immediate, if your experience ends up being anything like mine.
Not to dimish your work at all, but: the Sonarr upgrades absolutely do work.
honestly if they work for you then awesome! Maybe mine is misconfigured somehow or maybe I just have bad luck, but Radarr, Sonarr, Lidarr, etc have never caught everything. Once I started playing with this I realized just how much I was missing.
Either way, if your current system works for you then I don’t usually recommend changing it. Give it a try if you want- the worst it can do it accidentally find something that could be upgraded or missing. Or if you’d rather leave your stack alone that’s perfectly fine as well.
Sonarr and Radarr heavily rely on quality profiles you need to define, for examples see TrashGuides.
Your system probably needs less setup in comparison
ah, yeah, that would make sense as to why these types of systems are so popular. Since I’m a devops type by trade, my arr stack lives in a couple of kubernetes clusters. I use a Configarr cronjob with a fairly customized configmap to sync the trash guides with some minor preference edits. Maybe my issue is that it’s too defined, but I think if that were the case I wouldn’t be getting any benefit out of Fetcharr. Honestly even if it weren’t the case you’d think I’d at least be picking up movies that are completely missing. I’m not sure what to blame, here, but if other people are verifying that the builtin systems work for them (as well as something like Fatcharr does) then I assume it’s a skill issue or bad luck on my part.
They do, but only by passively monitoring RSS feeds for new content that exceeds your current quality. They don’t do active upgrade searches unless you manually trigger them.
The distinction is important if you imported some or all of your media library, rather than building it from scratch with the arr stack stuff. It also matters if you source some your content via providers that don’t have RSS feeds.
I think you may have nailed what’s happening to my stack. I remember looking into it a couple years ago and RSS was stuck in my head but I wasn’t sure why. This tracks, and explains why active fetching works significantly better for me.
Just to add, I didnt mean to put down this software at all – I’m always a fan of more self hosting. I just remember reading people using Huntarr alongside a full *arr stack and was curious how it fits.
absolutely! As with everything, try it out and see if it fits. Personally, I prefer apps that do their job well, and as few of them running as possible. If you don’t think it’ll be useful or try it out and find that it’s not, then that’s for the best. It means you’re good to go without any extra hangers-on. I tried the app as I was developing it and not only found it useful to myself, but it worked so well for me that I thought it might be useful to other people as well.
I’ve never heard of Huntarr. What is this?
that’s a decent point. Not everyone knows about the Huntarr saga (Reddit link but that’s where the story broke) and what it did.
The idea is that you’ll occasionally want to go through all your media and make sure it’s the best quality available and that nothing’s missing. New releases get published, remuxes sometimes fix issues, etc. This little CLI container goes through and periodically searches everything you connect it to, so you don’t have to sacrifice hours of your weekend doing manual hunting.
Edit: as a couple have pointed out this is supposed to happen automatically with built-in searches. In my experience this isn’t the case but ymmv and if what you’ve got works for you then that’s great!
Sounds like a solution in search of a problem, considering the other Servarr apps already do that.
yep! If your arr stack already does what you want then I don’t really recommend adding more to it for the sake of doing so. The issue I have (and maybe it’s a layer 8 problem) is that mine does not. At least not as well as I want. If Sonarr ever did find anything on its own I never saw it, and while developing Fetcharr I definitely grabbed a few movies I was missing. It definitely seems like I’m not alone in this issue so I think it’ll be helpful for folks.
If you want, try it out and see if it does anything for you. If you think it’ll be helpful or a good replacement than great! If you find that you already have everything you need then that’s even better.
I had a quick look, I think I could find a use for it but what I’d most be interested in is a dry run spitting out a list of missing / low res / low bitrate / stereo (I much prefer 5.1+), perhaps old codec, etc. media. Like many I have my own standards for what needs to be how good and so forth.
Ideally I could edit said list and put it back in as an active search list (perhaps chunking and prioritizing as well and iterating the process). Seems like this is 90% of the way there, any chance of an enhancement ?
Bit reluctant to just let someone else’s code go ham on my media library without a me in the loop step.
if you haven’t yet, I’d check out Configarr and the trash guides as a baseline to create profiles that upgrade media to a certain standard so simply hitting the search button will give you what you want. That’s likely the best option, though it could theoretically be done in Fetcharr itself.
I don’t want to balloon the project but I had an idea early on that people would want customization if I released it, so I thought about adding a sort-of “plugin” system where Fetcharr loads jar files from a directory and they get an API to access and use as needed.
I haven’t figured out the details yet. That’ll be another weekend, or a contribution from someone. The idea and skeleton is there, though.
Edit: missed the dry run part. That’s a great idea! The worst that can happen is that it triggers upgrades (there’s no code to modify anything) but it’s still a reasonable ask.
Fair cop, and no I haven’t really dived into Configarr and the trash guides (although I vaguely remember coming across them), oh joy, another rabbit hole. I do try to keep a simple stack, and what I have has served me well for years. But thanks, no need to reinvent the wheel if that handles my use case.
Having smaller projects with specific scope that do something well and can be plugged together is always preferable to some sprawling monstrosity. Used to be called the Unix way (pipe sed into awk etc.) and could stand to be revisited today. Best of luck.
glad to send someone on another Sunday rabbit hole! To be clear, Fetcharr is essentially automatically hitting the “search” button for you on a few semi-random items in your library. If your profiles are set up well, it will naturally handle the rest itself.
That said, there is a plan-in-my-head for “plugin” support so I don’t end up shoving a bunch of stuff into one app but still allow anyone to make something they need. If profiles don’t fit your use-case then that’ll be an option at some point in the future.
So, unless I didn’t dive deep enough, Configarr / Trash guides is mostly about setting up quality profiles and media paths and so forth, something I long ago sorted out to my satisfaction.
What I guess I was after was something to find stuff that has fallen through the cracks, highlighting stuff that doesn’t meet my standards and seeing whether I care enough to go looking for upgrades.
Strangely there doesn’t seem to be a simple app to run ffprobe over your library and populate a database for querying video quality, maybe I’ll get around to knocking one out one day, but today is not that day.
in Media Management (click Advanced) there’s an “Analyze Video Files” option to get more data about your actual files. If I remember correctly this also re-tags downloaded media with your profiles if it was mislabeled. If you already have quality profiles set up and gated (you can add profiles that look for these attributes, like 7.1 or 5.1) then you can simply hit the search button on your media and rely on the *arr app to do the rest. If you don’t want to upgrade stuff that’s already satisfactory to you then you can do the same thing with the “Cutoff Unmet” filter. Fetcharr allows you to do either of these with the new
USE_CUTOFFenvironment variable.If you’re looking for ffmpeg media analysis and health checks you can also check out something like tdarr.
Yeah, I have “Analyze Video Files” on, doesn’t get me a list of substandard files though, just sends the arr after stuff it’s probably already not finding.
Hadn’t seen the Property search in here before, might get me most of the way there. Got it around somewhere, might have to spin it back up. Maybe I can raid it’s database as well. Thanks.
What happened to Huntarr?
it was strangled to death by the maintainer (probably) after a breaking story on Reddit about its security flaws though since they disappeared from the internet nobody knows for sure what happened to it.
Yowza. Thanks.
It was vibe-coded and exposed all of your API keys publically
See https://www.reddit.com/r/selfhosted/comments/1rckopd/huntarr_your_passwords_and_your_entire_arr_stacks/
TLDR: huntarr was vibe-coded and had tons of security issues. When the “developer” was confronted, he nuked the git repo, his github account and all his social media accounts.
Interesting, thank you! You should consider using thr builtin Description GitHub provide for repos
good catch! I forgot that existed.
Can you explain what is huntarr?
If I’m understanding the description on the git page correctly, it scans you media library, logs the resolution/format/etc, then searches wherever it’s pointed(torrent trackers?) for better quality versions.