← back to browse
goat command

car

Get car edit videos only

0
views
0
likes
0
installs

Aliases: cars, caredit, carvid

raw source
const axios = require('axios');

async function getStreamFromURL(url) {
  const response = await axios.get(url, { responseType: 'stream' });
  return response.data;
}

async function fetchCarEditVideos(query) {
  try {
    const response = await axios.get(
      `https://lyric-search-neon.vercel.app/kshitiz?keyword=${encodeURIComponent(query)}`
    );
    return response.data;
  } catch (error) {
    console.error("❌ | API Fetch Error:", error.message);
    return null;
  }
}

module.exports = {
  config: {
    name: "car",
    aliases: ["cars", "caredit", "carvid"],
    author: "Alim",
    version: "1.4",
    role: 0,
    shortDescription: {
      en: "Get car edit videos only",
    },
    longDescription: {
      en: "Fetches short car aesthetic/cinematic edit videos. If no match found, sends a random one under 1 minute.",
    },
    category: "media",
    guide: {
      en: "{pn} [optional keyword]",
    },
  },

  onStart: async function ({ api, event, args }) {
    const query = args.join(" ") || "car edit";
    api.setMessageReaction("🚗", event.messageID, () => {}, true);

    const videos = await fetchCarEditVideos(query);

    if (!videos || videos.length === 0) {
      return api.sendMessage(`❌ | Couldn't fetch videos. Try again later.`, event.threadID, event.messageID);
    }

    // Filter only car-related videos
    const isCarEdit = v => {
      const title = v.title?.toLowerCase() || "";
      const desc = v.description?.toLowerCase() || "";
      const match = /car\s*edit|supercar|civic|gtr|bmw|lamborghini|drift|aesthetic\s*car/i;
      return match.test(title) || match.test(desc);
    };

    const short = v => v.duration && Number(v.duration) < 60;

    const filtered = videos.filter(v => isCarEdit(v) && short(v));

    const finalList = filtered.length > 0 ? filtered : videos.filter(short);

    if (finalList.length === 0) {
      return api.sendMessage(`❌ | No suitable video found.`, event.threadID, event.messageID);
    }

    const selected = finalList[Math.floor(Math.random() * finalList.length)];
    const videoUrl = selected.videoUrl;

    if (!videoUrl) {
      return api.sendMessage("⚠️ | Video URL missing.", event.threadID, event.messageID);
    }

    try {
      const stream = await getStreamFromURL(videoUrl);
      await api.sendMessage({
        body: `• 𝐇𝐞𝐫𝐞 𝐢𝐬 𝐲𝐨𝐮𝐫 𝐂𝐚𝐫 𝐯𝐢𝐝𝐞𝐨  <😘`,
        attachment: stream,
      }, event.threadID, event.messageID);
    } catch (err) {
      console.error("❌ | Stream Error:", err.message);
      api.sendMessage("⚠️ | Failed to send video.", event.threadID, event.messageID);
    }
  },
};

View raw file