Cách tải video Douyin hàng loạt không logo bằng Console
Tôi đã tải thành công 44 video Douyin không logo. Hướng dẫn dùng script miễn phí, chuyển tab để thu đủ video và lưu cả danh sách về máy.
Tôi cần tải nhiều video từ một kênh Douyin về máy. Tải từng link thì mất công, nên tôi làm một script chạy ngay trong Console của trình duyệt.
Lần thử đầu khá vướng: kênh hiện 44 video nhưng script chỉ thu được 24. Sau đó có lúc danh sách chỉ còn 7, rồi lên 39. Đến bản v2.2 và sau khi thu lại danh sách đúng cách, tôi đã tải thành công cả 44 video. Các video tải về trong lần thử này đều không có logo Douyin.
Thao tác để thu đủ danh sách là: dán script, bấm sang tab khác trong hồ sơ, quay lại tab Tác phẩm rồi kéo xuống hết video. Đây là bước tôi muốn ghi lại trước, vì bỏ qua nó thì lệnh tải có chạy cũng chỉ tải được những video script đã thu.
Cần chuẩn bị gì để tải video Douyin hàng loạt
Bạn cần máy tính, trình duyệt và script Douyin miễn phí trong mục Tài nguyên. Bản dùng trong bài là v2.2, dành cho trang Douyin trên máy tính. Chưa dùng cho TikTok.
Không cần cài tiện ích, Python hay Docker. Bạn sẽ mở Console và chạy vài dòng JavaScript, nên tôi xếp bài này vào nhóm kỹ thuật. Script chạy trong tab Douyin; blog không nhận cookie hay danh sách video của bạn.
Bước 1: mở hồ sơ Douyin và chạy script
Vào trang tài nguyên, bấm Tải script miễn phí. Mở file douyin-console.js bằng Notepad hoặc trình soạn thảo, đọc mã rồi sao chép toàn bộ.
Mở hồ sơ kênh cần tải trên www.douyin.com. Đăng nhập nếu trang yêu cầu. Nhấn F12, chọn Console, dán script và nhấn Enter. Nếu F12 không mở DevTools, thử Ctrl + Shift + J trên Chrome hoặc Edge.
Chỉ dán mã bạn đã kiểm tra và tin tưởng. Nếu trình duyệt cảnh báo khi dán, hãy đọc cảnh báo trước khi tiếp tục.
Kiểm tra phiên bản đang chạy:
mhthangDouyin.version
Trong bài này, kết quả là "2.2".
Bước 2: chuyển tab rồi quay lại để thu toàn bộ video
Sau khi script đã chạy, làm theo thứ tự này:
- Bấm sang một tab khác trong hồ sơ, chẳng hạn tab Thích nếu có thể mở.
- Bấm lại tab Tác phẩm (作品).
- Kéo xuống để Douyin nạp thêm video. Chờ các video mới hiện ra rồi tiếp tục kéo, đến khi hết danh sách.
- Kiểm tra số video script đã thu bằng lệnh dưới đây.
mhthangDouyin.count()
Kênh tôi thử có 44 video. Sau khi làm lại các bước trên với bản v2.2, danh sách thu được đủ 44 và tôi tải thành công cả 44 file.
Bạn cần chuyển tab trong hồ sơ Douyin, không phải chuyển sang một tab trình duyệt khác. Cũng đừng tải lại trang sau khi thu xong: tải lại sẽ mất danh sách của phiên đang chạy và bạn phải dán script lại.
Nếu số thu được vẫn thiếu, chạy:
mhthangDouyin.stats()
Xem videos để biết số video có link tải, images để biết số bài ảnh và missingStream để biết số mục thiếu link. hasMore: false chỉ cho biết response gần nhất báo hết trang; nó không chứng minh script đã đọc được những trang nạp trước đó.
Bước 3: tải tất cả video đã thu về máy
Khi số lượng đã đúng, chạy:
await mhthangDouyin.download({
limit: mhthangDouyin.count(),
concurrency: 2
})
Lệnh này đặt giới hạn theo toàn bộ danh sách vừa thu, thay vì giới hạn mặc định 20 video. Script tải 2 video cùng lúc. Nếu trình duyệt hỏi quyền tải nhiều file từ Douyin, cho phép để lượt tải tiếp tục.
Chờ lượt tải xong rồi kiểm tra thư mục Downloads. Trong chế độ này, thông báo thành công của script có nghĩa là đã gửi yêu cầu lưu cho trình duyệt; số file thực tế trong thư mục mới là thứ cần đối chiếu.
Bạn có thể chạy lại lệnh để thử các mục còn lỗi. Những mục đã được script ghi nhận thành công sẽ được bỏ qua trong cùng phiên. Đừng đóng tab khi đang tải.
Tải video nặng vào một thư mục riêng
Chế độ Downloads mặc định giới hạn 256 MB mỗi video và giữ dữ liệu file trong RAM trước khi lưu. Với video nặng, bạn có thể ghi trực tiếp vào thư mục:
await mhthangDouyin.download({
limit: mhthangDouyin.count(),
concurrency: 2,
saveTo: 'folder',
maxMB: 2048
})
Nếu Chrome hoặc Edge của bạn hỗ trợ, trên trang sẽ hiện nút MHTHANG: Chọn thư mục lưu video. Bấm nút, chọn thư mục và cấp quyền lưu. Script ghi từng phần xuống ổ đĩa; một file chỉ được tính thành công sau khi ghi và đóng xong.
maxMB: 2048 đặt giới hạn 2 GB mỗi video. Đây là giới hạn cấu hình, tôi chưa thử một video Douyin thật nặng 2 GB. Không nên hiểu con số này là kết quả kiểm thử.
Chế độ thư mục cho phép tối đa 4 video cùng lúc. Có thể thử concurrency: 3, nhưng nhiều luồng hơn không chắc nhanh hơn. Tốc độ còn phụ thuộc mạng và máy chủ phát video. Tôi chưa đo tốc độ để đưa ra một con số so sánh.
Muốn dừng lượt tải đang chạy:
mhthangDouyin.cancel()
Script chưa hỗ trợ tải tiếp từ phần file đã nhận. Một lần thử lại sẽ tải file đó từ đầu.
Vì sao lúc đầu chỉ thu được 24 hoặc 39 video
Hai lỗi tôi gặp có nguyên nhân khác nhau.
Trường hợp 24/44 xảy ra khi tôi dán script sau lúc trang đã hiện sẵn 20 video đầu. Bản cũ chỉ thu được các response trả về sau đó, tức 24 video còn lại. Chuyển tab rồi quay lại Tác phẩm giúp trang nạp lại danh sách khi script đã bắt đầu theo dõi.
Còn trường hợp 39/44 là do bộ lọc tác giả. Kênh có bài đồng sáng tạo, được Douyin đánh dấu 共创. Tác giả chính trong dữ liệu của những bài đó có thể khác chủ hồ sơ, nên bộ lọc cũ loại mất 5 mục. Bản v2.2 đã sửa để nhận cả các bài này khi chúng nằm trong response danh sách của đúng hồ sơ đang mở.
Vì vậy, nếu đang dùng bản cũ, hãy lấy lại file ở trang tài nguyên. Dán bản mới rồi chuyển tab, quay lại và cuộn hết một lượt để thu lại danh sách.
Video tải về có thật sự không logo không
Trong lần thử của tôi, cả 44 video tải thành công đều không có logo Douyin. Script lấy link phát có trong dữ liệu trang, không chạy một bước xử lý hình ảnh để xóa logo.
Nếu người làm video đã chèn chữ hoặc logo vào nội dung, phần đó vẫn còn. Kết quả 44 video là kết quả của kênh tôi thử, không phải cam kết mọi video trên Douyin đều giống nhau.
Script bỏ qua bài ảnh và chỉ lấy những video mà tài khoản của bạn xem được. Danh sách hiện giữ tối đa 2.000 video trong một tab. Với kênh khác, hãy đối chiếu số đã thu và số file đã lưu trước khi coi là tải đủ.
Nếu tải lỗi, thu lại danh sách rồi thử lại vì link phát có thể hết hạn. Lỗi CORS ở chính request tải video có thể chặn việc tải; còn lỗi từ imapi.douyin.com liên quan đến tin nhắn không phải lỗi tải video.
Tải nội dung của bạn hoặc nội dung bạn có quyền sử dụng. Việc lưu được file không đồng nghĩa được phép đăng lại.
