| const axios = require('axios'); | |
| module.exports.config = { | |
| name: "regco", | |
| version: "1.0.1", | |
| hasPermssion: 0, | |
| credits: "Jonell Magallanes", | |
| description: "Recognize music", | |
| usePrefix: true, | |
| commandCategory: "Tool", | |
| usages: "Utility", | |
| cooldowns: 5, | |
| }; | |
| module.exports.languages = { | |
| "vi": { | |
| "invalidFormat": "β Tin nhαΊ―n bαΊ‘n phαΊ£n hα»i phαΊ£i lΓ mα»t audio, video, αΊ£nh nΓ o ΔΓ³" | |
| }, | |
| "en": { | |
| "invalidFormat": "β You need to reply to a message containing audio or video" | |
| } | |
| }; | |
| module.exports.run = async ({ api, event, getText }) => { | |
| if (event.type !== "message_reply") | |
| return api.sendMessage(getText("invalidFormat"), event.threadID, event.messageID); | |
| if (!event.messageReply.attachments || event.messageReply.attachments.length === 0) | |
| return api.sendMessage(getText("invalidFormat"), event.threadID, event.messageID); | |
| if (event.messageReply.attachments.length > 1) | |
| return api.sendMessage(getText("invalidFormat"), event.threadID, event.messageID); | |
| const pro = await api.sendMessage("Uploading Attachment URL.....", event.threadID, event.messageID); | |
| const attachmentUrl = event.messageReply.attachments[0].url; | |
| const apiUrl = `https://ccprojectsapis.zetsu.xyz/api/recog?url=${attachmentUrl}`; | |
| const config = { | |
| headers: { | |
| 'User-Agent': 'Mozilla/5.0' | |
| } | |
| }; | |
| const retryLimit = 4; | |
| let attempt = 0; | |
| let responseData = null; | |
| const retryMessages = [ | |
| "Retrying to recognize the music...", | |
| "Still trying to recognize the music...", | |
| "Last attempt to recognize the music...", | |
| "Final retry to recognize the music..." | |
| ]; | |
| while (attempt < retryLimit) { | |
| try { | |
| if (attempt > 0) { | |
| api.editMessage(retryMessages[attempt - 1], pro.messageID, event.threadID, event.messageID); | |
| } else { | |
| api.editMessage("Recognizing music...", pro.messageID, event.threadID, event.messageID); | |
| } | |
| const response = await axios.get(apiUrl, config); | |
| responseData = response.data; | |
| if (responseData.status === "success" && responseData.result?.artist !== "Unknown") { | |
| api.editMessage("Completed.", pro.messageID, event.threadID, event.messageID); | |
| break; | |
| } | |
| attempt++; | |
| if (attempt >= retryLimit) { | |
| throw new Error("Failed to recognize music after multiple attempts."); | |
| } | |
| await new Promise(resolve => setTimeout(resolve, 2000)); | |
| } catch (error) { | |
| console.error('Error:', error); | |
| if (attempt >= retryLimit - 1) { | |
| api.editMessage(`β Error: ${error.message}`, pro.messageID, event.threadID, event.messageID); | |
| return api.sendMessage(`β Error: ${error.message}`, event.threadID, event.messageID); | |
| } | |
| attempt++; | |
| await new Promise(resolve => setTimeout(resolve, 2000)); | |
| } | |
| } | |
| const { | |
| artist = "Unknown", | |
| title = "Unknown", | |
| album = "Unknown", | |
| release_date = "Unknown", | |
| label = "Unknown", | |
| timecode = "Unknown", | |
| song_link = "Unknown", | |
| apple_music = {} | |
| } = responseData.result || {}; | |
| const previewUrl = apple_music.previews?.[0]?.url || "No preview available"; | |
| const artworkUrl = apple_music.artwork?.url | |
| ? apple_music.artwork.url.replace("{w}", "500").replace("{h}", "500") | |
| : "No artwork available"; | |
| let messageContent = | |
| `π΅ π πππΆπ° π₯π²π°πΌπ΄π»πΆππΆπΌπ» π₯π²πππΉπ\nββββββββββββββββββ\n` + | |
| `π€ Artist: ${artist}\n` + | |
| `πΆ Title: ${title}\n` + | |
| `πΏ Album: ${album}\n` + | |
| `π Release Date: ${release_date}\n` + | |
| `π· Label: ${label}\n` + | |
| `β³ Timecode: ${timecode}\n` + | |
| `π Song Link: ${song_link}\n` + | |
| `π§ Apple Music Preview: ${previewUrl}\n` + | |
| `πΌ Artwork: ${artworkUrl}`; | |
| api.unsendMessage(pro.messageID); | |
| return api.sendMessage(messageContent, event.threadID, event.messageID); | |
| }; |