Chuyển tới nội dung
yt-dlp

Trình tạo lệnh yt-dlp cho X (Twitter)

Tạo lệnh yt-dlp cho video trên X, với tên file dễ đoán và các tuỳ chọn mà nội dung nhạy cảm yêu cầu.

Không bắt buộc. Để trống thì câu lệnh kết thúc bằng URL để bạn tự điền.

Câu lệnh của bạn

yt-dlp --merge-output-format mp4 --no-playlist -o '%(uploader_id)s - %(id)s.%(ext)s' https://x.com/user/status/1234567890
Cơ bản

Chỉ âm thanh sẽ tách phần tiếng và bỏ luồng video.

Video và chất lượng

Giới hạn chiều cao. yt-dlp vẫn chọn luồng tốt nhất ở mức đó hoặc thấp hơn.

Loại file mà luồng video và âm thanh tách rời được merge vào.

Tuỳ chọn nâng cao (3)

Ghi đè mục chọn chất lượng. Dành cho người đã biết cú pháp format.

Đóng gói lại các luồng mà không encode lại. Nhanh và không mất chất lượng.

Encode lại video. Chậm và giảm chất lượng — chỉ dùng khi remux không được.

Âm thanh

Định dạng mà âm thanh được chuyển sang.

VBR cho tỉ lệ dung lượng trên chất lượng tốt nhất; bitrate cố định thì dễ đoán hơn.

Phụ đề

Nhúng là đặt phụ đề vào trong video; lưu là ghi ra một file .srt riêng bên cạnh.

Cách nhau bằng dấu phẩy. Dùng all để lấy mọi ngôn ngữ có sẵn.

Playlist và kênh

Làm gì khi URL thuộc cả một video lẫn một playlist.

Dùng được cả khoảng và danh sách, ví dụ 1-10,15 hoặc -5::2 để lấy cách một mục tính từ cuối.

Tuỳ chọn nâng cao (1)

Ghi lại những gì đã tải nên chạy lại sẽ bỏ qua chúng. Đây là cách giữ một kênh luôn đồng bộ.

Cắt đoạn và chương
Tuỳ chọn nâng cao (2)

Một khoảng thời gian như *00:01:30-00:03:00, hoặc tên chương. Dấu hoa thị đứng đầu nghĩa là đây là mốc thời gian.

Metadata và ảnh bìa
Tuỳ chọn nâng cao (3)
SponsorBlock

Cắt hẳn các đoạn do cộng đồng đánh dấu ra khỏi file, dựa trên dữ liệu SponsorBlock.

Tuỳ chọn nâng cao (1)

Giữ lại các đoạn nhưng đánh dấu chúng để bạn tự bỏ qua.

Tệp và thư mục

Tên trường đặt trong %(...)s. Dấu gạch chéo sẽ tạo thư mục.

Tuỳ chọn nâng cao (4)

Nơi ghi file. Kết hợp với mẫu tên file ở trên để tạo thư mục con.

Độ dài tên file tối đa, tính theo ký tự.

Bộ lọc
Tuỳ chọn nâng cao (5)

Dạng YYYYMMDD, hoặc ngày tương đối như now-1month.

Dạng YYYYMMDD, hoặc ngày tương đối.

Bỏ qua file nhỏ hơn mức này. Nhận dạng 5M, 500K và tương tự.

Bỏ qua file lớn hơn mức này.

Số file cần tải trước khi dừng lại.

Mạng

Ví dụ 2M hoặc 500K. Hữu ích khi bạn cần để dành băng thông cho việc khác.

Tuỳ chọn nâng cao (5)

Tăng tốc các luồng chia fragment. Bắt đầu với 4 là hợp lý.

Thử lại bao nhiêu lần khi một phần bị lỗi. Dùng được cả infinite.

URL proxy dạng HTTP, HTTPS hoặc SOCKS.

Làm request giống một trình duyệt thật. Đây là cách sửa thường dùng khi đột nhiên bị lỗi 403.

Đăng nhập và cookies

Đọc trực tiếp phiên đăng nhập của bạn. Cần cho nội dung riêng tư, giới hạn tuổi hoặc chỉ dành cho thành viên.

Tuỳ chọn nâng cao (1)

Một file cookies.txt định dạng Netscape xuất ra từ trình duyệt của bạn.

Phát trực tiếp
Tuỳ chọn nâng cao (2)

Kiểm tra liên tục cho tới khi buổi phát đã hẹn bắt đầu. MIN-MAX là số giây giữa các lần kiểm tra.

Xử lý lỗi
Tuỳ chọn nâng cao (3)

Đã lỗi thời, thay bằng --add-headers. Vẫn giữ vì rất nhiều hướng dẫn cũ còn dùng nó.

Đã lỗi thời, thay bằng --add-headers.

Các tuỳ chọn riêng theo từng trang, ví dụ youtube:player_client=web.

Kết quả và gỡ lỗi
Tuỳ chọn nâng cao (2)
Đặt lại

Lưu ý với X

Cả URL x.com và twitter.com đều dùng được. Thứ mọi người gọi là GIF trên X thực ra là video MP4 ngắn, nên chúng tải như mọi video khác; nếu cần GIF thật thì chuyển đổi sau.

Bài có nội dung nhạy cảm cần phiên đăng nhập đã bật thiết lập tương ứng. Mẫu tên file mặc định đặt theo tác giả và id bài viết, giúp một thư mục nhiều video vẫn dễ tra.

X đã thay đổi diện mạo API của mình mấy lần, và hệ quả thực dụng là các bản sửa extractor cập đến trong bản cập nhật yt-dlp chỉ sau vài ngày — một bản cài hơn vài tuần tuổi chính là nơi đa số báo cáo "X hỏng" thực sự cư trú. Hãy update trước khi debug: yt-dlp -U. Quyền truy cập khách đến rồi đi; khi nó bị rút, phiên đã đăng nhập kèm cookies mới là con đường chạy được, và đó cũng là con đường duy nhất tới nội dung nhạy cảm.

Thread và bài trích dẫn là nơi URL gây rối nhất. Một tweet chứa video thì nhúng video đó; cùng video đó trên tab media của profile lại là một mục riêng. Với cả một tài khoản, URL tab media lấy mọi thứ đăng kèm media, phân trang, và file lưu lịch sử cộng với bỏ qua lỗi xử lý các bài đã xoá mà một tài khoản hoạt động chắc chắn tích tụ dần. Tải từ URL tìm kiếm cố ý không được hỗ trợ ở đây: kết quả trôi giữa các lần request, và file lưu lịch sử đối với một kết quả tìm kiếm đang trôi thì vô nghĩa.

X phục vụ video dưới dạng fragment HLS với phương án dự phòng MP4 trong đa số trường hợp, nên merge là chuyện thường và ffmpeg là dependency cần kiểm tra đầu tiên. Các bài "GIF" là ngoại lệ đáng biết: chúng đến dưới dạng MP4 như mọi thứ khác, và chuyển thành GIF thật về sau là việc của ffmpeg, không phải của yt-dlp — một file WebM lặp vòng thường cũng gần hơn với ý người gửi.

Bài giới hạn tuổi và nội dung nhạy cảm là bức tường cứng: thiết lập nằm trong tài khoản, không nằm trong câu lệnh. Đăng nhập qua trình duyệt một lần, bật thiết lập cho nội dung nhạy cảm, đưa cookies sang, và nó chạy — không có cách nào lách được nếu thiếu cookies, vì X kiểm tra phiên ở phía máy chủ. Bài đã xoá thì như mọi nơi khác: mất là mất, và những mirror từng giữ bản sao cũng đóng cửa từ nhiều năm trước.

Câu hỏi thường gặp

Vì sao bài giới hạn tuổi trên X bị lỗi?
Bài có nội dung nhạy cảm cần phiên đăng nhập. Hãy dùng --cookies-from-browser với một tài khoản đã bật thiết lập đó.
Tải GIF từ X thế nào?
Chúng là video MP4 chứ không phải GIF, và tải như mọi video khác. Nếu cần GIF thật thì chuyển đổi sau.
Tôi chọn được chất lượng video trên X không?
Được. X phát nhiều bản khác nhau; hãy giới hạn chiều cao bằng mục chọn chất lượng, hoặc liệt kê trước bằng -F.