Skip to content

Abstract elements manager (multimedia, data, stuff) in browser

License

Notifications You must be signed in to change notification settings

pawamoy/Omnidia

Repository files navigation

Omnidia

ci documentation pypi version gitter

File (and abstract object) manager using a graph database and a web interface.

Why is that?

A tree structure is not always efficient to explore and exploit your data.
For example, where do you put a track called Foo - Bar (Baz Remix).ogg?
In Foo's directory or in Baz's one? Maybe you could add a symbolic link so it's in both?
What if this track is also part of a movie's original soundtrack?
And you want it in one or two playlists of your own?
And use it in a special project?

In this case it would be easier to have the track somewhere, an abstracted element that knows its path on the disk, and other elements defining links to it (its abstracted form).

Well, this is a graph. As an abstract layer above your file system.

Omnidia does not aim to provide an alternative file system. Its goal is to offer an interface to manipulate your files (and other abstract objects) with graphs. Each file / object is a node that can be connected to other files / objects. You can then search for things, connect them and discover common attributes between different entities.

Progression

Omnidia is currently just in alpha version. There are many graph database solutions, many languages, many drivers and many framework that could be used to achieve this. For now the chosen technologies are the following:

The features available are the following:

  • watchdog handler to sync database with the content of a folder (i.e. copy files here -> nodes are created, delete/move/rename them -> same applied on db)

You can also visualize the nodes and edges with Neo4j's web browser at localhost:7474.

Requirements

Omnidia requires Python 3.6 or above.

To install Python 3.6, I recommend using pyenv.
# install pyenv
git clone https://github.com/pyenv/pyenv ~/.pyenv

# setup pyenv (you should also put these three lines in .bashrc or similar)
export PATH="${HOME}/.pyenv/bin:${PATH}"
export PYENV_ROOT="${HOME}/.pyenv"
eval "$(pyenv init -)"

# install Python 3.6
pyenv install 3.6.12

# make it available globally
pyenv global system 3.6.12

Installation

With pip:

python3.6 -m pip install omnidia

With pipx:

python3.6 -m pip install --user pipx

pipx install --python python3.6 omnidia