Share ae chưa biết cách tải hàng loạt video trên douyin bằng code sau:
B1: Truy cập vào trang douyin bạn muốn tải
B2: Nhấn F12 hoặc CTR+SHIFT+I chọn vào mục console
B3: Sao chép đoạn code dán vào phía dưới sau đó nhấn Enter chọn 0 nếu muốn tải toàn bộ kênh, hoặc chọn số lượng bao nhiêu thì nhập vào ô trống đó( Nếu trình duyệt hỏi thì nhấn vào Allow)
B1: Truy cập vào trang douyin bạn muốn tải
B2: Nhấn F12 hoặc CTR+SHIFT+I chọn vào mục console
B3: Sao chép đoạn code dán vào phía dưới sau đó nhấn Enter chọn 0 nếu muốn tải toàn bộ kênh, hoặc chọn số lượng bao nhiêu thì nhập vào ô trống đó( Nếu trình duyệt hỏi thì nhấn vào Allow)
JavaScript:
var getid = async function (sec_user_id, max_cursor) {
var res = await fetch("https://www.douyin.com/aweme/v1/web/aweme/post/?device_platform=webapp&aid=6383&channel=channel_pc_web&sec_user_id=" + sec_user_id + "&max_cursor=" + max_cursor, {
"headers": {
"accept": "application/json, text/plain, */*",
"accept-language": "vi",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36",
"referer": "https://www.douyin.com/user/MS4wLjABAAAAu8qwDm1-muGuMhZZ-tVzyPVWlUxIbQRNJN_9k83OhWU"
},
"referrerPolicy": "strict-origin-when-cross-origin",
"body": null,
"method": "GET",
"mode": "cors",
"credentials": "include"
});
try {
res = await res.json();
} catch (e) {
res = await getid(sec_user_id, max_cursor);
console.log(e);
}
return res;
}
var download = async function (url, aweme_id, desc) {
var file_name = aweme_id + "-" + desc + ".mp4";
var data = await fetch(url, {
"headers": {
"accept": "*/*",
"accept-language": "vi,en-US;q=0.9,en;q=0.8",
"range": "bytes=0-",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36",
"referer": "https://www.douyin.com/"
},
"referrerPolicy": "strict-origin-when-cross-origin",
"body": null,
"method": "GET",
"mode": "cors",
"credentials": "omit"
});
data = await data.blob();
var a = document.createElement("a");
a.href = window.URL.createObjectURL(data);
a.download = file_name;
a.click();
}
var waitforme = function (millisec) {
return new Promise(resolve => {
setTimeout(() => { resolve('') }, millisec);
})
}
var run = async function () {
var result = [];
var hasMore = 1;
var sec_user_id = location.pathname.replace("/user/", "");
var max_cursor = 0;
var download_from = prompt("Enter video ID (Enter 0 to download all videos):", "");
if (download_from == null || download_from == "") {
alert("Please enter the video ID!");
return;
}
while (hasMore == 1) {
var moredata = await getid(sec_user_id, max_cursor);
hasMore = moredata['has_more'];
max_cursor = moredata['max_cursor'];
for (var i in moredata['aweme_list']) {
if (moredata['aweme_list'][i]['aweme_id'] == download_from) {
hasMore = 0;
break;
}
if (moredata['aweme_list'][i]['video']['play_addr']['url_list'][0].startsWith("https"))
result.push([moredata['aweme_list'][i]['video']['play_addr']['url_list'][0], moredata['aweme_list'][i]['aweme_id'], moredata['aweme_list'][i]['desc']]);
else
result.push([moredata['aweme_list'][i]['video']['play_addr']['url_list'][0].replace("http", "https"), moredata['aweme_list'][i]['aweme_id'], moredata['aweme_list'][i]['desc']]);
console.clear();
console.log("Number of videos: " + result.length);
}
}
for (var i = result.length - 1; i >= 0; i--) {
await waitforme(5000);
try { download(result[i][0], result[i][1], result[i][2]); } catch { }
}
}
run();