UNPKG

tiktermux

Version:

Scraper for downloading media in the form of videos, images and audio from Tiktok. Also for stalking Tiktok Users

123 lines (122 loc) 4.99 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SearchVideo = void 0; const axios_1 = __importDefault(require("axios")); const api_1 = require("../../constants/api"); const params_1 = require("../../constants/params"); const socks_proxy_agent_1 = require("socks-proxy-agent"); const https_proxy_agent_1 = require("https-proxy-agent"); const tiktokService_1 = require("../../services/tiktokService"); const SearchVideo = async (keyword, cookie, page = 1, proxy) => new Promise(async (resolve) => { if (!cookie) { return resolve({ status: "error", message: "Cookie is required!" }); } const Tiktok = new tiktokService_1.TiktokService(); const url = new URL((0, api_1._tiktokSearchVideoFull)((0, params_1._videoSearchParams)(keyword, page))); const signature = Tiktok.generateSignature(url); url.searchParams.append("_signature", signature); const xbogus = Tiktok.generateXBogus(url, signature); url.searchParams.append("X-Bogus", xbogus); (0, axios_1.default)((0, api_1._tiktokSearchVideoFull)((0, params_1._videoSearchParams)(keyword, page)), { method: "GET", headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0", cookie: typeof cookie === "object" ? cookie.map((v) => `${v.name}=${v.value}`).join("; ") : cookie }, httpsAgent: (proxy && (proxy.startsWith("http") || proxy.startsWith("https") ? new https_proxy_agent_1.HttpsProxyAgent(proxy) : proxy.startsWith("socks") ? new socks_proxy_agent_1.SocksProxyAgent(proxy) : undefined)) || undefined }) .then(({ data }) => { if (data.status_code === 2483) return resolve({ status: "error", message: "Invalid cookie!" }); if (data.status_code !== 0) return resolve({ status: "error", message: data.status_msg || "An error occurred! Please report this issue to the developer." }); if (!data.item_list) return resolve({ status: "error", message: "Video not found!" }); const result = []; data.item_list.forEach((v) => { const video = { id: v.video.id, ratio: v.video.ratio, cover: v.video.cover, originCover: v.video.originCover, dynamicCover: v.video.dynamicCover, playAddr: v.video.playAddr, downloadAddr: v.video.downloadAddr, format: v.video.format }; const stats = { diggCount: v.stats.diggCount, shareCount: v.stats.shareCount, commentCount: v.stats.commentCount, playCount: v.stats.playCount, collectCount: v.stats.collectCount }; const author = { id: v.author.id, uniqueId: v.author.uniqueId, nickname: v.author.nickname, avatarThumb: v.author.avatarThumb, avatarMedium: v.author.avatarMedium, avatarLarger: v.author.avatarLarger, signature: v.author.signature, verified: v.author.verified, secUid: v.author.secUid, openFavorite: v.author.openFavorite, privateAccount: v.author.privateAccount, isADVirtual: v.author.isADVirtual, tiktokSeller: v.author.ttSeller, isEmbedBanned: v.author.isEmbedBanned }; const music = { id: v.music.id, title: v.music.title, playUrl: v.music.playUrl, coverThumb: v.music.coverThumb, coverMedium: v.music.coverMedium, coverLarge: v.music.coverLarge, authorName: v.music.authorName, original: v.music.original, album: v.music.album, duration: v.music.duration, isCopyrighted: v.music.isCopyrighted }; result.push({ id: v.id, desc: v.desc, createTime: v.createTime, author, stats, video, music }); }); resolve({ status: "success", result, page, totalResults: result.length }); }) .catch((e) => { resolve({ status: "error", message: e.message }); }); }); exports.SearchVideo = SearchVideo;