Skip to main content

File organization made easy using tags

Project description

HyperTag

File organization made easy. HyperTag let's humans intuitively express how they think about their files using tags.

Install

$ pip install hypertag

Quick Start

HyperTag offers a slick CLI but more importantly it creates a directory called HyperTagFS which is a file system based representation of your files and tags using symbolic links and directories.

Directory Import: Import your existing directory hierarchies using $ hypertag import path/to/directory. HyperTag converts it automatically into a tag hierarchy using metatagging.

File Type Groups: HyperTag automatically creates folders containing common files (e.g. Images: jpg, png, etc., Documents: txt, pdf, etc., Source Code: py, js, etc.), which can be found in HyperTagFS.

HyperTagFS Daemon (Experimental): Monitors HyperTagFS for user changes. Currently supports file and directory (tag) deletions + directory (name as query) creation with automatic query result population.

HyperTag Graph: Quickly get an overview of your HyperTag Graph! HyperTag visualizes the metatag graph on every change and saves it at HyperTagFS/hypertag-graph.pdf.

HyperTag Graph Example

CLI Functions

Start HyperTagFS daemon

Starts process watching HyperTagFS dir for user changes

$ hypertag daemon

Set HyperTagFS directory path

Default is the user's home directory

$ hypertag set_hypertagfs_dir path/to/directory

Import existing directory recursively

Import files with tags inferred from existing directory hierarchy

$ hypertag import path/to/directory

Tag file/s

Manually tag files

$ hypertag tag humans/*.txt with human "Homo Sapiens"

Untag file/s

Manually remove tag/s from file/s

$ hypertag untag humans/*.txt with human "Homo Sapiens"

Tag a tag

Metatag tag/s to create tag hierarchies

$ hypertag metatag human with animal

Merge tags

Merges all associations (files & tags) of tag A into tag B

$ hypertag merge human into "Homo Sapiens"

Query using Set Theory

Prints file names matching the query. Nesting is currently not supported, queries are evaluated from left to right

Print paths: $ hypertag query human --path

Default operand is AND (intersection):
$ hypertag query human "Homo Sapiens"

OR (union):
$ hypertag query human or "Homo Sapiens"

MINUS (difference):
$ hypertag query human minus "Homo Sapiens"

Print all tags of file/s

$ hypertag tags filename1 filename2

Print all metatags of tag/s

$ hypertag metatags tag1 tag2

Print all tags

$ hypertag show

Print all files

Print names: $ hypertag show files

Print paths: $ hypertag show files --path

Visualize HyperTag Graph

Visualizes the metatag graph hierarchy (saved at HyperTagFS root)

$ hypertag graph

Specify layout algorithm (default: fruchterman_reingold): $ hypertag graph --layout=kamada_kawai

Architecture

  • Python powers HyperTag
  • SQLite3 serves as the meta data storage engine (located at ~/.config/hypertag/hypertag.db)
  • Symbolic links are used to create the HyperTagFS directory structure

Development

  • Clone repo: $ git clone https://github.com/SeanPedersen/HyperTag.git
  • $ cd HyperTag/
  • Install Poetry
  • Install dependencies: $ poetry install
  • Activate virtual environment: $ poetry shell
  • Run all tests: $ pytest -v
  • Run Black formatter: $ black hypertag/
  • Run PyLint: $ pylint **/*.py
  • Run MyPy: $ mypy **/*.py
  • Run Bandit: $ bandit --exclude tests/ -r .
  • Run HyperTag: $ python -m hypertag

Inspiration

This project is inspired by other existing open-source projects:

What is the point of HyperTag's existence? HyperTag offers some unique features such as the import function that make it very convenient to use. Also HyperTag's code base is written in Python and thus extremely small (<600 LOC) compared to TMSU (>10,000 LOC) and SuperTag (>25,000 LOC), making it easy to modify / contribute yourself.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hypertag-0.3.0.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

hypertag-0.3.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file hypertag-0.3.0.tar.gz.

File metadata

  • Download URL: hypertag-0.3.0.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.9.1 Linux/5.10.3-arch1-1

File hashes

Hashes for hypertag-0.3.0.tar.gz
Algorithm Hash digest
SHA256 fdc3135027717aa29d9e32fcbb22713704d8627a0b17ff80596d8eedd117e3b4
MD5 c07c49d8ed55eafcd1e2a67ca4a16195
BLAKE2b-256 1ecf3a1bf755cf19f1af4b7f43c686719a6f9a0c24f93fadfce293fb89a40938

See more details on using hashes here.

File details

Details for the file hypertag-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: hypertag-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.9.1 Linux/5.10.3-arch1-1

File hashes

Hashes for hypertag-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b9054b6e3b484a9bed3ffa7a9de5c49458b78a47dc020d2376ae2168cb18a60c
MD5 3df8b078ac5111908a763e3513495a91
BLAKE2b-256 8215c4b442c2f472e1e87b3f38185170cdb1863cbd2636e154244abedfe60726

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page