SkillAgentSearch skills...

Tagem

A broad family of utilities for organising files based on hierarchical tagging, from web server to a computer vision dataset creation pipeline.

Install / Use

/learn @NotCompsky/Tagem
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<p align="center"> <img src="https://user-images.githubusercontent.com/30552567/88488637-77c22180-cf86-11ea-955a-484d6ca08b27.png"/> <h1 align="center">tagem</h1> </p> <p align="center"> <a href="LICENSE"><img src="https://img.shields.io/github/license/NotCompsky/tagem"/></a> <a href="https://github.com/notcompsky/tagem/releases"><img src="https://img.shields.io/github/v/release/NotCompsky/tagem"/></a> <a href="https://hub.docker.com/repository/docker/notcompsky/tagem/tags"><img src="https://img.shields.io/docker/image-size/notcompsky/tagem?label=Docker%20image"/></a> <a href="https://github.com/notcompsky/tagem/graphs/commit-activity"><img src="https://img.shields.io/github/commit-activity/w/NotCompsky/tagem"/> <a href="https://github.com/notcompsky/tagem/graphs/contributors"><img src="https://img.shields.io/github/contributors/NotCompsky/tagem"></a> <a href="https://discord.gg/DnD7RJA"><img src="https://img.shields.io/discord/736649679575580814?label=Discord"></a> </p>

screenshot

Description

A single page application, with associated command-line utilities, for the rapid categorising and accessing of files, based on assignable attributes such as (heirarchical) tags, named variables, file sizes, hashes, and audio duration.

Features

  • Supports most common file formats
  • Hashing of local files.
    • Hashes include MD5, SHA256, and DCT (visual hashing of images and video).
    • These hashes can be used in qry to facilitate fast manual de-duplication.
    • Hashing of remote files is planned.
  • Text editor
    • More of a text creator atm, as editing existing files is currently restricted.
  • Ordering, filtering etc. of results in the tables on the page.
  • qry: A simple query language that allows for short and human-friendly queries that automatically translate to complex SQL queries
    • Combine ANDs and ORs (intersections and unions) of many different filters (for attributes like size, views, likes, tags; hashes in common with other files; etc).
    • It can search for all types of things, not just files but also the tags themselves.
    • See the full documentation.
  • Heirarchical tags
    • Any tag can have any number of parent tags and any number of child tags.
  • Everything can be tagged
    • Eras, files, directories, devices, and even tags themselves (as parent tags)
    • For instance, the directory https://www.youtube.com/watch?v- could be tagged Video, and that tag will be applied to all files within.
  • Support for remote files
    • Remote files are as accessible as local files (except for some sites that tell the browser not to display them within iframes - though there's a relatively simple workaround for that).
    • You can add files from the server's attached storage devices, and also from remote websites (including an option for downloading with youtube-dl). Local copies of remote files are treated as backups, and are listed on the remote file's page.
    • With the view filesystem option, this means that - provided the server has access to a script written for the specific website - a website's contents could be easily viewable in the table view.
  • Eras
    • Tagged time intervals of audio and video files.
    • These can be searched for, and used in playlists interchangeably with files themselves.
    • Eras can be downloaded (from a local file or remote URL) into their own file.
      • NOTE: This currently requires ffmpeg to be installed alongside this server. However, it will eventually be combined into the server itself.
  • Playlists
    • Playlists can be created on the fly out of any selection of files and/or eras (in any combination).
  • Support for other databases
    • Files can be associated with posts from other databases, so long as those databases follow a strict structure.
    • For instance, a Reddit post could be scraped, and associated with the URL of the linked article, as here
    • Each external database can, if it includes the necessary tables, display a lot more information than just the comments under a post, even listing all the posts (translated to our files) that a single user has commented on.
    • An example script for scraping Reddit posts is included in this project
  • Tag thumbnails
    • These thumbnails are inherited from their parents, unless the child has a thumbnail of its own.
  • file2 values
    • Files can be assigned arbitrary values, currently integers and datetimes.
    • For instance, you could have a Score attribute for each user to assign to files.
  • Permissions system
    • Different users can be assigned different blocklists of tags, and will not be able to view any era/file/directory/device with such a tag, or a descendant of such a tag.
    • Different users can have different allowed actions, such as viewing files, editing tags, creating eras, assigning tags, and adding files.
    • A big caveat here is that the login system is currently only a placeholder - it does not yet even ask for a password.
  • Low footprint
    • Almost all executed JavaScript was written by hand - only one 3rd party library is loaded
    • On Firefox, each page consumes 10-15MB - comparable to a Google search results page
    • The CSS is designed to avoid unnecessarily moving parts

Demonstration

A neutered version of this app is hosted here. GitHub does not allow it to be interactive, so most features are disabled - it is basically just a demonstration of the front-end.

A sample of features in the demo:

  • The ability to create and view playlists of 'eras' - e.g. and e.g. and e.g.
  • If you "log in", you can view an example administrator dashboard.

See the user guide (linked below) for some examples of features.

User Guide

For those using the web app

See USER_GUIDE.md

Server Admin Guide

For those running the server

See ADMIN_GUIDE.md

See ADMIN_ADVANCED_USAGE.md for more complex features and use cases.

Installation

Server

See INSTALL.md.

Scripts

You'll probably want to add the scripts directory to your PATH environmental variable, or perhaps just copy the scripts to /usr/local/bin.

The [Reddit userscript

Related Skills

View on GitHub
GitHub Stars96
CategoryData
Updated4d ago
Forks6

Languages

C++

Security Score

100/100

Audited on Apr 3, 2026

No findings