I make a lot of OC videos to post here on Lemmy. I’m on Nobara, which is currently on Fedora 39. I’m like an intermediate Linux user and mostly have experience with Debian. All of that being said, I’m up at odd hours.
If someone can help me figure out how to make a script to post a video to Lemmy when people are actually awake, that would be fantastic. It could be a lot, I know. I have no idea how to start here. It’d likely need a giant script, and API access along with possible sudo permissions.
I haven’t been a developer since ~2002 and even then it was only Java web stuff. So, while I might understand things with some guidance I can no longer really get things like this running by myself.
If anyone has info or guidance on how to get this done, I would greatly appreciate it. I’m trying to get automatic uploads to at least catbox.moe, and if possible YouTube (though I know that is unlikely).
I know this is an odd one, but I know you all (if anyone) have the technical set to help me out here. I’ll answer any questions I can!
sounds like a fun challenge. My thought process is the control flow. To that end:
- script runs
handled by cron
- Script selects files to upload, community to upload to and titles for them.
These are the hardest parts, because it will be the only variable parts. It basically requires user input. I’m thinking perhaps parsing a text file where you input the file name, the community, and the title.
- Script authenticates with lemmy API
I found this really handy “unofficial” API documentation, which includes examples in many different languages, through the official docs.
Unfortunately, it looks like it’s going to require a hardcoded password to get the appropriate authorization token.
- script posts to lemmy
We can use the api documentation above to figure out this part too
For other sites like youtube, you can expand on this script and have parts for youtube as well, but you’re basically doubling its size and complexity. Personally, I would go for the KISS method instead and just have a separate script & info file.
After work today, I’ll see if I can slam out a quick proof of concept in Python
I wasn’t able to implement catbox nor youtube uploads for a few reasons:
- neither are FOSS services, and I sneer at those in my moral superiority (disregard the above usage of github)
- I’m lazy
- This script isn’t for me and I will likely never use it
- I’ve already spent over 2 hours on this
- catbox.moe is a small site, with little-to-no API documentation. I didn’t want to hammer them with 100 API POST requests with blank files while I test the script and figure out their API through trial and error
- youtube requires an API key via oauth… I really don’t have time to work that fustercluck out
I left in some helpful comments anyway.
All in all a fun exercise that brought me and lemmy closer together, and that’s what really matters. Turns out the real API docs were the friends we made along the way
I got this script to work! Yeah, I apologize for the lack of FOSS hosting for videos specifically, but there really aren’t great options out there unless I run and maintain my own PeerTube instance, which I’m not prepared to do technically or financially. I managed to get it working, so I really thank you for the hours of work you put in! I was able to do two test posts that worked well once I had oauth stuff sorted.
That’s great news! I hope my contributions didn’t require major overhauls on your part, and I’d love to see the end result (scrubbed of any private info of course) if you care to share.
No worries about the FOSS stuff, I was just fishing for excuses to absolve myself of guilt for not finishing it 😬
I really do appreciate the effort! I will take a look at this when I’m next able.
I could possibly help you with all this. If you wanna DM me, we can set up time to work on this.
Out of interest, why do the videos need to be posted at a specific time? As the world rotates, different people are awake all the time. Are they specific to your local area?
The land, and thus the population of the earth aren’t distrubuted equally across the globe. This causes a day-night cycle for online communities, despite being international, just due to the fact that the majority of humans live somewhat close together on a global scale.
That’s true, I hadn’t thought of that. So the optimal time to get the most people waking up to your content is about 01:30 UTC for India waking up from 7am (UTC+5:30), or 23:00 UTC for China at UTC+8!
https://distributionofthings.com/world-population-by-time-zone/
If there really is an equal distribution of users across the globe, yes. But you also need to consider that most users here are probably from Europe or north america, but I’m not sure about that.
Yeah, and there’s no way to know.
Not without asking all instances to pile together the IPs that access them, I suppose. But there are ways to make educated guesses, like using polls and interpolating that data.
It is entirely me wanting people to see them. Many sort by new, hot, top x hours etc. I’d just like to make people happy by posting stuff at an optimized time.
I’ve actually fully automated my uploads to youtube. It’s been over 10 years since I set it up, but I can tell you I use youtube_upload from pip and I’m pretty sure I had to make an app password. I wrote a little bash script to make sure it’s only done in the middle of the night. I’m not a dev either so if my dumb ass can figure it out, I’m sure you can too :)
There’s probably something than can be done with a curl command through the API.
If you can figure out some way to upload it to your desired destination and get a link to it, maybe this bot can help you post on lemmy at a specific time of the week/day.
This Lemmy community has a great set of intro Linux lessons to get you started:
https://programming.dev/c/linuxupskillchallenge
The scheduling command for a one-time future run is the “at” command.
Have you tried leveraging a LLM ai with prompts matching your needs? I’ve heard it can be quite effective, especially for someone with some programming background. E.g. “write me a python script that…”
Said LLM would need to know how to use the Lemmy API. And none of them do.
Unless it used something applicable in its training maybe?