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') }