You can easily download your own videos of youtube (or even your entire playlsits) through the application youtube-dl
or yt-dlp
.
1. youtube-dl
You can install youtube-dl
from repositories, even if it won't be updated as frequently as needed sometimes, to get sync with youtube way of working. Therefore, you are encouraged to install through the command-line:
Commands in a terminal window
sudo apt update && sudo apt install youtube-dl # install programs from repos if you don't have them yet
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl # get latest version from developers site
sudo chmod a+rx /usr/local/bin/youtube-dl # fix permissions of the downloaded file
sudo youtube-dl -U # update your previous youtube-dl version
You can download your own youtube playlist with:
Commands in a terminal window
youtube-dl -ci "https://www.youtube.com/playlist?list=YOURPLAYLISTID" -o "%(title)s-%(id)s.%(ext)s"
Replace YOURPLAYLISTID with your own YouTube playlist id (note it's not your youtube channel ID, but the youtube playlist id). You can get it from the url of a video when shown through it's own playlist. That url might look like:
Therefore, the playlist id is that part after list= and before any ampersand (&) if any.
In this case: PLM2ch5TKp0OdtMZeqCOJQw6BwJ19VDcj4
Therefore, this would be the instruction in the command line:
Commands in a terminal window
youtube-dl -ci "https://www.youtube.com/playlist?list=PLM2ch5TKp0OdtMZeqCOJQw6BwJ19VDcj4" -o "%(title)s-%(id)s.%(ext)s"
And if you need in mp4 format only (because your tv doesn't accept some webm or mkv codec files, or whatever other reason), you can add these extra params -f 'bestvideoext=mp4+bestaudioext=m4a/mp4'
:
Commands in a terminal window
youtube-dl -ci -o "%(title)s-%(id)s.%(ext)s" -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' "https://www.youtube.com/playlist?list=PLM2ch5TKp0OdtMZeqCOJQw6BwJ19VDcj4"
1.1. Looking for a GUI for youtube-dl? youtube-dlg
There is a nice GUI called youtube-dlg, however, it doesn't seem to be updated as frequently as needed to keep it updated to latest youtube-dl changes (and therefore, with youtube changes).
You might try the GUI Download-DLG, in case it still works for you (if did for me months ago, but not currently, so I had to go to the command line to be able to fetch my own video playlist successfully)
#sudo add-apt-repository ppa:nilarimogard/webupd8 # needed once for youtube-dlg
sudo apt update && sudo apt install youtube-dlg # install programs from repos if you don't have them yet
# refresh youtube-dl from the commands above so that you have the latest version installed
Derived from:
2. yt-dlp
If youtube-dl doesn't work for you any more (it did fail for me in 2023-10), you can try installing yt-dlp
from discover app, or through pip, and launch the command with this program
Commands in a terminal window
yt-dlp -ci -o "%(title)s-%(id)s.%(ext)s" -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' "https://www.youtube.com/playlist?list=PLM2ch5TKp0OdtMZeqCOJQw6BwJ19VDcj4"
You can check the version of yt-dlp with:
$ yt-dlp -U
Current version: stable@2023.12.30 from yt-dlp/yt-dlp
Latest version: stable@2024.04.09 from yt-dlp/yt-dlp
If installed with pip, you will see this message:
ERROR: You installed yt-dlp with pip or using the wheel from PyPi; Use that to update
To upgrade you need to run a command out of two, it depends on how you installed it.
If you installed it via pip, use:
pip install --upgrade yt-dlp
otherwise use:
Example:
pip install --upgrade yt-dlp
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: yt-dlp in /home/xavi/.local/lib/python3.10/site-packages (2023.12.30)
Collecting yt-dlp
Downloading yt_dlp-2024.4.9-py3-none-any.whl (3.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.1/3.1 MB 391.7 kB/s eta 0:00:00
Requirement already satisfied: websockets>=12.0 in /home/xavi/.local/lib/python3.10/site-packages (from yt-dlp) (12.0)
Requirement already satisfied: pycryptodomex in /usr/lib/python3/dist-packages (from yt-dlp) (3.11.0)
Requirement already satisfied: brotli in /usr/lib/python3/dist-packages (from yt-dlp) (1.0.9)
Requirement already satisfied: requests<3,>=2.31.0 in /home/xavi/.local/lib/python3.10/site-packages (from yt-dlp) (2.31.0)
Requirement already satisfied: urllib3<3,>=1.26.17 in /home/xavi/.local/lib/python3.10/site-packages (from yt-dlp) (2.2.0)
Requirement already satisfied: mutagen in /home/xavi/.local/lib/python3.10/site-packages (from yt-dlp) (1.47.0)
Requirement already satisfied: certifi in /usr/lib/python3/dist-packages (from yt-dlp) (2020.6.20)
Requirement already satisfied: charset-normalizer<4,>=2 in /home/xavi/.local/lib/python3.10/site-packages (from requests<3,>=2.31.0->yt-dlp) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /usr/lib/python3/dist-packages (from requests<3,>=2.31.0->yt-dlp) (3.3)
Installing collected packages: yt-dlp
Attempting uninstall: yt-dlp
Found existing installation: yt-dlp 2023.12.30
Uninstalling yt-dlp-2023.12.30:
Successfully uninstalled yt-dlp-2023.12.30
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
spotdl 4.2.4 requires yt-dlp<2024.0.0,>=2023.11.16, but you have yt-dlp 2024.4.9 which is incompatible.
Successfully installed yt-dlp-2024.4.9
You might also install sitewide with root permissions, but it is not recommended. See below:
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Example run as root user:
sudo pip install --upgrade yt-dlp
[sudo] contrasenya per a xavi:
Collecting yt-dlp
Downloading yt_dlp-2024.4.9-py3-none-any.whl (3.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.1/3.1 MB 213.7 kB/s eta 0:00:00
Requirement already satisfied: brotli in /usr/lib/python3/dist-packages (from yt-dlp) (1.0.9)
Collecting mutagen
Downloading mutagen-1.47.0-py3-none-any.whl (194 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 194.4/194.4 KB 565.0 kB/s eta 0:00:00
Requirement already satisfied: certifi in /usr/lib/python3/dist-packages (from yt-dlp) (2020.6.20)
Collecting websockets>=12.0
Downloading websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (130 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 130.2/130.2 KB 398.3 kB/s eta 0:00:00
Collecting requests<3,>=2.31.0
Downloading requests-2.31.0-py3-none-any.whl (62 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.6/62.6 KB 363.6 kB/s eta 0:00:00
Collecting urllib3<3,>=1.26.17
Downloading urllib3-2.2.1-py3-none-any.whl (121 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.1/121.1 KB 599.6 kB/s eta 0:00:00
Requirement already satisfied: pycryptodomex in /usr/lib/python3/dist-packages (from yt-dlp) (3.11.0)
Requirement already satisfied: idna<4,>=2.5 in /usr/lib/python3/dist-packages (from requests<3,>=2.31.0->yt-dlp) (3.3)
Collecting charset-normalizer<4,>=2
Downloading charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 142.1/142.1 KB 553.8 kB/s eta 0:00:00
Installing collected packages: websockets, urllib3, mutagen, charset-normalizer, requests, yt-dlp
Attempting uninstall: urllib3
Found existing installation: urllib3 1.26.5
Not uninstalling urllib3 at /usr/lib/python3/dist-packages, outside environment /usr
Can't uninstall 'urllib3'. No files were found to uninstall.
Attempting uninstall: requests
Found existing installation: requests 2.25.1
Not uninstalling requests at /usr/lib/python3/dist-packages, outside environment /usr
Can't uninstall 'requests'. No files were found to uninstall.
Successfully installed charset-normalizer-3.3.2 mutagen-1.47.0 requests-2.31.0 urllib3-2.2.1 websockets-12.0 yt-dlp-2024.4.9
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Derived from:
Alias names for this page:
playlist | playlists | Youtube | YoutubeLists | YoutubeList | Youtube Lists | Youtube List
Comments