Share Cách tải hàng loạt video trên douyin

thantien0

New member
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)
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();
 

Bài viết tương tự

Back
Top