Giter Site home page Giter Site logo

dj-lama-legacy's Introduction

DJ Lama

Bot that transforms Discord voice channel into user-driven radio station.

Special thanks to my friend Natalia for making this amazing logo!

Disclaimer: This code was written in the "move fast and break things" fashion, and thus it works well, but the code itself is not the best quality, and will be rewritten (possibly using official Discord API). Also it's not really suitable for general use, so if you're looking for music bot for Discord this is probably not the best choice ๐Ÿ˜‰.

Features

  • Queuing music from YouTube.
  • User controlled radio announcer, with auto music fade out and fade in.
  • Song database, where users can save their most beloved hits.
  • Web frontend with queue and list of songs in database.

Building

First you have to install node modules and download bower components:

npm install
cd src/static && bower install

and then you can build and run the bot:

gulp                # build
node dist/index.js  # run

or using one command:

npm start

License

This project is licensed under MIT license.

dj-lama-legacy's People

Contributors

deseteral avatar

Stargazers

Jerzerak avatar

Watchers

James Cloos avatar  avatar  avatar

dj-lama-legacy's Issues

Style guide page

Create a style guide page on route /style-guide and link it on footer.

AC:

  • User can click on footer link that will take him to style guide page
  • User can go to URL /style-guide to see the page

Dashboard keeps disconnecting

Dashboard socket keeps disconnecting from the server, this will cause some commands to not get through first time they're issued. Possible solution is to keep the connection up by sending heartbeat every few seconds.

Status page

Implement status page - the main page with current information about current radio program

AC:

  • User can see DJ Lama's logo
  • User can see for how long the radio program has been running
  • User can see current library song count
  • User can see the count of currently queued songs
  • User can see the title and artist of currently playing song
  • User can see the feed of Lama events

Depends on #22

Radio announcer

Implementation of Speech API powered radio announcer.

AC:

  • User can send a message to be read by announcer
  • Users can hear the message being spoken

Improve random command

Improve random command with things like:

  • !dj random <num> - will add num of random songs to the queue.
  • !dj random tag <tag> - will add random song with tag tag (after #10 will be implemented).
  • !dj random artist <artist> - will add random song by artist.

Improve song sorting

As of now the songs are being sorted only by artist name. What should actually happen is sorting by artist first and then by title.

Library page

Create a library page with list of songs in the library.

AC:

  • User can see the list of all songs in the library, sorted by artist name
  • User can click on specific song to add it to the queue
  • User can click on contextual button on specific song which will open a modal where user can edit song's entry in the database
  • The list will update automatically when a CRUD operation is performed

Depends on #19

Queue logic

Implement the songs queue logic. The queue has to be stored on the server, and synced with all clients. Next song will be played when all of connected clients report completion of currently playing song.

AC:

  • API user can queue specific song or YouTube video
  • User can hear the queued songs
  • User can skip current song

Database

Create in memory database with multiple collection support which persist to a json file.

AC:

  • The database can fetch the persisted store on creation
  • API user can perform CRUD operations on library collection
  • App can persist the database to Dropbox on any CRUD operation
  • User can fetch the json representation of database on route GET /api/database
  • User can fetch the json representation of collection on route GET /api/database/:collectionName

User authentication

AC:

  • As user I can log into my account
  • As user I cannot use the app if I'm not logged in

List command doesn't work when list is too long

When amount of songs in the database is too long too fit in one Discord message, the list command won't work. The workaround is to split the message in parts and send one after another.

Translations

Provide a translation mechanism.

AC:

  • User can see the UI in his/hers desired language

Tag system

Implement song tagging system.

AC:

  • User can see which tags are applied to song
  • User can add and remove tags to songs
  • User can search songs by tags

Add tagging system

Add ability to tag songs, and add support for this in existing (and new) commands.
Such as:

  • !dj random <tag>
  • !dj playlist <tag>

Save logs to file

Allow saving logs to a file that will be stored in the same place as database.

AC:

  • App can output logs to a file and upload it to Dropbox.

Volume tween not working

Sometimes after using say command, music volume won't come back to 100%. May have something to do with reading long sentences.

Update the README

Upon completion of every other v2.0 task, update the readme file.

AC:

  • User can read updated readme file

Remove hardcoded messages from code

Currently every message is written in Polish and hardcoded into backend and frontend source.
These hardcoded messages should be replaced by i18n engine with both Polish and English locales.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.