Giter Club home page Giter Club logo

music-logger's Introduction

Music Logger

Yet another "new" music logger for WITR. This is a Spring application using PostgreSQL.

Setting Up

Before using, the environment variable file must be created from its template. The reason for this is so the ones being used aren't tracked by git. To do this, run the following in a bash shell at the root of the project:

cp .env.template .env

Add values to any necessary empty keys.

Expand for a description of each environment variable, and how to get the missing values.
OUTBOUND_PORT - The port to serve the API from
ELASTICSEARCH_URL - The URL to hosted elasticsearch (Default setup should give you http://localhost:9200)
POSTGRES_URL - The jdbc URL (e.g. jdbc:postgresql://localhost:5432/logger)
POSTGRES_USER - The database username
POSTGRES_PASS - The database password
SPOTIFY_CLIENT_ID - The client ID of the logger's Spotify application
SPOTIFY_CLIENT_SECRET - The client secret of the logger's Spotify application
INDEX_URL - The URL of the frontend logger's index, with no trailing slash. e.g. http://localhost:3003
STREAMING_API_TOKEN - A string to be used as a token to check for in the Authentication header of /api/streaming/* requests
BROADCAST_ENABLE - If broadcasting services should be enabled (boolean). If false, no values below are required
ICECAST_USER - The Icecast username 
ICECAST_PASS - The Icecast password
RDS_IP - The IP of the RDS
RDS_PORT - The port that RDS uses
TUNEIN_PARTNER_ID - The TuneIn partner ID
TUNEIN_PARTNER_KEY - The TuneIn partner API key
TUNEIN_STATION_ID - The TuneIn station ID
WIDEORBIT_HOST - The hostname of the WideOrbit server
WIDEORBIT_PORT - The port WideOrbit is broadcasting events to
WIDEORBIT_ENABLE - If data should be received from wideorbit (boolean, defaults to false)
RIVENDELL_ENABLE - If data should be received from rivendell (boolean, defaults to false)

For local development, it is highly recommended to leave BROADCAST_ENABLE as false. All broadcasting to WITR services will be disabled, which ensures no disruption to anything in production. If false, the variables below it in the template may be omitted or left blank.

SPOTIFY_CLIENT_ID / SPOTIFY_CLIENT_SECRET

These values are so the logger can use the Spotify API to look up album art and other necessary information. To get these, create a Spotify developer application and generate a new client ID and secret.

ICECAST_USER / ICECAST_PASS

The credentials for Icecast can be acquired by asking the Chief Engineer.

RDS_IP / RDS_PORT

These are just the IP and port for the RDS server.

TUNEIN_PARTNER_ID / TUNEIN_PARTNER_KEY / TUNEIN_STATION_ID

These will have to be acquired by contacting the Chief Engineer or someone who has access to the station's TuneIn account.

WIDEORBIT_HOST / WIDEORBIT_PORT

The IP/hostname and port for WideOrbit.


Running

The next step will depend on if you are running this yourself independently, or internally at WITR. We have containerized development environments to keep application state version controlled across all projects, which is not open source quite yet (stay tuned!).

Independently

Set up and start a Postgres (or similar) database, setting its credentials/URL to the relevant environment variables.

Internally

Ensure you have set up the dev-environments for primary, and start the environment.

When the relevant step has been completed, populate the environment variables and continue.

In order to run the backend, your IDE must be able to read the .env file. IntelliJ does not have such a feature out of the box, so a plugin like EnvFile may be used. If using the plugin, make sure it is enabled for the run configuration. Run the program from the file edu.rit.witr.musiclogger.MusicLoggerApplication.

Building

Building may be done from the command line, through the following command:

./gradle bootJar

music-logger's People

Contributors

rubbaboy avatar michaelvasile avatar

Stargazers

 avatar

Watchers

 avatar Chief Engineer avatar

music-logger's Issues

Spotify Integration

This should be researched further to see if it would be a used feature, but integration with Spotify could potentially help DJs/underground DJs log things. The idea is to link your Spotify account, and it will show a new row on the UI of the currently playing song with a button to add the song as the current time.

RDS Repeating

RDS clears after 3 minutes on car radios, add a value for how long the RDS should stay active for.

Add a current time refresh

Add a button at the end of an adding row to refresh the time to the current time. This is so multiple songs can be staged for editing, and the time can be refreshed right before adding.

Have a use UDG as FM switch

when we switch studios udg becomes fm make a switch online somewhere where we can make that happen without needing to reboot

Documentation

Currently, documentation is present in most methods/relevant fields, but could definitely be improved and expanded to all methods, classes, and relevant fields.

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.