File (and abstract object) manager using a graph database and a web interface.
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.
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.
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
With pip
:
python3.6 -m pip install omnidia
With pipx
:
python3.6 -m pip install --user pipx
pipx install --python python3.6 omnidia