# image-index This project is a script which can index and sort files on your pc. You can give every file a title, category, source, tags and content for easier finding later on. All information is stored inside of an SQLite-database. Two separate tables are used to give aliases to the categories and tags, so that a user can easily change the names without modifying all affected entries. You can also encrypt all files with AES-CBC. This project was written and tested on an Arch Linux-based distribution and python 3.10. ## Functions * add - Add a file and entry to the index * copy - copies a file from the index to a custom location * check - check if all files saved in the index exist and aren't faulty * delete - delete a file and remove the entry * import - lets you add every file to the index in a chosen directory * meta - a command to change aliases of categories and tags * open - open one or more files from the index in the default application (only Linux and Windows) * replace - replaces a file in the index with another file while keeping the entry * show - search through the index and show the matches * update - change a value of an entry in the index or move a file to another category ## Dependencies * hashlib * pycryptodomex * sqlite3 ## Downloading There isn't an install script currently. ```sh git clone https://gitlab.com/rodin_schule/image-index-py.git cd ./image-index-py ``` ## Configuration The top of the file holds some very important variables that need to be looked at by the user: * ROOT_DIR: The absolute path of where you want to save your files (the directories for the categories will be created there) * INDEX_FILE: The absolute path of the database file. * LINUX_APP_STARTER: The linux command which can open a file in the default application. Most distributions use `xdg-open`. * ENCRYPT: This setting tells the script whether to encrypt the added files by default or not. * If set to True, the ids of the categories will be fully random (fe627ea4-3fd60 instead of category-3fd60) for pretty much zero-knowledge storage on a remote server without access to the database.