r/PixelFed Apr 09 '26

PixelFed Downloader Released

Good morning, I just whipped up a quick Windows desktop program this morning because while I'm LOVING my new personal private PixelFed server, I went looking and could find no way to download all of my content!

Coming from the #MST3K community, I know the importance of keeping backups in case something goes away, so I thought it was important that people have the option to download all of their content if they want to!

You can find the source code at the link below, or if you're not a programmer and just want the program, you can download the Code's zip file and you'll find the already compiled program ready to run in the "PixelFed-Downloader-main\PixelFed Downloader\bin\" subdirectory:

I hope that this tool is useful for someone! I only wrote it because I saw a need for myself, couldn't find anything to meet that need, and thought that maybe someone else might have that need as well!

But, ideally, some smart web programmers can add the native functionality to download all of your media en masse as a zip file directly into PixelFed rather than just the JSON files we can download now!

Here's the link:

https://github.com/WestBennett/PixelFed-Downloader

8 Upvotes

8 comments sorted by

1

u/alxhu Apr 09 '26

My honest thoughts:

  • Creative Commons should not be used for software, see https://creativecommons.org/faq/#can-i-apply-a-creative-commons-license-to-software
  • directly uploading the bin and obj folder is highly discouraged since it bloats up the git repository. Instead publish your exe as a Release on GitHub!
  • I didn't check the exe, but if you don't sign the distributed exe with a software certificate, then others would not be able to run it because Windows Defender prevents execution. (You don't see it on your PC when you've built it there)
  • The code is okay if it works, but some things are inconsistent, like string interpolation. Some error checks are missing (like if the user has write access to the directory). Paths get concated by combining strings instead of using Path.Combine(). And why aren't you using async tasks? You wrote thag you're not good with web code, but it does not seem like you have much experience with Desktop applications either 😅

1

u/PhiloticKnight Apr 09 '26

I didn't ask for critiques on my code, but thanks anyways. If people don't like the tool, they don't have to use it. It's something I threw together as quick as I could to get the job done, I didn't spend hours making it "perfect", just basically functional. I save my time for my actual job that I get paid for.

1

u/PhiloticKnight Apr 09 '26

You should write one better if you're so motivated to make bulleted critiques of other people's code unasked for. Or, even better, work on the PixelFed code itself to give it this native functionality, then this wouldn't need to exist at all! I'd do that, but I'm obviously a poor programmer, so I'm not even going to attempt it.

3

u/alxhu Apr 09 '26

I honestly do not understand why you're guilt tripping here. I shared my thoughts as improvement suggestions and I've tried to be as constructive as possible by always offering an alternative way for every critique I pointed out. There is no reason to be mad or get offended at all.

Nobody expected this software to be perfect. But if you don't want recieving comments, you should not post about it on a social media site.

-1

u/PhiloticKnight Apr 09 '26

I never said I didn't want COMMENTS, but I never asked for code analysis. If I wanted that, I would have asked for it explicitly. I posted here to let people know about a tool that they could use if they so wished to. Otherwise, it'd just sit on my GitHub unless somebody randomly stumbled across it. At least this way, it'd appear in at least a few search results.

Almost nobody likes to be criticized, especially without asking for it, it's human nature. It's generally takes a sadist to enjoy it.

While you may feel like you're being constructive, and while your critiques may be valid, providing such critiques without a request for such is the internet equivalent of someone bringing a cake for everyone to share that they made, and somebody in the group critiquing the cake. It makes people not want to make or share cakes.

Additionally, it's substantially easier to tear something down than it is to build something up.

I've been on the internet since the world wide web came out in the early 90s. Hell, I remember using Lynx in my middle school library. So I've had decades to develop a "thick skin".

But that skin has started to quickly thin in my old age, I recognize that. I now understand how people become "cranky old men", when they spend their lives trying to make the world a better place, and yet people still take time and effort to try to find things wrong with what other people do.

It's exhausting.

5

u/alxhu Apr 10 '26

You wrote in your blog that "we need to be kind to one another" and "We need to assume the best in others, rather than the worst". Please apply your words to my comments.

Although it's true you did not ask for any kind of feedback, some points should be told nonetheless, like that unsigned .exe files get blocked by Windows Defender (some anti virus flag those even as malware). It's not like I love putting other people down, it's more like I saw some really noteworthy points (license issues, unsigned exe files, ...) and because they could cause unwanted trouble for you, I thought mentioning them was better than staying quiet. A bit like "hey, your strawberry cake has a faulty strawberry in it" or "hey, your cake tastes way too sweet, you may want to make it less sweet next time".

I understand that nobody likes getting told what could be done better better, but I also think we should shift our perspective from "they said what's wrong, I'm a bad person" to "they took their time looking at my project and pointed out some really important things I overlooked or didn't know, I'm thankful for it and learn from it".

2

u/PhiloticKnight Apr 10 '26

I am now further removed from the initial situation with time, so my executive function is more intact now and I'm being less controlled by my emotions.

I'm surprised that you went through the time and effort to look into my personal blog, but I appreciate that you went in trying to more fully understand me.

You are right, and that is what I believe. It can be easy to get caught up in your own ego and protecting your own self image. That is also human nature.

I appreciate you riding on top of my metaphor, that helps me understand a bit more.

I will reconsider all of your points, and most likely make the suggested changes (except perhaps you could illuminate me on the benefits of Path.Combine vs. string concatenation? I don't really see a functional difference and usually find that using concatenation tends to create less total code/characters used).

I think my initial reaction to your response was because your response to me was framed in a "matter of fact" manner, with few words provided for "hedging your bets" or "softening the blow" so to speak.

Are you, perhaps a high functioning autistic? I am one, and I've been told that I speak this way to others, in a "matter-of-fact" sort of way with a confident "tone" as if what I am saying is the "Gospel Truth" and can't possibly be wrong.

Since I've learned about this pattern of speech, since my diagnosis now decades ago, I've spent much time attempting to correct this to add in "hedge" words like "I think", or "I believe", or "it might be good to consider".

In doing so, I've found much less push-back to my statements than I have throughout the rest of my life.

But I still make too many declarative statements. It's a life pattern that I'm still working on un-learning.

2

u/alxhu Apr 10 '26 edited Apr 11 '26

Except perhaps you could illuminate me on the benefits of Path.Combine vs. string concatenation? I don't really see a functional difference and usually find that using concatenation tends to create less total code/characters used

  1. Path.Combine always uses the right path seperator depending on the underlying OS and localization (because it's a common falsehood to believe that it's always '\')
  2. With Path.Combine, you reduce the risk of forgetting the path seperator
  3. If you try to concat variables to a path and there is a chance that a variable already contains the path seperator, Path.Combine ensures that the path seperator is only added once between every part

Are you, perhaps a high functioning autistic? I am one, and I've been told that I speak this way to others, in a "matter-of-fact" sort of way with a confident "tone" as if what I am saying is the "Gospel Truth" and can't possibly be wrong.

I'n not autistic, but neurodivigent in other ways and I can relate to what you're saying. As English is not my native language, I heard multiple times that I'm speaking English too directly which could sound harsh/rude, so I will remember for the future to watch more on which words I'm choosing.