Zavier Optima
Back to Dashboard

Tiktok Search

Open Source

Script pencarian video TikTok.

JAVASCRIPT & ESM
import axios from 'axios'

const handler = async (m, { conn, usedPrefix, command, text }) => {
  if (!text) throw `🚩 *Example :* ${usedPrefix + command} DJ Malam pagi`
  try {
    conn.sendMessage(m.chat, { react: { text: '🕒', key: m.key } })
    let teks = ` *T I K T O K - S E A R C H*\n\n`
    let res = await tiktoks(text)

    const formatNumber = (integer) => {
      return Number.parseInt(integer).toLocaleString('id-ID').replace(/,/g, '.')
    }
    
    teks += `  ∘  *Title* : ${res.title}\n`
    teks += `  ∘  *Username* : ${res.unique_id}\n`
    teks += `  ∘  *Nickname* : ${res.nickname}\n`
    teks += `  ∘  *Region* : ${res.region}\n`
    teks += `  ∘  *ID* : ${res.videoid}\n`
    teks += `  ∘  *Duration* : ${timeFormat(res.duration)}\n`
    teks += `  ∘  *Views* : ${formatNumber(res.views)}\n`
    teks += `  ∘  *Play* : ${formatNumber(res.play)}\n`
    teks += `  ∘  *Comment* : ${formatNumber(res.comment)}\n`
    teks += `  ∘  *Share* : ${formatNumber(res.share)}\n`
    teks += `  ∘  *Download* : ${formatNumber(res.download)}\n`
    teks += `  ∘  *Upload* : ${toDate(res.uploaded)}`
    
    await conn.sendMessage(m.chat, { video: { url: res.no_watermark }, mimetype: 'video/mp4', caption: teks }, { quoted: m })
  } catch (err) {
    m.reply('Not Found ' + err)
  }
}

handler.help = ['tiktoksearch']
handler.tags = ['internet', 'search']
handler.command = ['tiktoks', 'tiktoksearch', 'ttsearch']
handler.limit = true

export default handler

const tiktoks = async (query) => {
  return new Promise(async (resolve, reject) => {
    try {
      const response = await axios({
        method: 'POST',
        url: 'https://tikwm.com/api/feed/search',
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
          'Cookie': 'current_language=en',
          'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36'
        },
        data: {
          keywords: query,
          count: 10,
          cursor: 0,
          HD: 1
        }
      })
      const videos = response.data.data.videos
      if (videos.length === 0) {
        reject("Tidak ada video ditemukan.")
      } else {
        const gywee = Math.floor(Math.random() * videos.length)
        const videorndm = videos[gywee] 

        const result = {
          unique_id: videorndm.author.unique_id,
          nickname: videorndm.author.nickname,
          title: videorndm.title,
          region: videorndm.region,
          videoid: videorndm.video_id,
          duration: videorndm.duration,
          views: videorndm.play_count,
          play: videorndm.play_count,
          comment: videorndm.comment_count,
          share: videorndm.share_count,
          download: videorndm.download_count,
          uploaded: videorndm.create_time,
          cover: videorndm.cover,
          origin_cover: videorndm.origin_cover,
          no_watermark: videorndm.play,
          watermark: videorndm.wmplay,
          music: videorndm.music
        }
        resolve(result)
      }
    } catch (error) {
      reject(error)
    }
  })
}

const timeFormat = (seconds) => {
  const minutes = Math.floor(seconds / 60)
  const remainingSeconds = seconds % 60
  return `${minutes}m ${remainingSeconds}s`
}

const toDate = (timestamp) => {
  const date = new Date(timestamp * 1000) 
  return date.toLocaleString('id-ID')
}

© 2024 ZavierOptima Archive.