1. Mở đầu
Chắc hẳn ai trong chúng ta cũng từng thử tìm cách download video trên Youtube vì nhiều lý do khác nhau.
Hôm nay mình xin được giới thiệu một phương pháp đơn giản để download video Youtube bằng Python hoặc Command Line mà mình đã đọc được.
※ Mặc dù library nêu trong bài viết không vi phạm bản quyền, tuy nhiên chúng ta cũng cần có trách nhiệm với các video download từ Youtube.
2. Install 「youtube_dl」 library
Trước hết, chúng ta cần install library youtube_dl
pip install youtube_dl
3. Dowload video Youtube với Python
Để download 1 video Youtube, chúng ta chỉ cần tạo và chạy 1 file python với nội dung như dưới đây.
Để download được video mong muốn, ta chỉ cần thay URL https://www.youtube.com/watch?v=~
ở dòng thứ 5 bằng URL của video tương ứng.
※ Nếu giữ nguyên đoạn code dưới đây sẽ có thể download được 1 video ngắn của channel VTV24
from __future__ import unicode_literals
import youtube_dl
ydl_opts = {}
with youtube_dl.YoutubeDL(ydl_opts) as ydl: ydl.download(['https://www.youtube.com/watch?v=dfIho5iC370'])
4. Download video Youtube bằng Command Line
Ngoài ra, sau khi install ta cũng có thể tiến hành download bằng command line. Chỉ với command như dưới đây
youtube-dl [OPTIONS] URL [URL...]
Options
-h, --help Print this help text and exit
--version Print program version and exit
-U, --update Update this program to latest version. Make sure that you have sufficient permissions (run with sudo if needed)
-i, --ignore-errors Continue on download errors, for example to skip unavailable videos in a playlist
--abort-on-error Abort downloading of further videos (in the playlist or the command line) if an error occurs
--dump-user-agent Display the current browser identification
--list-extractors List all supported extractors
--extractor-descriptions Output descriptions of all supported extractors
--force-generic-extractor Force extraction to use the generic extractor
--default-search PREFIX Use this prefix for unqualified URLs. For example "gvsearch2:" downloads two videos from google videos for youtube- dl "large apple". Use the value "auto" to let youtube-dl guess ("auto_warning" to emit a warning when guessing). "error" just throws an error. The default value "fixup_error" repairs broken URLs, but emits an error if this is not possible instead of searching.
--ignore-config Do not read configuration files. When given in the global configuration file /etc/youtube-dl.conf: Do not read the user configuration in ~/.config/youtube-dl/config (%APPDATA%/youtube-dl/config.txt on Windows)
--config-location PATH Location of the configuration file; either the path to the config or its containing directory.
--flat-playlist Do not extract the videos of a playlist, only list them.
--mark-watched Mark videos watched (YouTube only)
--no-mark-watched Do not mark videos watched (YouTube only)
--no-color Do not emit color codes in output
Network Options
--geo-verification-proxy URL Use this proxy to verify the IP address for some geo-restricted sites. The default proxy specified by --proxy (or none, if the option is not present) is used for the actual downloading.
--geo-bypass Bypass geographic restriction via faking X-Forwarded-For HTTP header
--no-geo-bypass Do not bypass geographic restriction via faking X-Forwarded-For HTTP header
--geo-bypass-country CODE Force bypass geographic restriction with explicitly provided two-letter ISO 3166-2 country code
--geo-bypass-ip-block IP_BLOCK Force bypass geographic restriction with explicitly provided IP block in CIDR notation
Trường hợp không thể download video
- Rất có thể phía youtube đã có thay đổi nên bạn không thể download được video
- Những lúc như vậy cần phải chờ update từ library youtube_dl
- Sau khi có bản update, có thể sử dụng command sau để cập nhật bản mới nhất.
pip install -U youtube_dl
5. Kết
youtube_dl là một library khá thú vị đối với người mới bắt đầu với ngôn ngữ Python.
Từ việc sử dụng library này có thể tiếp tục với những ý tưởng lập trình khác mới mẻ hơn (tạo một tool tự động thu thập video Youtube chẳng hạn )
Chúc mọi người có thời gian lập trình, cũng như xem video Youtube vui vẻ !