Giter VIP home page Giter VIP logo

nioc / web-music-player Goto Github PK

View Code? Open in Web Editor NEW
25.0 5.0 14.0 55.87 MB

Web Music Player is a simple way to play your own music on any device connected to the web (pc, smartphone, tablet, ...). It can work as a standalone application or in your smartphone browser.

License: GNU General Public License v3.0

ApacheConf 0.74% CSS 3.38% JavaScript 15.06% PHP 69.82% HTML 11.01%
music-player music-library musicbrainz angularjs php

web-music-player's People

Contributors

nioc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

web-music-player's Issues

Display current track cover

Even if the correct album cover is not handled (require #8), add the cover attribute (in playlist, album and track API) and use it in PlayerController (keep the default value if attribute is null).

Improve AngularJS performance

Add track by in ng-repeat directive. Example for library :

<li ng-repeat="track in library.tracks | orderBy:library.order">
<li ng-repeat="track in library.tracks track by track.id | orderBy:library.order">

Changing :

  • ng-repeat="item in menu.items" using track by $index
  • ng-repeat="track in player.playlist.tracks" using track by track.sequence
  • ng-repeat="track in library.tracks | orderBy:library.order" using track by track.id
  • ng-repeat="folder in catalog.folders" using track by folder.path
  • ng-repeat="file in folder.files" using track by $index
  • ng-repeat="folder in folder.subfolders" using track by folder.path

Change ng-hide en ng-if for purging watchers:

  • <button class="button-icon player-control play" ng-click="player.play()" ng-hide="player.isPlaying" title="Play"> using ng-if="!player.isPlaying"
  • <button class="button-icon player-control pause" ng-click="player.pause()" ng-show="player.isPlaying" title="Pause"> using ng-if="player.isPlaying"
  • <ul class="menu" ng-show="menu.visible" ng-cloak> using ng-if="menu.visible"
  • <ul class="tree" ng-show="folder.show"> using ng-if="folder.show"
  • <input ng-show="library.search.displayFilter.title" ...> using ng-if="library.search.displayFilter.title"
  • <input ng-show="library.search.displayFilter.artist" ...> using ng-if="library.search.displayFilter.artist"
  • <input ng-show="library.search.displayFilter.album" ...> using ng-if="library.search.displayFilter.album"

User rating system

Provide a way for user to rate :

  • songs,
  • albums (default value for each track with no rating),
  • artists.

Display it on :

  • player,
  • library,
  • album page,
  • artist page.

Secure API

  • Add a control to compare user identity provided in token and user provided in the query string / request body (playlist and user API).
  • Add a control on user scope (based on identity provided in token) for administrative functions (GET folders, POST library, GET users).

Handle user roles

Roles allow users to access restricted page (like admin) and restricted API (like user creation).

This features must:

  • provides an API function to check if user is granted to access requested resource.
  • returns a 403 HTTP status for accessing restricted API without required role.
  • sets scope attribute with a user roles array in in the JSON Web Token.
  • checks required scope if user accessing restricted GUI.

Add cache system

Add cache system for enhance performance (library, playlist, ...)

Merge duplicate artists

On artist form, propose a button to find possibles duplicate artists (based on mbid and name).
A click on a returned artist will ask for confirmation and merge with current one.

Enhance AngularJS player UI

Using of ng-bind="object.attribute" instead of {{object.attribute}} to avoid blinking.
To improve performance, use ng-bind="::object.attribute" or ng-repeat="item in ::object.collection" for static elements (like tracks in library).

Display mini player

Display a mini player at the bottom when browsing other pages (album, artist, library, ...) with following controls :

  • play / pause
  • next
  • previous
  • cover (display main player)

Browse catalog

Allow user to browse catalog. Allow user to search in catalog by artist, album and track title.

Library pagination

Add pagination on library to display significant number of tracks without performance issue.

Handle files catalog

  • add folder to library,
  • remove album,
  • remove artist (and all his albums and tracks).

Play MP3 files

Providing a web player able to get tracks in a playlist.

Fix technical issue with global `connection` object

Database access is handled with a global object which is not in standards. Have to moving to a Database class and including this class in every function which requires a database access :

$connection = new Database();

Allow navigation in GUI

There is three distinct parts in the application :

  • setup
  • sign-in form (see #5)
  • main app

Main app uses ng-route for unify the following parts of the GUI :

  • player (always in the DOM)
  • catalog
  • user settings
  • admin (protected access with token scope information, see #25)

Handle current playlist

The current playlist store for each user the tracks he adds.
User should adds and remove tracks.
The content should be stored and restored (between two sessions for example).

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.