← back to browse
goat command

tikedit

No description

1
views
0
likes
1
installs
raw source
const axios = require("axios");
const fs = require("fs-extra");
const path = require("path");

const baseApiUrl = async () => {
        const base = await axios.get("https://raw.githubusercontent.com/mahmudx7/HINATA/main/baseApiUrl.json");
        return base.data.mahmud;
};

module.exports = {
        config: {
                name: "tikedit",
                version: "1.7",
                author: "ajmaul",
                countDown: 10,
                role: 0,
                description: {
                        bn: "টিকটক থেকে যেকোনো এডিট ভিডিও সার্চ করে ডাউনলোড করুন",
                        en: "Search and download any edit video from TikTok",
                        vi: "Tìm kiếm và tải xuống bất kỳ video chỉnh sửa nào từ TikTok"
                },
                category: "media",
                guide: {
                        bn: '   {pn} <নাম>: (যেমন: {pn} naruto edit)',
                        en: '   {pn} <keyword>: (Ex: {pn} naruto edit)',
                        vi: '   {pn} <từ khóa>: (VD: {pn} naruto edit)'
                }
        },

        langs: {
                bn: {
                        noInput: "× বেবি, কী ভিডিও খুঁজছো? নাম দাও! 🔍\nউদাহরণ: {pn} naruto edit",
                        tooLarge: "× ভিডিওটি ২৫ মেগাবাইটের বেশি বড়, তাই পাঠানো সম্ভব হয়নি।",
                        success: "🎬 | আপনার জন্য \"%1\" এর ভিডিও এখানে রয়েছে:",
                        error: "× সমস্যা হয়েছে: %1। প্রয়োজনে Contact Aizen।"
                },
                en: {
                        noInput: "× Baby, please provide a search keyword! 🔍\nExample: {pn} naruto edit",
                        tooLarge: "× The video is larger than 25MB. Cannot send.",
                        success: "🎬 | Here's your TikTok edit for \"%1\":",
                        error: "× API error: %1. Contact Aizen for help."
                },
                vi: {
                        noInput: "× Cưng ơi, hãy nhập từ khóa tìm kiếm! 🔍\nVD: {pn} naruto edit",
                        tooLarge: "× Video lớn hơn 25MB. Không thể gửi.",
                        success: "🎬 | Đây là video TikTok cho \"%1\":",
                        error: "× Lỗi: %1. Liên hệ Aizen để hỗ trợ."
                }
        },

        onStart: async function ({ api, event, args, message, getLang }) {

                const keyword = args.join(" ");
                if (!keyword) return message.reply(getLang("noInput"));

                const cacheDir = path.join(__dirname, "cache");
                if (!fs.existsSync(cacheDir)) fs.mkdirSync(cacheDir, { recursive: true });
                const videoPath = path.join(cacheDir, `tik_${Date.now()}.mp4`);

                try {
                        
                        api.setMessageReaction("⌛", event.messageID, () => {}, true);

                        const baseUrl = await baseApiUrl();
                        const response = await axios({
                                method: 'GET',
                                url: `${baseUrl}/api/tiksr`,
                                params: { sr: keyword },
                                responseType: 'stream'
                        });

                        const writer = fs.createWriteStream(videoPath);
                        response.data.pipe(writer);

                        await new Promise((resolve, reject) => {
                                writer.on('finish', resolve);
                                writer.on('error', reject);
                        });

                        const stats = fs.statSync(videoPath);
                        if (stats.size > 26214400) { 
                                api.setMessageReaction("❌", event.messageID, () => {}, true);
                                if (fs.existsSync(videoPath)) fs.unlinkSync(videoPath);
                                return message.reply(getLang("tooLarge"));
                        }

                        await message.reply({
                                body: getLang("success", keyword),
                                attachment: fs.createReadStream(videoPath)
                        }, () => {
                                api.setMessageReaction("✅", event.messageID, () => {}, true);
                                if (fs.existsSync(videoPath)) fs.unlinkSync(videoPath);
                        });

                } catch (err) {
                        console.error("TikTok Search Error:", err);
                        api.setMessageReaction("❌", event.messageID, () => {}, true);
                        if (fs.existsSync(videoPath)) fs.unlinkSync(videoPath);
                        return message.reply(getLang("error", err.message));
                }
        }
};

View raw file