Update 21/09/2024: #4734 (comment) EDIT by @unixfox: The Invidious team is aware of this issue. It appears that it affects all the software using YouTube. Please refrain from commenting if you have...
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.
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.
Feel free to discuss this politely on Matrix or IRC.
YouTube will not change until people stop using it. And people do not want to put up with the inconvenience of not having a YouTube type service again for the amount of time it would take for YouTube to change or a viable competitor to take their place, it really is that simple.
Are YouTube and Google terrible? For sure, but it only got this way because the only backstop to holding them accountable, the consumer, has proven that they will choose putting up with shitty products and services in the name of convenience 9 times out of 10.
Same reasons that ad tiers are gaining a foothold in streaming services like Netflix. The consumer has shown they are fine with it.
“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)
Setting Up the Cron Job
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):
Another example, which i can personally verify has been working fine for months.
It works a bit different to the above, it downloads the latests 2* vids that are not already downloaded and runs once every hour with cron. I also attempted to filter out live vids and shorts.
Channels i am "subscribed" too are stored in a single text file, it also uses the avc1 codec because i found p9 and p10 had issues with the jellyfin client on my tv.
looks like this, i added categories but i don't actually use them in the script besides putting them in a variable, lol. Vid-limit is how many of the latests vids it should look at to download. The original reason i implemented that is so i could selectively download a bulk of latests vids if i wanted to.
#!/bin/bash
# Define the directory to store channel lists and scripts
script_dir="/.../YTDL"
# Define the base directory to store downloaded videos
base_download_dir="/.../youtubevids"
# Change to the script directory
cd "$script_dir"
# Parse the Channels.txt file and process each channel
awk -F'=' '
/^Cat/ {Cat=$2}
/^Name/ {Name=$2}
/^VidLimit/ {VidLimit=$2}
/^URL/ {URL=$2; print Cat, Name, VidLimit, URL}
' "$script_dir/Channels.txt" | while read -r Cat Name VidLimit URL; do
# Define the download directory for this channel
download_dir="$base_download_dir"
# Define the download archive file for this channel
archive_file="$script_dir/DLarchive$Name.txt"
# Create the download directory if it does not exist
mkdir -p "$download_dir"
# If VidLimit is "ALL", set playlist_end option to empty, otherwise set it to --playlist-end <VidLimit>
playlist_end_option=""
if [[ $VidLimit != "ALL" ]]; then
playlist_end_option="--playlist-end $VidLimit"
fi
yt-dlp \
--download-archive "$archive_file" \
$playlist_end_option \
--write-description \
--write-thumbnail \
--convert-thumbnails jpg \
--add-metadata \
--embed-thumbnail \
--match-filter "!is_live & !was_live & original_url!*=/shorts/" \
--merge-output-format mp4 \
--format "bestvideo[vcodec^=avc1]+bestaudio[ext=m4a]/best[ext=mp4]/best" \
--output "$download_dir/${Name} - %(title)s.%(ext)s" \
"$URL"
done
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.
Honestly, it would probably be easier to just build a *arr program specifically for downloading YouTube videos directly. Tie it into the rest of the *arr suite, with naming conventions for Plex/Jellyfin.
Same reasons that ad tiers are gaining a foothold in streaming services like Netflix. The consumer has shown they are fine with it.
Yep, I remember when Netlfix first put it out there that they would start with the ads, and everyone on reddit was like, "Canceling my Netflix right now!!"
Netflix is doing just fine without the 5 redditors who actually did cancel it. lmao
the problem is so many people are willing to say they'll take a stand.
but when the time comes, the mindnumbingly overwhelming majority suck it up, because they must have their precious shiny and can not suffer even the mildest of inconvenience.
Its my biggest gripe in gaming, but its a enormous gripe just in general, with everything. because it doesnt matter if you are talking about appliances, creative software, video games, streaming services, stores, etc.
To summarize what I was telling another person. The number of people who care are far outnumbered by the number of people who don't. It doesn't matter if you or I or all 10,000 (just a random number for the sake of argument) of the people subscribed to a sub like this were to cancel when r/justworks or r/normie (made up subreddits for the sake of argument) has 100,000,000 who don't give a damn about computers, privacy, or anything else beyond the service working or not.
I agree. Tech communities have a habit of drastically over estimating how much everyone else cares about the details of tech.
Even something as simple as PC gaming scares off a lot of people because of the perception that you need to be some kind of tech wizard in order to cobble everything together to make a game run. Actual cobbling together of software to pirate (no matter how simple it seems to people in the know) is just a bunch of technobabble.
I'm a millennial and sometimes I feel like we're the only generation that learnt how to use computers properly. Boomers / Gen X often aren't great with computers, and neither are Gen Z / Alpha since they use phones and tablets far more. There's outliers of course.
I'm more and more inclined towards the idea of piracy myself as time goes on and media continues to shave itself down into more and more ridiculous, unrelated shards, that you have to subscribe to just to be able to SEE if they have what you want.
I don't actively do it actively since I dont really know where to begin, and things I have found have been to sketch for me, or requiring memberships or even payments to join.
if you're looking for the babies first torrenting introduction, dbzer0 has a pretty comprehensive guide on it.
Might be worth looking into i2p as well, if you don't want to spend any money on it at least. Usenets and closed trackers are a weird one, usually based on memberships, but with good quality control of members and content so.
there's also the *arr stack but im sure there's a write of that one up on github or something.
I poked around dbzer0 and found a few streaming sites, Nothing which carried anything i was particularly interested in.
Navigating this stuff without my ISP getting pissy is another hurdle, too.
It was much easier 20+ years ago when you just searched KaZaA or Limewire, or back when piratebay was the site (and before it got drowned in virus traps)
check out the megathread for generic info and recommendations.
https://lemmy.dbzer0.com/post/30062 specific thread for i2p, there's plenty more information out there, you can also ask me about a few things as well.
the TL;DR for doing it without ur isp bonking u is to use a VPN, or a seedbox, which are options. Though you'll ideally want to use anonymous payment services like monero instead of something else, if you really want to be secure.
from what i understand, private trackers are generally fine and secure, aside from the fact that ur isp might not like the traffic, but that's a fault of the ISP, not the law. torrenting is perfectly legal. Though using a VPN is probably still recommended anyway.
navigating malicious software is kind of hit or miss now, but it's more likely you'll find them on bigger reaching platforms, and in actual software, rather than like, mp3s or movies. That's just basic opsec though. (again private trackers are beneficial for this reason, they have better QA and vetting)
I know you weren't using the number 5 as a hard example, but a thing that people still don't seem to realize is that the people in threads like this are the people that actually care. Even if the few thousand redditors who subscribe to a subreddit where they discussed that topic were to all (and I mean 100% of them) cancel there subscriptions. That is still only a drop in the bucket for Netflix. Losing a few thousand subscribers is still nothing if they made more money with the addition of ads.
It is interesting to me that the chorus always talking about "switching" to piracy after every incident is also intimately familiar with piracy already. Almost as if it's just people who already pirate talking to each other about how hard they are going to pirate. Meanwhile general audiences don't care.
Almost as if it’s just people who already pirate talking to each other about how hard they are going to pirate. Meanwhile general audiences don’t care.
this isn't quite true, we have seen an uptick in piracy over the last few years from the streaming service hyper diversion thats been happening for some time now.
It's probably not a lot of people, but it is still happening.
Losing a few thousand subscribers is still nothing if they made more money with the addition of ads.
It's the same with increasing the price of a service. Usually, the extra revenue from the price increase is far greater than the revenue loss from people that unsubscribe. If a business has a choice between a large number of customers with a small amount of profit per customer, and a small number of customers with a larger amount of profit per customer, they'll always pick the latter. Fewer customers reduces other costs, for example less support load, less bandwidth usage, etc.
While I agree, I have a hard time seeing how people will stop using it until the field changes. Maybe in 10 years it will the the MySpace of the sitcom era, but right now it's still growing. That growth is giving it carte blanche to manipulate the users as it sees fit. Regulation might impact it, but it's still a bit of a Goliath.
Compared to 2023, YouTube’s user base has grown by 20 million this year, representing a 0.74% increase.
From Global media insights
Also the active user base is 2.7 billion people in 2024 from the same source above.
The alternatives are out there, but just not in the same league.