Skip to content

deepaksaipendyala/Enigma

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

263 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Enigma 🤖 - A music recommender bot for Discord

Open Source Love

License: GPL v3

Python v3.10 Maintenance made-with-python GitHub contributors GitHub Issues or Pull Requests GitHub Issues or Pull Requests GitHub code size in bytes GitHub commit activity (branch) Supports Python style: autopep8 Coverage Status DOI Platform Contributors Activity GitHub code size in bytes GitHub release (with filter) GitHub all releases

Report Bug · Request Feature

💡 Features

  • Recommend songs based on user input and play them on discord voice channel
  • Can be used by teams/friends to listen to the same songs together
  • Acts as an amplifier - can be used to play same music on multiple speakers to give a surround sound effect and increase volume output
  • Ability to toggle music pause/resume
  • Ability to play custom song without having to search the song on youtube
  • Ability to switch back and forth between songs
If you want to get added to the music server on discord to test the bot, drop an email to spriyad2@ncsu.edu

Features added by Group 17

  • Added a new data set [this](https://www.kaggle.com/datasets/saurabhshahane/music-dataset-1950-to-2019) which has approximately 24000 songs
  • Added a new functionality to shuffle the songs within the queue
  • Added a new functionality to add a custom song to the queue
  • Fixed the issue of fetching songs from Youtube
  • Extended the application to be deployed on Microsoft Azure

Features added by group 36, fall 2024

  • New Poll Command
  • New Recommendation Algorithm
  • Use web scraping and EDA to get a better database for the discord bot
  • Improved Queue System

Features added by group 19, fall 2024

  • Search song from different sources
  • Search optimation using spotify
  • Give your own songs to playlist
  • Improved audio quality and playback
  • Add loggin

⚒️ Installation Procedure

See the installation instructions listed in Install

🚀 Demo

enigma.mp4

🚀 Demo 2 - Group 17

Demo.mp4

🚀 Demo 3 - Group 36, Fall 2024

link

🚀 Demo 4 - Group 19, Fall 2024

V4: Fall 2024 Demo

📍RoadMap

What We've Done:

  1. Created a Discord Bot via the Discord Developer Portal.
  2. Incorporated a dataset to our application.
  3. Added functionalities to the Discord bot (explained in the Features section above.
  4. Use the Discord Bot to play music based on the user's recommendations.
  5. Can also use the Bot to play custom songs without having to search for it on YouTube.
  6. Extend the application to be deployed online (via a website or an application).
  7. Alternatively, use this as the primary data source to make better recommendations.
  8. Added some more functionality to the discord bot:
    • Add a custom song to the queue
    • Shuffle songs within the queue

New in v3.0

  1. New Poll Command: This new poll command allows you to select up to 10 songs you like in order to curate a custom playlist for you to listen to
  2. New Recommendation Algorithm: Our new and improved recommendation algorithm now uses cosine similarity to identify songs similar to songs you have indicated that you like.
  3. Use web scraping and EDA to get a better database for the discord bot.
  4. Improved Queue System:
    • Queue command: Now outputs the queue in a much nicer format compared to last version where it was just a list of song names
    • New Move Command: Users now have the ability to move songs within a queue by specifying the song and the position in queue
    • New Clear Queue Command: New ability to clear queue of all songs
    • Next Song Played Automatically: The next song in queue automatically starts playing once the current song stops instead of having to call next song command

Team 19 - Fall 2024

V4: Fall 2024 Demo

New in v4.0

🎧 Choose Your Source: Stream from YouTube (yt) or SoundCloud (sc) with ease!
🔗 Add Songs Instantly: Simply paste the URL to queue your favorite tracks.
🎶 Accurate Song Titles: Played songs automatically update with official titles from websites for easy recognition.
🔍 Spotify-Powered Searches: Find the exact song you want using Spotify’s accurate search info!
🔊 Volume Control: Take full control of the volume for the perfect listening experience.
✨ Enhanced Music Quality: Enjoy superior sound for every beat and melody.
📋 Improved Code Logging and Debugging: Streamlined and efficient logging for seamless troubleshooting and performance monitoring.
✅ Enhanced Code Coverage and Testing: Comprehensive test cases ensure reliability and maintainability of the bot.

🎵 Enigma Discord Bot Commands Guide 🎵

General Commands

!help

  • Description: Displays a list of all available commands with their descriptions.
  • Usage: !help

!showCommands

  • Description: Provides a quick overview of all commands.
  • Usage: !showCommands

!help <command>

  • Description: Provides detailed help about a specific command.
  • Usage: !help <command>
    Example: !help add

Queue Management Commands

!queue

  • Description: Displays the current song queue.
  • Usage: !queue

!add <source> <song_name_or_url>

  • Description: Adds a song to the queue from various sources. Supported sources:
    • yt: YouTube
    • sc: SoundCloud
    • url: Direct URL
  • Usage:
    • !add yt <song_name>
      Example: !add yt shape of you
    • !add sc <song_name>
      Example: !add sc closer chainsmokers
    • !add url <song_url>
      Example: !add url https://www.youtube.com/watch?v=dQw4w9WgXcQ

!myrecommend <song1> [<song2> ...]

  • Description: Adds up to 10 specific songs directly to the queue using accurate Spotify metadata.
  • Usage: !myrecommend <song1> [<song2> ...]
    Example: !myrecommend "closer chainsmokers" "shape of you"

!skip

  • Description: Skips the currently playing song and moves to the next one in the queue.
  • Usage: !skip

!clear

  • Description: Clears all songs from the queue.
  • Usage: !clear

!shuffle

  • Description: Randomizes the order of songs in the queue.
  • Usage: !shuffle

Playback Commands

!start

  • Description: Starts playback of the first song in the queue. If the bot is not in a voice channel, it joins the user's current channel.
  • Usage: !start

!pause

  • Description: Pauses the current playback.
  • Usage: !pause

!resume

  • Description: Resumes paused playback.
  • Usage: !resume

!volume

  • Description: Adjusts the playback volume.
  • Usage: !volume
    (Further volume adjustments may require an additional parameter based on your bot's setup.)

!play <source> <song_name>

  • Description: Plays a specific song directly from the specified source.
  • Usage:
    • !play yt <song_name>
      Example: !play yt shape of you

Recommendation Commands

!poll

  • Description: Creates a poll with 10 random songs for users to vote on.
  • Usage: !poll

!recommend

  • Description: Generates personalized song recommendations based on poll results or previous preferences.
  • Usage: !recommend

Examples of Usage

  1. Adding Songs to the Queue:

    !add yt shape of you
    !add sc closer chainsmokers
    !add url https://www.youtube.com/watch?v=dQw4w9WgXcQ
    
  2. Managing Playback:

    !start
    !pause
    !resume
    
  3. Curating Your Playlist:

    !myrecommend "closer chainsmokers" "baby justin bieber"
    !shuffle
    
  4. Generating Recommendations:

    !poll
    !recommend
    

What We've Yet To Do:

  1. Integrating dislikes (taking into account the feedback of users) in the recommendation logic.
  2. Playlists: Add a new feature to upload a list of songs in a .csv or .txt file to create a playlist that can be saved and played.
  3. Improved Polling: Instead of having the bot select 10 random songs for the user to choose from, have the user input the songs they like to send to the recommend algorithm
  4. Integrate Spotify/Apple Music: Instead of getting songs from YouTube (which has issues with playing audio that isn’t always songs) use other services such as Spotify or Apple Music to get audio.

📖 Documentation

Documentation for the code available at - Enigma Docs

👥 Contributors

Group 17


Sneha Madle

Yugalee Patil


Chirrag Nangia


Saswat Priyadarshan

Group 36, Fall 2024


Nico Field

Riley Joncas


Biruk Tadesse

Group 19, Fall 2024


YiTing Hou

Deepak Sai Pendyala


Leslie Liu

Contributing

Please see CONTRIBUTING for contributing to this project.

Data

The data for this project is present here

About

This repo is for a discord music bot

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Roff 45.0%
  • Python 38.5%
  • Shell 14.2%
  • PowerShell 2.3%