MusicDown

MusicDown is a mobile app allowing you to listen to and download audio files from your own server on your mobile phone.

You can either use the example server software and host it yourself, or develop/create your own HTTP/S server (REST API).


How to use the "MusicDown" app with the example server software ?

Please note that this software is a Docker image containing an example Python script, and although it can be used as is, it is recommended that you adapt it to your needs.
The example server software only supports MP3 files with ID3 title and artist tags (if the tags are missing, it won't work).

  1. Download MusicDown from the App Store (iOS) or Google Play (Android).
  2. Download the Docker image of the example MusicDown server software on Docker Hub.
    Your server must have Docker installed
  3. Read the image overview (on Docker Hub) to know how to mount the volume and bind the needed port
  4. Place all your MP3 files in the "music" folder of your volume.
  5. Run your Docker container
    You can change the server port if needed, but the app in the container listen on the port 25250
  6. Open the MusicDown app on your phone.
  7. Set the server URL (e.g.http://192.168.1.23:25250/musicdown), and type the password you set (the default one is "hackme". Then press "Ok".
  8. To change the password, create a "password.txt" file containing your password in the volume used by the container.
  9. Each time you add new MP3 files on the server, press the "Reload server" button in the app.
  10. You can now use MusicDown and enjoy your audio files.


How to create your own server software for the "MusicDown" app ?

This section is intended for people who wish to develop/create their own server software (REST API) for "MusicDown" with appropriate endpoints.

Here is the list of endpoints needed for the "MusicDown" app

  1. /
    Must return a list of all available music in JSON format (see below) with 200 success status.
  2. /reload
    Must return a 200 success status when reload or server action finished.
  3. /[FILE_NAME]Where "[FILE_NAME]" is the name of the MP3 file
    Must return the MP3 file to download or play with 200 success status or a 404 not found status.
  4. /image/[FILE_NAME]Where "[FILE_NAME]" is the name of the MP3 file
    Must return the cover art image of the MP3 file with 200 success status or a 404 not found status.
Please note that you can also return an unauthorized 401 status for all endpoints if the password sent as a parameter to the "GET" request does not match the password defined by the server.

Here is the JSON format needed for the / endpoint
[
  {
    "artist": "Artist name",
    "path": "demo_music.mp3",
    "title": "Music title"
  },
  ...
]


Troubleshooting and FAQ using the example server


Support

As MusicDown is a project made during my free time. There's no actual support, but you can always contact me by email (me@koizeay.com).

koizeay.com


Privacy

MusicDown does not collect any data.