Giter Club home page Giter Club logo

jsona's Introduction

jSona screenshot

jSona is a configuration file(JSON), vlcj and JavaFx based music and media player. The aim of jSona is to always keep your playlists in synch with your music folders. For fast fulltext search jSona uses Apache Lucene. The follwing features are fully supported:

  • Supports all common media formats that VLC supports
  • Load artist information and images via last.fm and MusicBrainz
  • Include your music folders
  • Create multiple playlists
  • Fulltext search

##Screenhot jSona screenshot

##New features You want new features? On the following page you can vote for and submit new feature requests. http://jsona.idea.informer.com

##Download jSona has a dependency to VLC3, which only can be found here: http://nightlies.videolan.org/build/.

###Install VLC3 on Ubuntu sudo add-apt-repository ppa:videolan/master-daily

sudo apt-get update

sudo apt-get install vlc

##Developpement Information If you want to develop under a linux system you need to recompile the OpenJDK beacause JavaFX is not included, or you have to install Oracles JDK where JavaFX is included. To enjoy a good JavaFX support please use Java SDK 8 within your IDE.

##Configuration file / config.json

Here is an example of the default configuration file. You have to setup your VLC path correctly. If you use Java 32-bit/64-bit you also have to use VLC-32-bit/64-bit.

{
  "ALLOW_JSONA_TO_OVERWRITE_ME": true,
  "MAX_SEARCH_RESULT_AMOUNT": 512,
  "VOLUME": 100,
  "FOLDERS": [
    "D:/media/music",
    "C:/share",
    "C:/downloads/music",
    "\\nas\share\music"
  ],
  "INCLUDE_EXTENSIONS": [
    ".mp3",
    ".wav",
    ".wma",
    ".flc",
    ".aac",
  ],
  "PLAYBACK_MODE": "NORMAL",
  "RECENTLY_ADDED_UNITL_TIME_IN_DAYS": -7,
  "THEME": "grey",
  "KEY_SKIP_TIME": 10,
  "WINDOW_OS_DECORATION": true,
  "TITLE": "jSona - open source project by Frank Roth",
  "MIN_HEIGHT": 600,
  "MIN_WIDTH": 720,
  "COLORIZE_ITEMS": true,
  "SCANNER_AND_TAGGER_LOGGING_GRANULARITY": 128
}

And here an explanation of all possible attributes:

#####ALLOW_JSONA_TO_OVERWRITE_ME If you set this value to true then jsona will overwrite your config.json with the current jSona config. For example if you change the volume in the player then the VOLUME value gets overwritten. There only a few configuration attributes that can be change during runtime (e.g.: PLAYBACK_MODE).

#####MAX_SEARCH_RESULT_AMOUNT Maximum search results of the lucene engine (smaller is faster)

#####VOLUME Default startup volume. Will be overwritten by jSona (always save the recently changed volume).

#####FOLDERS Your music folders. Care of JSON-Syntax and correct backslashes (/). jSona also supports the usage of the Uniform Naming Convention and folders in a network (e.g.: "\\servername\folder\path"). See example above...

#####INCLUDE_EXTENSIONS This array says what kind of files you want to add to jSona. If it is empty or this field is deleted then every file with every extension will be included to your playlists.

#####PLAYBACK_MODE Playbackmode of jSona. Choose one of them: {NORMAL, SHUFFLE}. Will be overwritten by jSona (always save the recently changed playback mode).

#####RECENTLY_ADDED_UNITL_TIME_IN_DAYS How long do you want to show new songs in the "New" tab. If you choose -7 then new songs will be displayed for one week in the "New" tab. This number should always be negative.

#####THEME Currently there is only one theme available: {"grey"}.

#####KEY_SKIP_TIME If you change the duration slider with the help of the arrow keys(left or right) or hotkeys the slider rewind or skips 10 seconds.

#####WINDOW_OS_DECORATION If you set the value on false the normal OS window decoration will be used. If you set the value on true it has no os window decoration. It will look a little bit more beautiful!

jSona screenshot - undecorated: false

#####TITLE Window title of jSona. Will only be displayed if the WINDOW_UNDECORATED property is set to false.

#####HEIGHT Height of the window in pixels.

#####WIDTH Width of the window in pixels.

#####MIN_HEIGHT Minimum window height.

#####MIN_WIDTH Minimum window width.

#####COLORIZE_ITEMS If the value is set to true the same music items will be displayed with a different smooth background color. If the value is set to false then the default JavaFX list background will be used (see screenshot above).

jSona screenshot

#####FILEPATH_BASED_MUSIC_INFORMATIONS There is the possibility to define rules to detect music information with the help of the file path. Currently there are two kind of rules {"ROOT_SUBFOLDER_LEVEL_RULE", "FILENAME_RULE"}. The "ROOT_SUBFOLDER_LEVEL_RULE" is a rule based on the subfolder level according to the root directory. With the help of the "FILENAME_RULE" you can match everything according to the filename (not file path) of the file. It is possible to ignore file endings and to replace underscores with a space.

The follwing examples should help you with to use these rules.

If you have a folder structure like this and this is your music file name:

C:\media\music\Rock\ACDC\Highway to Hell\03 - Walk All Over You.mp3

Your root folder is

C:\media\music

With the follwing rules you can match the genre (%GENRE%), the artist (%ARTIST%), the title (%TITLE%), the album (%ALBUM%) and the track number (%TRACK_NO%):

{

...

"FILEPATH_BASED_MUSIC_INFORMATIONS": [
    {
      "rule": "ROOT_SUBFOLDER_LEVEL_RULE",
      "params": {
        "PATTERN": "%GENRE%",
        "REPLACE_UNDERSCORES_WITH_SPACES": false,
        "FOLDER_LEVEL": 1
      }
    },
    {
      "rule": "ROOT_SUBFOLDER_LEVEL_RULE",
      "params": {
        "PATTERN": "%ARTIST%",
        "REPLACE_UNDERSCORES_WITH_SPACES": false,
        "FOLDER_LEVEL": 2
      }
    }, 
    {
      "rule": "ROOT_SUBFOLDER_LEVEL_RULE",
      "params": {
        "PATTERN": "%ALBUM%",
        "REPLACE_UNDERSCORES_WITH_SPACES": false,
        "FOLDER_LEVEL": 3
      }
    },    
    {
      "rule": "FILENAME_RULE",
      "params": {
        "PATTERN": "%TRACK_NO% - %TITLE%",
        "IGNORE_FILE_ENDING": true,
        "REPLACE_UNDERSCORES_WITH_SPACES": true
      }
    }
  ]
}

Every matching %VARIABLE% will be trimmed at the ending, so it does not mather if you choose %TRACK_NO% - %TITLE% or %TRACK_NO%-%TITLE% as a pattern. It is also possible to ignore areas in the path by producing non declared Variables like: %TMP%, %I_DONT_NEED_THAT%, %IGNORE%... you can create anything...

#####SCANNER_AND_TAGGER_LOGGING_GRANULARITY Logging every file in the scanner and tagging process can be very time expensive. Because of that you can define the granularity of the scanner and tagging logging. If the value is set to 1 every file is logged (time expensive). If the value is set to 128 only every 128th and the last file will be logged. This value can be every number > 0.

#####HOTKEYS Here is a list of all modifiers and keys that can be used: https://github.com/frankred/jSona/wiki/Key-Codes. Currently only global hotkeys work. Supported application events are: {PLAYER_VOLUME_UP, PLAYER_VOLUME_DOWN, PLAYER_PLAY_PAUSE, VIEW_HIDE_SHOW, PLAYER_NEXT, PLAYER_PREVIOUS, PLAYER_TIME_UP, PLAYER_TIME_DOWN}

{

...

"HOTKEYS": [
    {
      "key": 107,
      "event": "PLAYER_VOLUME_UP",
      "global": true
    },
    {
      "key": 109,
      "event": "PLAYER_VOLUME_DOWN",
      "global": true
    },
    {
      "key": 19,
      "event": "PLAYER_PLAY_PAUSE",
      "global": true
    },
    {
      "key": 49,
      "modifiers": [
        128
      ],
      "event": "VIEW_HIDE_SHOW",
      "global": true
    }
  ],
}

##Changelog

###1.0.5

  • Bugfixing {ListView, Layout}
  • Repeat mode added (THX Naios)
  • File extension whitelist mechanism added (THX Naios)

###1.0.4

  • Bugfixing {ListView, Title Information changed, ListView layout, fileCreated, fileModified}
  • Equalizer implemented (for testing only, unstable, unsavable)

###1.0.3

  • Loading animation for each folder added in frontend.

###1.0.2

  • HOTKEYS can now be defined in the config.json.
  • VOLUME_UP_DOWN_AMOUNT amount for hotkeys can be defined in the config.json.

###1.0.1

  • Music information like artist or title can now be detected from the filepath with the help of detector rules in the config.json.
  • Logging granularity of file scanner and tagger can now be defined in the config.json.

##Installation and Start Download the current zip file and extract it. Then put in your correct VLC path into the config.json file and start jSona with the following command.

java -jar jSona-1.0.4.jar

jSona uses JavaFX so a current Java virtual machine with JavaFX support should be installed.

If you want to run jSona without getting showed the console (only works on Windows) use the following command:

start javaw -jar jSona-1.0.4.jar

##Help / FAQ Here is a screenshot of jSona that explains the easy to use user interface. jSona explaining the UI

##Thank you very much! This project is based on a set of amazing projects. Thank you to all programmers!

##License MIT - Free Software, Hell Yeah!

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.