Fitur Terbaru Douyin 2025

Douyin Downloader adalah alat yang memungkinkan Anda mengunduh video dan musik dari platform Douyin dengan mudah.

Muhamad Nur Ibad

25 Januari 20251 menit baca

Douyin Downloader: Cara Mudah Mengunduh Video dan Musik dari Douyin

Douyin, atau dikenal sebagai TikTok di luar China, adalah platform video pendek yang populer dengan berbagai konten menarik. Namun, banyak pengguna yang ingin mengunduh video favorit mereka tanpa watermark atau bahkan musiknya secara langsung. Dalam artikel ini, kami akan membahas cara membuat Douyin Downloader menggunakan Node.js dan API sederhana.

Apa Itu Douyin Downloader?

Douyin Downloader adalah alat yang memungkinkan Anda mengunduh video dan musik dari platform Douyin dengan mudah. Alat ini memanfaatkan API untuk mengambil detail video, seperti judul, thumbnail, dan URL unduhan, kemudian mengunduh file media secara langsung.


Implementasi Script Douyin Downloader

Berikut adalah contoh script yang dapat digunakan untuk membuat Douyin Downloader:

1. Fungsi Utama untuk Mendapatkan Detail Media

import axios from "axios";

const douyin = async (url) => {
  const api = "https://lovetik.app/api/ajaxSearch";
  const payload = { q: url, lang: "en" };

  try {
    const { data } = await axios.post(api, payload, {
      headers: {
        accept: "*/*",
        "content-type": "application/x-www-form-urlencoded",
        referer: "https://lovetik.app/en",
        "user-agent":
          "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36",
      },
      transformRequest: [
        (data) =>
          Object.keys(data)
            .map(
              (key) =>
                `${encodeURIComponent(key)}=${encodeURIComponent(data[key])}`
            )
            .join("&"),
      ],
    });

    const extractData = data.data;

    const downloadUrls =
      extractData.match(
        /https:\/\/(dl\.snapcdn\.app|v\d+-cold\.douyinvod\.com)\/get\?token=[^"]+/g
      ) || [];
    const thumbnailMatch = /<img src="([^"]+)"/.exec(extractData);
    const thumbnail = thumbnailMatch ? thumbnailMatch[1] : null;
    const titleMatch = /<h3>(.*?)<\/h3>/.exec(extractData);
    const title = titleMatch ? titleMatch[1] : null;

    return {
      title,
      thumbnail,
      downloadUrls,
    };
  } catch (error) {
    console.error("Error:", error.message);
    return { error: "Unable to fetch media information at this time." };
  }
};

2. Mengintegrasikan Downloader ke WhatsApp Bot

Script berikut digunakan untuk mengintegrasikan downloader ke dalam bot WhatsApp:

const neura = async (m, { conn, text, command, usedPrefix }) => {
  if (!text) {
    return m.reply(
      `Gunakan format:\n${usedPrefix}${command} <url>\n\nContoh:\n${usedPrefix}${command} https://www.douyin.com/video/7256984651137289483`
    );
  }

  try {
    const result = await douyin(text);

    if (result.error) {
      return m.reply(result.error);
    }

    const { title, downloadUrls } = result;

    if (downloadUrls.length > 0) {
      const videoUrl = downloadUrls[0];
      const musicUrl = downloadUrls[downloadUrls.length - 1];

      // Kirim video
      const video = await axios.get(videoUrl, { responseType: "arraybuffer" });
      const videoBuffer = Buffer.from(video.data);
      await conn.sendFile(m.chat, videoBuffer, "video.mp4", `*Judul:* ${title}`, m);

      // Kirim musik
      const music = await axios.get(musicUrl, { responseType: "arraybuffer" });
      const musicBuffer = Buffer.from(music.data);
      await conn.sendFile(
        m.chat,
        musicBuffer,
        "music.mp3",
        "Ryzxell",
        m,
        false,
        { mimetype: "audio/mpeg" }
      );
    } else {
      m.reply("Gagal mendapatkan media. Silakan coba lagi.");
    }
  } catch (error) {
    console.error(error.message);
    m.reply("Terjadi kesalahan saat memproses permintaan Anda.");
  }
};

neura.command = /^(douyin|dy)$/i;
neura.help = ["douyin <url>"];
neura.tags = ["downloader"];

export default neura;

Fitur Utama Douyin Downloader

1. Unduh Video Tanpa Watermark Downloader ini memungkinkan Anda mengambil video berkualitas tinggi langsung dari Douyin tanpa watermark.

2. Ambil Musik dari Video Selain video, Anda juga dapat mengunduh file musik dari video Douyin.

3. Mudah Digunakan Dengan sintaks sederhana seperti !douyin , pengguna dapat dengan cepat mendapatkan file media.

Kode Lengkap

/*
 * Neura — Community 
 * Saluran WhatsApp: https://whatsapp.com/channel/0029VayjbFK4inonCYjGj42l
 * GitHub: https://github.com/Shouya28
 * WhatsApp: https://wa.me/62895324429899
 * Hi everyone this is my wm don't delete it!
 */

/**
 * Fetches details from Douyin (TikTok) using the provided URL.
 * wm by natsumiworld / ty: kathudhmakanblm and renodispamfemboy 
 * 
 * @param {string} url - Douyin URL to fetch details from.
 * @returns {Promise<{title: string, thumbnail: string, downloadUrl: string[]}|{error: string}>} - An object containing video title, thumbnail URL, and download URLs, or an error object if the request fails.
 */
 
import axios from "axios";
const douyin = async (url) => {
  const api = "https://lovetik.app/api/ajaxSearch";
  const payload = { q: url, lang: "en" };

  try {
    const { data } = await axios.post(api, payload, {
      headers: {
        accept: "*/*",
        "accept-language": "en-US,en;q=0.9",
        "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
        origin: "https://lovetik.app",
        priority: "u=1, i",
        referer: "https://lovetik.app/en",
        "sec-ch-ua":
          '"Not A(Brand";v="8", "Chromium";v="132", "Microsoft Edge";v="132"',
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": '"Windows"',
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-origin",
        "user-agent":
          "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0",
        "x-requested-with": "XMLHttpRequest",
      },
      transformRequest: [
        (data) =>
          Object.keys(data)
            .map(
              (key) =>
                `${encodeURIComponent(key)}=${encodeURIComponent(data[key])}`
            )
            .join("&"),
      ],
    });

    const extractData = data.data;

    const downloadUrls =
      extractData.match(
        /https:\/\/(dl\.snapcdn\.app|v\d+-cold\.douyinvod\.com)\/get\?token=[^"]+/g
      ) || [];
    const thumbnailMatch = /<img src="([^"]+)"/.exec(extractData);
    const thumbnail = thumbnailMatch ? thumbnailMatch[1] : null;
    const titleMatch = /<h3>(.*?)<\/h3>/.exec(extractData);
    const title = titleMatch ? titleMatch[1] : null;

    return {
      title,
      thumbnail,
      downloadUrls,
    };
  } catch (error) {
    console.error("Error:", error.message);
    return {
      error:
        "Unable to fetch media information at this time. Please try again.",
    };
  }
};

const neura = async (m, { conn, text, command, usedPrefix }) => {
  if (!text)
    return m.reply(
      `Gunakan format:\n${usedPrefix}${command} <url>\n\nContoh:\n${usedPrefix}${command} https://www.douyin.com/video/7256984651137289483`
    );

  try {
    const result = await douyin(text);

    if (result.error) {
      return m.reply(result.error);
    }

    const { title, downloadUrls } = result;

    if (downloadUrls.length > 0) {
      const videoUrl = downloadUrls[0]; // Ambil URL video
      const musicUrl = downloadUrls[downloadUrls.length - 1]; // Ambil URL musik (biasanya di posisi terakhir)

      // Kirim video
      const video = await axios.get(videoUrl, { responseType: "arraybuffer" });
      const videoBuffer = Buffer.from(video.data);
      await conn.sendFile(m.chat, videoBuffer, "video.mp4", `*Judul:* ${title}`, m);

      // Kirim musik
      const music = await axios.get(musicUrl, { responseType: "arraybuffer" });
      const musicBuffer = Buffer.from(music.data);
      await conn.sendFile(
        m.chat,
        musicBuffer,
        "music.mp3",
        "Ryzxell",
        m,
        false,
        {
          mimetype: "audio/mpeg",
        }
      );
    } else {
      m.reply("Gagal mendapatkan media. Silakan coba lagi.");
    }
  } catch (error) {
    console.error(error.message);
    m.reply("Terjadi kesalahan saat memproses permintaan Anda.");
  }
};

neura.command = /^(douyin|dy)$/i;
neura.help = ["douyin <url>"];
neura.tags = ["downloader"];

export default neura;

Kesimpulan

Douyin Downloader adalah solusi yang sangat praktis untuk mengunduh konten dari Douyin. Dengan memanfaatkan API dan library seperti Axios, Anda dapat membuat alat serbaguna yang bisa digunakan untuk kebutuhan pribadi atau bahkan diintegrasikan ke dalam bot WhatsApp.

Coba sekarang dan unduh konten favorit Anda dari Douyin dengan mudah!

Referensi:

GitHub Repository

Saluran WhatsApp