Giter Club home page Giter Club logo

mediacenterjs's Introduction

logo MediacenterJS Beta

mediacenterjs

A NodeJS based media center

Website: http://www.mediacenterjs.com

What is MediacenterJS?

MediacenterJS is a media center (like for instance XBMC) running completely from the comfort of your browser. The backend is based on Node.JS with ExpressJS and JADE templates. The MVC structure allows developers to add a plugin to MCJS with ease. The server application runs on Windows, MAC and Linux systems, the client runs in every modern browser (Chrome is preferable though).

Who is this for?

Although services like Netflix or HBOgo are really awesome, they do not have every media you might enjoy or already own. Especially if you're born before the streaming age like me, you'll probably have a lot of media locally somewhere. So, if you want the convienence of the aformentioned services, but you want to use your own media, this app is for you!

User manual

Installing MediacenterJS

Guidelines media library

Using the remote control

FAQ

Developer manual

Explanation plugin framework

Start building an plugin using the plugin generator

Helper functions

Front end and view explantation

Create a new theme

Current features:

  • Routing
  • MVC 'App' Framework
  • Clientside setup
  • Dynamic dashboard
  • Keyboard controls
  • Movie indexing
  • Multi-language support
  • Display movies, tvshow and music information
  • Local caching of information and images
  • Transcoding and playback of movies, tv shows and music
  • Subtitle support
  • Weather information based on location
  • Basic screensaver
  • I3d tag support
  • Remote control
  • Plugin manager
  • Page visibility API
  • YouTube app
  • Version manager
  • Device manager
  • Parental control functionality
  • Basic scheduled tasks

Supported file formats:

Video: AVI/MOV/WMV/MP4/MKV/MPEG

Audio: M4A/MP2/MP3/MP4/FLAC/WMA/ASF/OGG/OPUS/WV/WAV

Known issues:

  • Device streaming still in heavy development
  • Seeking beyond buffer not working yet.

Be sure to check the open issues before filing a new one. If you're filing a new issue, be sure to mention your NodeJS version (node -v in a terminal or prompt) and the platform (eg Windows or Ubuntu, Debian etc) you are running the MCJS server on.

Also check out what is currently being developed and/or fixed on MCJS Trello page: https://trello.com/b/czjyYsFi/mediacenterjs

Translations

For now, all the translation files are stored in the /public/translations folder. Feel free to contribute by translating.

Main contributors:

Special thanks to these contributors:

I'm building MCJS in my free time so if you want to encourage me to continue this enormous project, feel free to do so.

Donate

For questions/contributions feel free to email me at: [email protected] This application uses the GNU General Public License. See http://www.gnu.org/licenses/.

Copyright (C) 2018 - Jan Smolders

Analytics

mediacenterjs's People

Contributors

andreme avatar borewit avatar bryant1410 avatar chinmayapadhi avatar codingpeak avatar dgnydn avatar dlion avatar gkatsev avatar haarts avatar hoffi avatar ildac avatar ionicabizau avatar jansmolders86 avatar jon889 avatar kasperisager avatar leocaseiro avatar luiseduardobrito avatar manuelbieh avatar matita avatar nampnq avatar philososaur avatar skruf90 avatar sniraga avatar sparkyfen avatar tankmasterrl avatar terrymooreii avatar tlhunter avatar tracker1 avatar welksonramos avatar williambelle 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mediacenterjs's Issues

Make initial path-configuration optional

Currently for the initial setup it is required to give pathes for all types of medias (movies, music, tv shows, ...).
I think some, or maybe even all, of these options should be optional as not everyone is using mediacenters for e.g. listening to music. A hint could be displayed showing the user that every path can be configured afterwards too.

Music Category Doesn't Load Files

As per my other Issue #42

Just did a clean install on Ubuntu 12.04 64Bit with node -v 0.10.22 and npm -v v1.3.14.

I have assigned my music path as follows

root@mcjs:~/mediacenterjs# cat configuration/config.ini | grep music
musicpath = /root/media/music/

I uploaded a .mp3 file to /root/media/music/. Now when attempting to access http://localhost:3000/music/ the page renders properly, however the actual mp3 is never displayed. A small white box with a spinning/loading icon spins continuously while no errors are thrown from node.JS. Please see the attached screenshot.

music_spin

Database error: Error: write EPIPE / throw er; // Unhandled 'error' event / Error: spawn ENOENT

Just did a clean install on Ubuntu 12.04 64Bit with node -v 0.10.22 and npm -v v1.3.14.

I have also chmod -R 777 * within the MediaCenterJS directory.

Launching the application via node server.js results successfuly and the application starts/serves properly. Clicking the Movies icon results with the page partially loading and then throwing the following error:

info: socket.io started
MediacenterJS listening on port: 80
Screen ready...
Database error: Error: write EPIPE
Database error: Error: write EPIPE

events.js:72
        throw er; // Unhandled 'error' event
            ^
Error: spawn ENOENT
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)
Child process exited

Error on using correct translation

I decided to clone the repo and see how things are going as I noticed there have been a ton of commits while I've been working on the Youtube App.
Error:

Please create a resource file for your default locale: translation_en-US

The error is coming from setup.jade in the JS:

var userLang = navigator.language || navigator.userLanguage; 
userLang.replace(/-.*/,'');
// This returns en-US instead of en

This causes the translation.json file to not be found because en-US does not match the translation_en.json filename.

To fix, consider replacing the these lines with something more durable or a better regex.
Edit: Looks to be an issue where the value is not being assigned to the new replaced regex.
This works for me:

userLang = userLang.replace(/-.*/,'');

events.js:72: throw er; // Unhandled 'error' event, Error: spawn ENOENT

I'm checking out the code on a fresh raring container and I receive the following error:

...
First run, Setup running on localhost:3000

events.js:72
throw er; // Unhandled 'error' event
^
Error: spawn ENOENT
at errnoException (child_process.js:980:11)
at Process.ChildProcess._handle.onexit (child_process.js:771:34)

Make TV show app work

  • Handle seasons folder structure
  • Add playback functionality
  • port frontend to knockout
  • Add process to handle data

App crashing during movie import (matadata fetch) on Ubuntu 13.04

Trying to run for the first time on Ubuntu 13.04. The server goes up and when I try to access the Movie Plugin it crashes. What should I do to make it work?

Logs below.

Starting server
connect.multipart() will be removed in connect 3.0
visit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives
connect.limit() will be removed in connect 3.0

   googlemusic:
     GET /googlemusic/ -> index

   hello-world:
     GET /hello-world/ -> index

   movies:
     GET /movies/ -> index
     GET /movies/:id/:optionalParam?/:action? -> get

   music:
     GET /music/ -> index
     GET /music/:id/:optionalParam?/:action? -> get

   plugins:
     GET /plugins/ -> index
     GET /plugins/:id/:optionalParam?/:action? -> get

   settings:
     GET /settings/ -> index

   tv:
     GET /tv/ -> index
     POST /tv/:id* -> post

   weather:
     GET /weather/ -> index

   youtube:
     GET /youtube/ -> index
MediacenterJS listening on port: 3000
Searching for Family Guy S11E01 in database
TypeError: Arguments to path.join must be strings
    at path.js:360:15
    at Array.filter (native)
    at Object.exports.join (path.js:358:36)
    at Object.exports.ensureCacheDirExists (/home/luiseduardo14/Projects/pessoal/mediacenterjs/lib/handlers/app-cache-handler.js:11:17)
    at Object.exports.fetchMetadataForMovie (/home/luiseduardo14/Projects/pessoal/mediacenterjs/apps/movies/metadata-fetcher.js:26:20)
    at Object.exports.handler (/home/luiseduardo14/Projects/pessoal/mediacenterjs/apps/movies/movie-functions.js:69:19)
    at exports.get (/home/luiseduardo14/Projects/pessoal/mediacenterjs/apps/movies/index.js:58:15)
    at callbacks (/home/luiseduardo14/Projects/pessoal/mediacenterjs/node_modules/express/lib/router/index.js:164:37)
    at param (/home/luiseduardo14/Projects/pessoal/mediacenterjs/node_modules/express/lib/router/index.js:138:11)
    at param (/home/luiseduardo14/Projects/pessoal/mediacenterjs/node_modules/express/lib/router/index.js:135:11)

Add validation messages to translation files

The validation messages in /app/settings/view/settings.jade and /views/setup.jade need to be added to the translation file so the messages can be show in the native language

remove node_modules

..unless you want git clone <this-repo> to take forever && ever.

Better yet, remove it from the whole history of the project.

Adaptive Bitrate through DASH

I know it might be a little far thinking but I thought we should add a place to discuss DASH and its possible future in this great project.

Add subtitle support

Subtitles need to be shown during playback. VideoJS supports subtitles so this shouldn't be too hard to add.

Movie App: Images url slashes are wrong

The slashes of image url need to be forward slashes instead of backslashes.

Currently Chrome will auto-correct this problem, but Firefox and Chromium will not show the images.

Raspberry Pi: Browser without X directly on FB

Due to the fact that midori or chromium use X to run, they are very slow on the Raspberry Pi. Even Luakit is way to slow for MediacenterJS to run.

We need to find a browser that runs directly on the framebuffer to improve performance but still maintain support for javascript and HTML5.

Improvements video playback

  • Remove dependency of flash on desktop browsers
  • Make encode settings editable by user
  • Adjust encoding settings based on PC capabilities
  • Make videos seekable on IOS and Android

Startup on Fedora 19

Hey man its been a while since I have synced up or done a new NPM install.

In any case I just did a npm install mediacenterjs and then node server and I got this message. Any thoughts?

node server.js 
Starting server
connect.multipart() will be removed in connect 3.0
visit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives
connect.limit() will be removed in connect 3.0

fs.js:821
  return binding.chmod(pathModule._makeLong(path), modeNum(mode));
                 ^
Error: ENOENT, no such file or directory './lib/database/mcjs.sqlite'
    at Object.fs.chmodSync (fs.js:821:18)
    at Object.<anonymous> (/home/motersho/tmp/node_modules/mediacenterjs/index.js:77:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3
Child process exited

Streaming output file...

Hi Jan,

glad that the streaming is working while transcoding. I was looking through some of your code and noticed

startMovieStreaming = function(response, movieUrl, opts) {
var outputPath = "./public/data/movies/output.mp4";

could I suggest naming the file the same as the session id? This would then enable multiple (distinct) sessions to the server with a file for each session (multi-user support). A cleanup job could then be ran to clear old and expired files.

Thanks,

Matthew

Share playback state across devices

Enable the option to share playback state across devices so playback can be resumed from desktop to IOS device by the press of a button. To get this to work, video's need to be seekable on IOS and Android devices. Only then, the '-ss' functionality of FFMPEG can be used to resume playback on the desired position.

TODO's:

On pause/stop events of the client player, send a call to the backend and store the: "fileid, date, progress, deviceid" so playback can be resumed elsewhere

Child process exited

When I try to launch the server I get :

[18:05:10] admin:mediacenterjs git:(master) $ node server
Starting server

   googlemusic:
     GET /googlemusic/ -> index

   hello-world:
     GET /hello-world/ -> index

   movies:
     GET /movies/ -> index
     GET /movies/:id/:optionalParam?/:action? -> get

   music:
     GET /music/ -> index
     GET /music/:id/:optionalParam?/:action? -> get

   nerdist:
     GET /nerdist/ -> index

   settings:
     GET /settings/ -> index

   tv:
     GET /tv/ -> index
     POST /tv/:id* -> post

   weather:
     GET /weather/ -> index

   youtube:
     GET /youtube/ -> index
First run, Setup running on localhost:3000

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn EACCES
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)
Child process exited

I'm on OSX 10.8.4 and node v0.10.19

You are doing a great job ;)

Regards,

Alexandre

Error near "-"

Been looking around to see where it is coming from but no luck.

Starting server

   googlemusic:
     GET /googlemusic/ -> index

   hello-world:
     GET /hello-world/ -> index

   movies:
     GET /movies/ -> index
     GET /movies/:id/:optionalParam?/:action? -> get

   music:
     GET /music/ -> index
     GET /music/:id/:optionalParam?/:action? -> get

   nerdist:
     GET /nerdist/ -> index

   settings:
     GET /settings/ -> index

   tv:
     GET /tv/ -> index
     POST /tv/:id* -> post

   weather:
     GET /weather/ -> index

   youtube:
     GET /youtube/ -> index
MediacenterJS listening on port: 3000
Error: near "-": syntax error

bye bye

Mac OSX 10.8 Node v0.10.15
Thanks

feature request: real database

it would be great to use real database, e.g. mongodb for store tracks and videos. I could give support / implementation if needed.. This allows much more possibilities for future development like searches / stored playlists etc...

Question on js framework

Do you want Knockout across the board? Or can one set contain Angular and other contain Knockout? Or maybe I could get it in Angular then port it when I have something working?

Chromecast support

Could chrome cast support be implemented into the server? It'd be great to have a node based media center app that could cast to the Chromecast.

I have some example code of on the fly transcoding of mkvs at maherbeg/mkvcast The settings I've chosen only work for h264 files, but it does mean there is no drop in video quality and not much CPU usage involved as well.

local sqlite3 error

when I choose local ubuntu 12.10 sqlite3, there is an error :

Error: near "-": syntax error

remove binaries from source code

os dependent binaries should be removed from source code and must be listed as requirement - later include the os binaries in os dependent installer

TODO: Add remote control functionality

As discussed in the npm plugin manger pull request there needs to be a remote control based on websockets that will hook on the current keyboard support.

Add noob/easy bugs

Add a tag for easy issues for people to fix to get there hands dirty in the project.

Apps as fully qualified express apps

Maybe instead of exporting various configurations in the index.js files, the apps should be build off express applications.
This would make routing, maintaining, etc of the apps a lot easier as they can implement custom middlewares, routes and so on.
These apps could be mounted under the foldername they resite in the bootstrapping process.

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.