ryan-kazagumo
v1.0.0
Published
A comprehensive Kazagumo plugin providing advanced multi-platform music integration with intelligent URL parsing and cross-service search capabilities. Supports 10 major platforms including Apple Music, Deezer, Spotify, Tidal, Qobuz, JioSaavn, Yandex Musi
Maintainers
Readme
ryan-kazagumo
A comprehensive multi-platform music plugin for Kazagumo 3.3.0 with intelligent URL parsing and cross-service search capabilities.
Supported Platforms
| Platform | Search Engine | Status |
|----------|---------------|--------|
| Apple Music | amsearch | ✅ |
| Deezer | dzsearch | ✅ |
| Spotify | spsearch | ✅ |
| Tidal | tdsearch | ✅ |
| Qobuz | qbsearch | ✅ |
| JioSaavn | jssearch | ✅ |
| Yandex Music | ymsearch | ✅ |
| VK Music | vksearch | ✅ |
| YouTube Music | ytmsearch | ✅ |
| SoundCloud | scsearch | ✅ |
Installation
npm install ryan-kazagumoyarn add ryan-kazagumopnpm add ryan-kazagumoQuick Start
const { Kazagumo } = require('kazagumo');
const { Connectors } = require('shoukaku');
const { KazagumoMultiPlugin } = require('ryan-kazagumo');
const kazagumo = new Kazagumo({
plugins: [
new KazagumoMultiPlugin({
playlistPageLimit: 1,
albumPageLimit: 1,
searchLimit: 10,
searchMarket: 'US'
})
]
}, new Connectors.DiscordJS(client), nodes);Usage Examples
URL Support
// Spotify
kazagumo.search('https://open.spotify.com/track/4iV5W9uYEdYUVa79Axb7Rh');
kazagumo.search('https://spotify.link/zu1pVRAg6Db');
// Apple Music
kazagumo.search('https://music.apple.com/us/album/nevermind/1440783617');
// Deezer
kazagumo.search('https://deezer.com/track/3135556');
// YouTube Music
kazagumo.search('https://music.youtube.com/watch?v=dQw4w9WgXcQ');
// And all other supported platforms...Search by Engine
// Search tracks using specific platforms
kazagumo.search('Rick Astley Never Gonna Give You Up', { engine: 'spotify' });
kazagumo.search('Bohemian Rhapsody', { engine: 'appleMusic' });
kazagumo.search('Hotel California', { engine: 'deezer' });Advanced Search
// Search with custom options
const result = await kazagumo.search('your query', {
engine: 'spotify',
requester: interaction.user,
source: 'spsearch'
});Configuration
Plugin Options
interface RyanKazagumoOptions {
playlistPageLimit?: number; // Default: 100 tracks per page
albumPageLimit?: number; // Default: 50 tracks per page
searchLimit?: number; // Default: 10 (max 50)
searchMarket?: string; // Default: 'US'
}Basic Setup
new KazagumoMultiPlugin({
playlistPageLimit: 1, // 100 tracks per page
albumPageLimit: 1, // 50 tracks per page
searchLimit: 10, // max 50
searchMarket: 'US' // country code
})Lavalink Setup
Required Plugins
lavalink:
plugins:
- dependency: "com.github.topi314.lavasrc:lavasrc-plugin:4.7.0"
repository: "https://maven.lavalink.dev/releases"LavaSrc Configuration
plugins:
lavasrc:
providers:
- "ytsearch:\"%ISRC%\""
- "spsearch:\"%ISRC%\""
spotify:
clientId: "your_spotify_client_id"
clientSecret: "your_spotify_client_secret"
countryCode: "US"
applemusic:
countryCode: "US"API Reference
Main Classes
// All equivalent - use any one
const { RyanKazagumo } = require('ryan-kazagumo');
const { KazagumoRyan } = require('ryan-kazagumo');
const { KazagumoMultiPlugin } = require('ryan-kazagumo');Methods
// Check platform support
plugin.isPlatformEnabled('spotify'); // true
plugin.isSearchEngineEnabled('amsearch'); // false (returns searchEngine not platform)
// Get available platforms/engines
plugin.getPlatforms(); // ['appleMusic', 'deezer', ...]
plugin.getSearchEngines(); // ['appleMusic', 'deezer', ...]🎮 Complete Example
const { Client, GatewayIntentBits } = require('discord.js');
const { Connectors } = require('shoukaku');
const { Kazagumo } = require('kazagumo');
const { KazagumoMultiPlugin } = require('ryan-kazagumo');
const client = new Client({
intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildVoiceStates]
});
const nodes = [{
name: 'main',
url: 'localhost:2333',
auth: 'youshallnotpass',
secure: false
}];
const kazagumo = new Kazagumo({
defaultSearchEngine: 'youtube',
plugins: [
new KazagumoMultiPlugin({
playlistPageLimit: 1,
albumPageLimit: 1,
searchLimit: 10,
searchMarket: 'US'
})
],
send: (guildId, payload) => {
const guild = client.guilds.cache.get(guildId);
if (guild) guild.shard.send(payload);
}
}, new Connectors.DiscordJS(client), nodes);
client.on('interactionCreate', async (interaction) => {
if (!interaction.isChatInputCommand() || interaction.commandName !== 'play') return;
const query = interaction.options.getString('query');
try {
const result = await kazagumo.search(query, {
requester: interaction.user
});
if (!result.tracks.length) {
return interaction.reply('❌ No tracks found!');
}
const player = await kazagumo.createPlayer({
guildId: interaction.guild.id,
voiceId: interaction.member.voice.channel.id,
textId: interaction.channel.id
});
player.queue.add(result.tracks[0]);
if (!player.playing) player.play();
interaction.reply(`🎵 Playing: **${result.tracks[0].title}**`);
} catch (error) {
interaction.reply('❌ Search failed!');
}
});
client.login('your_bot_token');Links
Version Compatibility
| ryan-kazagumo | Kazagumo | Shoukaku | LavaSrc | Lavalink | |---------------|----------|----------|---------|----------| | 1.0.0+ | 3.3.0+ | 4.1.1 | 4.7.2+ | 4.1.1 |
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Support
If this plugin helped you, please consider:
- Starring this repository
- Reporting any bugs
- Suggesting new features
- Sharing with other developers
Made with ❤️ for the Discord music bot community
