- cross-posted to:
- foss@beehaw.org
- cross-posted to:
- foss@beehaw.org
cross-posted from: https://discuss.tchncs.de/post/22423685
EDIT: For those who are too lazy to click the link, this is what it says
Hello,
Sad news for everyone. YouTube/Google has patched the latest workaround that we had in order to restore the video playback functionality.
Right now we have no other solutions/fixes. You may be able to get Invidious working on residential IP addresses (like at home) but on datacenter IP addresses Invidious won’t work anymore.
If you are interested to install Invidious at home, we remind you that we have a guide for that here: https://docs.invidious.io/installation/..
This is not the death of this project. We will still try to find new solutions, but this might take time, months probably.
I have updated the public instance list in order to reflect on the working public instances: https://instances.invidious.io. Please don’t abuse them since the number is really low.
“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: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)
Setting Up the Cron Job
Make the script executable:
chmod +x download_videos.py
Open your crontab:
Add a line to run the script at your desired interval (e.g., daily at 2 AM):
Notes
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.