Literally illegal
Literally illegal
Not a boat! Not a family vacation! Gasp! An… RV!?!?? SOMEONE THINK OF THE RIGHTSHOLDERS!
404 don’t miss. Best tech journoing in the biz imho
Tech bro knob slobber.
Yeah this is more elegant and closer to what I’d actually want to implement. I was more just showing what could be done in literally thirty seconds on the can with ChatGPT.
“Give me a Python script using yt-dlp that I can run on a cronjob that will download the videos from any of my subscribed channels since the last time the script was run”
You can use the following Python script to download videos from your subscribed channels since the last run. This script uses yt-dlp
and stores the last download timestamp to track new videos.
First, ensure you have yt-dlp
installed:
pip install yt-dlp
Then, create a script called download_videos.py
:
import os
import json
import subprocess
from datetime import datetime
# Configuration
last_run_file = 'last_run.json'
download_directory = 'downloads'
# Ensure the download directory exists
os.makedirs(download_directory, exist_ok=True)
# Load the last run time
if os.path.exists(last_run_file):
with open(last_run_file, 'r') as f:
last_run = json.load(f)['last_run']
else:
last_run = datetime.now().isoformat()
# Update the last run time to now
current_run = datetime.now().isoformat()
# Command to get videos from subscribed channels since the last run
command = [
'yt-dlp',
'--download-archive', 'archive.txt',
'--output', f'{download_directory}/%(title)s.%(ext)s',
'--date-after', last_run,
'--no-post-overwrites',
'--merge-output-format', 'mp4',
'https://www.youtube.com/channel/CHANNEL_ID', # Replace with your channel URL
]
# Run the command
subprocess.run(command)
# Save the current run time
with open(last_run_file, 'w') as f:
json.dump({'last_run': current_run}, f)
print("Download complete. Next run will check for videos since:", current_run)
Make the script executable:
chmod +x download_videos.py
Open your crontab:
crontab -e
Add a line to run the script at your desired interval (e.g., daily at 2 AM):
0 2 * * * /path/to/python /path/to/download_videos.py
CHANNEL_ID
in the script with your actual channel IDs or use a playlist URL if preferred.archive.txt
file keeps track of already downloaded videos to avoid duplicates.Well you know what they say “Great minds think quicker than mine and probably have already had that thought.”
Donate to the EFF for fighting that fight in court already.
Yes but literally throwing together a script to download the days subscription videos to a jellyfin media drive would be stupidly simple.
The design has absolutely not “definitely” improved.
deleted by creator
I don’t doubt the ten year olds ability to prepare the fish, only the ability to understand the weight of her actions.
Any time anyone is able to claw back some scraps of justice or get some kind of recompense for wrongs or - here’s a big one - change the law: that’s lawyers too. The characterization of all lawyers as sharks and assholes has done more to exacerbate the justice gap then help.
Using the local address for the jellyfin instance solved things. I have no idea why whatever jellyfin is doing via jellycon is somehow more performant than just streaming via smb or nfs in vanilla kodi but 🤷♂️. Good pull.
Otw but after replacing the flat Ethernet cable (no change), and while waiting for the vero I switched to connecting to jellyfin / jellycon via its local address instead of its external one (🤦♂️) and zero buffering silky smooth everything. I don’t understand why but holding my breath for now while I wait for the vero when I can retire this unit at least to the office tv where it doesn’t have the responsibility of always performing for the family.
Or just install Linux.
You know once I expose a service to the internet and get a nice easy to remember url I practically forget that I can still access locally. I should check that out.
We’re a googleless house as much as possible. I did consider going down the chrome cast route but it’s less than ideal on iOS.
It’s really neither much too nor very complex at all. I have a home lab stack of mini PCs and raspberry pi’s in my office hooked up to a switch to my router. Among the stack is an intel nuc with a few attached usb hdd, sharing those drives via NFS and Samba and hosting Jellyfin. The same machine serves jellyfin to my other devices and a few family members over the internet. That machine is more than capable for the task. In order to get that media to the living room I have a raspberry pi 4 running libreelec also hard wired to the Ethernet also to the same switch (running through a cable window in the wall). No, I had not heard of the issues with flat Ethernet cables that are otherwise advertised as cat 7 compatible, because I have (some) of the machines networked with flat Ethernet cables. Those are getting replaced.
For the most part the pi4 libreelec machine handles content fine. But I have a number of multichannel audio, hd not-quite-4k animated movies that do routinely cause buffering issues. It seems most likely upon review and after the comments in this thread that it was a simple bottleneck at the pi4. The same content plays unstuttwring on other more equipped machines on the network. I do think the router is on its way out though and deserves an upgrade but that looks to be an optional next step. I’m replacing the pi as a media machine for now.
What do you think obscuring means?