← back to browse
goat command

lyrics

get lyrics video

0
views
0
likes
0
installs

Aliases: lrvideo

raw source
const { GoatWrapper } = require('fca-liane-utils');
const axios = require('axios');

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

async function fetchLyricsVideos(query) {
  try {
    const response = await axios.get(`https://short-video-api-by-arafat.vercel.app/arafat?keyword=${encodeURIComponent(query + " lyrics video")}`);
    return response.data;
  } catch (error) {
    console.error("API Error:", error);
    return null;
  }
}

module.exports = {
  config: {
    name: "lyrics",
    aliases: ["lrvideo"],
    author: "๐—”๐—ฟ๐—ฎ๐—ณ๐—ฎ๐˜",
    version: "1.0",
    shortDescription: {
      en: "get lyrics video",
    },
    longDescription: {
      en: "search for songs' lyrics videos",
    },
    category: "๐— ๐—˜๐——๐—œ๐—”",
    guide: {
      en: "{p}{n} [song name]",
    },
  },

  onStart: async function ({ api, event, args }) {
    const query = args.join(' ');
    if (!query) {
      return api.sendMessage("#๐ฅ๐ซ๐ฏ๐ข๐๐ž๐จ ๐’๐จ๐ง๐  ๐ง๐š๐ฆ๐ž", event.threadID, event.messageID);
    }

    api.setMessageReaction("๐Ÿฆ‹", event.messageID, () => {}, true);
    
    const videos = await fetchLyricsVideos(query);

    if (!Array.isArray(videos) || videos.length === 0) {
      return api.sendMessage(`"${query}" ๐๐จ๐ญ ๐…๐จ๐ฎ๐ง๐`, event.threadID, event.messageID);
    }

    const selectedVideo = videos[Math.floor(Math.random() * videos.length)];
    const videoUrl = selectedVideo.videoUrl;

    if (!videoUrl) {
      return api.sendMessage("๐๐จ ๐ฅ๐ฒ๐ซ๐ข๐œ๐ฌ ๐•๐ข๐๐ž๐จ ๐…๐จ๐ฎ๐ง๐", event.threadID, event.messageID);
    }

    try {
      const videoStream = await getStreamFromURL(videoUrl);
      await api.sendMessage({
        body: `๐‹๐ฒ๐ซ๐ข๐œ๐ฌ: ${query}`,
        attachment: videoStream,
      }, event.threadID, event.messageID);
    } catch (error) {
      console.error(error);
      api.sendMessage("๐„๐ซ๐ซ๐จ๐ซ ๐๐š๐›๐ฒ ๐Ÿฅบ", event.threadID, event.messageID);
    }
  },
};

const wrapper = new GoatWrapper(module.exports);
wrapper.applyNoPrefix({ allowPrefix: true });

View raw file