Close
0%
0%

Flask Jukebox

A versatile music player, perfect for public areas.
Combines the flexibilty of VLC w/ a web based interface for clients to choose music!

Similar projects worth following
Recently i was tasked with coming up with a something to handle playing music across the public spaces at work.
Rather than just playing music on a random playlist i wanted to give our students some valuable input and let them choose the music they wanted to listen to.

Having been in operation for a number of months now I would like to rewrite the scripts into a proper application. Instead of using the Tornado library I am going to rewrite it using Flask, a more popular and more regularly used framework.

The plan is to write a system around an SQLite database with a table full of song info; title, artist, album, and file location. The web page can show all of the data from the table and send the selected track ID to the player.

I would also like to add user profiles so a user can track their recent plays.

  • It plays!

    Craig Hissett05/01/2018 at 21:52 0 comments

    Just a quick update as I've been reasonably quiet, and I'm on holiday next week.

    I've managed to get the VLC Player script fully integrated, and my jukebox plays just like it should- good times!

    I've also added the tables required for me to be able to store track data, and also track which users have requested what track.

    Next, when I get back from my holiday, I shall work on rewriting my script to put track data into the database rather than compiling a list on the fly.

  • Bringing Projects Together

    Craig Hissett04/11/2018 at 00:06 0 comments

    Tonight I have started working my old, Tornado scripts into my new Flask template that I've been working on following tutorials and suchlike.


    I've added the VLC class I wrote based round the python-vlc bindings, added the jukebox web template and added the new jukebox route to the Flask app.

    Next phase will be to add the SQL database behind the app and extend the player class to add found tracks to the database and not compile into a list on the fly.

    I also need to add the js functions back to the page and also work in the post handling.

    It's taking shape!

  • SQL Database integration

    Craig Hissett04/04/2018 at 00:11 0 comments

    Tonight I managed to get a simple SQLite database working with my test application.

    This current table takes care of user logins.

    Next step is to expand the framework to include tables for storing music data; artist, album, title, file location, RecordID.

    Then I will rewrite my old pages to fit the new data. I am really looking forward to rebuilding this from the ground up!

  • Updated battle plan

    Craig Hissett04/01/2018 at 23:04 0 comments

    My first attempt at making a Jukebox with a web interfsce for public areas was successful, but very basic. It operated by compiling a list of music in a folder at start-up, randomisng the list and then just played through the list using PLC as the player.

    Now I would like to expand on this in the rewrite by including a database to store all of the music details and file locations. This way I can pass rows of the table to the page and have it display artist, album, title information without having to try and extract it from the file location.

    The Unique key of the selected track can then be passed to the player, and the file location looked up from the table using the key.

    Yes, I like this idea.

  • Flask Fantastic

    Craig Hissett03/28/2018 at 23:24 0 comments

    I've spent a few days looking through Flask, following tutorials and buildng a few example scripts to get a feel for the Flask framework.

    I frigging love It!

    While Tornado is a very capable framework I only picked up the bare necessities to get my single page running.

    I'm glad I've taken the time to start at the very beginning with Flask; seeing what it is capable of is allowing me to re-imagine the project into a formidable app.

  • It begins...

    Craig Hissett03/27/2018 at 00:59 0 comments

    Tonight I set up a Github repository and quickly wrote out a 'Hello World' app using Flask.

    This project Is full of firsts for me; not only is it my first forray into flask, but it's also the first time I will be solely using Linux throughout development. Usually i use Windows and the Git desktop for my scripting, but for this (and most of my #Digibone project) I will be using one of my old laptops running the Pi Desktop for x86 machines.

    So far I love it. Git stuff in the commandline took a little while to create a new repository and get it to commit and push, but I got there in the end. The Pi Desktop OS has breathed new life into the old lappy, and it feels really snappy. Good times!

    Tomorrow I will continue to flesh out the Hello World stuff I have done Tonight, and look to incorporate the functions I wrote in the old Tornado version.

  • Project Background

    Craig Hissett03/26/2018 at 16:36 0 comments

    Recently i was tasked with coming up with a something to handle playing music across the public spaces at work.
    Rather than just playing music on a random playlist i wanted to give our students some valuable input and let them choose the music they wanted to listen to.
    I came up with a simple music playing script, written in Python. The script took a folder location, compiled a list of all compatible music formats, shuffled the list and started playing.
    I also wrote a simple web interface using the Tornado Library. The interface listed all the music in the playlist and allowed users to select a track of their choice. Between playing random tracks the music playing script would check for requests and play them, before returning to the random playing.
    Having been in operation for a number of months now I would like to rewrite the scripts into a proper application. Instead of using the Tornado library I am going to rewrite it using Flask, a more popular and more regularly used framework.

    The software runs perfectly on most platforms, so i will aim to demo it on a raspberry Pi with touchscreen, plus also a windows based machine (like what it has been running on in it's current form).

    I also aim to package the software into an application on completion.

View all 7 project logs

Enjoy this project?

Share

Discussions

ActualDragon wrote 04/04/2018 at 00:06 point

PLEASE make it out of a flask :D

  Are you sure? yes | no

Craig Hissett wrote 04/04/2018 at 00:12 point

Ha ha ha, it will certainly fit in one! 😄

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates