Coder Social home page Coder Social logo

devsnd / cherrymusic Goto Github PK

View Code? Open in Web Editor NEW
1.0K 1.0K 189.0 7.61 MB

Stream your own music collection to all your devices! The easy to use free and open-source music streaming server.

Home Page: http://www.fomori.org/cherrymusic

License: GNU General Public License v3.0

Python 40.57% Shell 0.59% HTML 5.46% JavaScript 30.58% CSS 8.67% Less 14.13%

cherrymusic's People

Contributors

bgamari avatar davidthamm avatar devsnd avatar drmargarido avatar druneau avatar endlesscoil avatar faircopy avatar isgar avatar it-is-wednesday avatar johnhe00 avatar legoktm avatar lzh9102 avatar marianosimone avatar martijnras avatar mattss avatar pando85 avatar qqueue avatar regisb avatar rjsberry avatar tilboerner avatar tilka avatar tkafka avatar tomclegg avatar toscha avatar tsa6 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  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  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  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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cherrymusic's Issues

document API somewhere

as the API grows, we should write down somewhere how it works, for easy reference, to have a standard to implement against, and all the other good stuff that comes with having documentation.

on first thought, the wiki seems like a good place. i think we can export from there, I remember reading something about git access to all the docs in there.

flashblock ruins everything

flashblock block the completion handler of jplayer and ruins everything. The user wont ever know why it doesn't work either.

Update database while server is online

The database should be updateable while the server is online. Then we might have a closer look on db-locks etc.

Maybe even as part of the api, so that an admin can update, in the web-interface.
Even more: maybe there should be the possiblity of an automatic update: the server might traverse the files once in a while and update them silently.

time bookmarks

feature to save time bookmarks, so its easier to resume listening to an audiobook (for example).

theming support

different styles based on multiple css files:
current style might be named "zeropointtwo"
other styles "dark", "hacker", "omgpony"

searchable id3 tags

It should be possible to use either the files or the id3tags or both to index the music.

  • a good sorted collection can just be added as file
  • a mutilated windows media player or itunes collection can be added with id3tags only
  • both can be used if it's a mixed collection

Possible module:
code.google.com/p/stagger/

live transcoding to ogg/mp3 for ultimative browser support

It should be possible to transcode everything live to ogg/mp3, since firefox doesn't have html5 mp3 support, but ogg seems to be supported. The other way around: IE supports mp3 but doesn't support ogg. So if we have both live transcoded, jPlayer is able to use the appropriate format for each browser.

start/stop/restart+playing command line options

it may be a little early for that and its not the most important part, but i think it would be nice to have some basic command line options like "start/stop/restart", like other daemons have.
and some for the player, e. g. "updatedb/play/pause/stop/next track/last track,...". that way everybody can make some shortcuts for those on his system.

remove files from the database...

... when they disappear from the filesystem. might not happen often, but when it does, the server shouldn't still be handing out invitations. it's an elementary feature, really - hence the tentative tag for 0.2.

https encryption

all traffic should be https encrypted, otherwise the authentification is useless.

Q: what about logging? A: let's.

... give it a try, that is. the mission: create some laughably simple logging interface that can be configured from a single point.

We should consider a proper setup for logging, because it seems practical: stuff on python.org.

I'm not saying we should go wild with loggers, but it seems flexible and configurable for little effort, and we could get rid of if debug: print('juchhe!'). The sooner we do this, the better. Thoughts?

re-order playlist

playlist items can be freely rearrangend without deleting and readding them, preferrably by drag and drop.

progress indicator for subfolders on database update

my "BASEDIR" consists of only a few directories with all my music organized in further subdirectories. when performing a database update the current progress indicator is almost useless, since it does not show the progress for the subdirectories these few directories contain.

enumerating files in sqlitecache takes ages

There are two methods that take ages to complete before actually scanning the files on large datasets:

self.count_immediate_subpaths(paths)
File.enumerate_files_in(paths, basedir=basedir, sort=True)

this should be handled more in a rsync-ish manner:
adding progress of the subfolders a soon as they are reached, instead of scanning all folders up front, as i understand it is now.

server must run in "screen" so it doesn't crash when logging out

When you launch the server as root, and the logout of your ssh connection, the server will crash as the logs are written to stdout, but stdout isn't acailable anymore, because stdout was a pipe to the terminal you logged in with.

This might be fixed by #11, but it must be fixed somehow before 0.2

Error output:

[25/Aug/2012:06:53:45] HTTP Traceback (most recent call last):
  File "/usr/lib/python3.2/site-packages/cherrypy/_cprequest.py", line 656, in respond
    response.body = self.handler()
  File "/usr/lib/python3.2/site-packages/cherrypy/lib/encoding.py", line 188, in __call__
    self.body = self.oldhandler(*args, **kwargs)
  File "/usr/lib/python3.2/site-packages/cherrypy/_cpdispatch.py", line 34, in __call__
    return self.callable(*self.args, **self.kwargs)
  File "/srv/cherrymusic/cherrymusic/httphandler.py", line 23, in api
    return self.handle(self.json, action, value, filter)
  File "/srv/cherrymusic/cherrymusic/httphandler.py", line 30, in handle
    return renderer.render(self.model.search(value.strip()))
  File "/srv/cherrymusic/cherrymusic/cherrymodel.py", line 69, in search
    results = self.cache.searchfor(term,maxresults=self.config.config[self.config.MAXSEARCHRESULTS])
  File "/srv/cherrymusic/cherrymusic/sqlitecache.py", line 215, in searchfor
    print('querying terms: '+str(terms))
IOError: [Errno 5] Input/output error

mark defective tracks

defective tracks can be "reported" with a button in the player or playlist.

extended functionality includes reporting wrong labeling (mainly artist and title).

progress indicator for subfolders on database update

my "BASEDIR" consists of only a few directories with all my music organized in further subdirectories. when performing a database update the current progress indicator is almost useless, since it does not show the progress for the subdirectories these few directories contain.

users should be kept in a database

layout:

int id | varchar(255) username UNIQUE | varchar(255) password | int admin

passwords should be encrypted using sha384 or better + a random salt, which should be generated on first run and stored in the config file.

Authentication should be handled by a small user db, so new users can be added while the server is running.

savable playlists

Users can save and load multiple playlists, which can be shared with other users.

Clientside:
UI for saving, displaying and activating playlists

API:
corresponding functions

Serverside:
implementation-agnostic layer to handle these API requests
actual implementation

Playlist =
[minimum]

  • name
  • songs*

[more]

  • user-association
  • privacy

On first launch one should be able to create an admin user

When first launching, so when the userdb is empty, you should be greeted with a "create an admin user" screen. Otherwise there is no way to use the server, because you don't have the rights to get in, but you need an admin to create an account... catch22!

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.