/* * Name: Get Story Tiktok * Description: Ngambil Video Story Tiktok Target * Credit by zx * Note: Kalau Mau di sher lagi kasih sumber/credit ya 😡😡 * * Sumber: https://whatsapp.com/channel/0029VbDLqe7EquiSF4STU13o * * URL WEBSITE UPLOADER GRATIS: https://zfile.web.id/ * Website Uploader File Gratis yang bisa memberikan url public untuk mendownload File tersebut * */ async function getStoryTiktok(uniqueId) { const headers = { 'Accept': 'application/json, text/plain, */*', 'Content-Type': 'application/json', 'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36', 'Referer': 'https://ttviewer.net/id/tiktok-story', 'Origin': 'https://ttviewer.net' }; try { const profileResponse = await fetch('https://ttviewer.net/api/tiktok/get-profile', { method: 'POST', headers: headers, body: JSON.stringify({ unique_id: uniqueId }) }); const profileData = await profileResponse.json(); if (profileData.code !== 0 || !profileData.data?.user?.id) { throw new Error(`User dengan username "${uniqueId}" tidak ditemukan.`); } const userId = profileData.data.user.id; const userInfo = { id: userId, uniqueId: profileData.data.user.uniqueId, nickname: profileData.data.user.nickname, avatar: profileData.data.user.avatarThumb, signature: profileData.data.user.signature }; const storyResponse = await fetch('https://ttviewer.net/api/tiktok/get-story', { method: 'POST', headers: headers, body: JSON.stringify({ userId: userId, maxCursor: 0 }) }); const storyData = await storyResponse.json(); if (storyData.code !== 0) { throw new Error('Gagal mengambil data story dari server.'); } const rawItems = storyData.data?.items || []; const stories = rawItems.map(item => ({ aweme_id: item.aweme_id, video_id: item.video_id, duration: item.duration, play_url: item.play, cover_url: item.cover, music: { title: item.music_info?.title || 'Original Sound', author: item.music_info?.author || 'Unknown', url: item.music }, stats: { play_count: item.play_count, digg_count: item.digg_count, comment_count: item.comment_count, share_count: item.share_count }, create_time: item.create_time })); return { success: true, user: userInfo, story_count: stories.length, stories: stories }; } catch (error) { console.error('Error:', error.message); return { success: false, message: error.message }; } } // Cara Penggunaan (async () => { const targetUsername = 'dedytunarsih.co'; console.log(`Sedang mencari story untuk @${targetUsername}...`); const result = await getStoryTiktok(targetUsername); if (result.success) { console.log(`\nBerhasil! Ditemukan ${result.story_count} story.`); console.log(`Nickname: ${result.user.nickname}`); if (result.story_count > 0) { console.log('\n--- Detail Story ---'); result.stories.forEach((story, index) => { console.log(`\n[Story ${index + 1}]`); console.log(`Video ID : ${story.video_id}`); console.log(`Durasi : ${story.duration} detik`); console.log(`Play URL : ${story.play_url}`); console.log(`Cover : ${story.cover_url}`); console.log(`Views : ${story.stats.play_count}`); }); } else { console.log('User tidak memiliki story yang aktif saat ini.'); } } else { console.log(`Gagal: ${result.message}`); } })();