Tagem - A Self-hosted Feature-Rich File Manager for Your Server
A single page application, with associated command-line utilities, for the rapid categorising and accessing of files, based on assignable attributes such as (hierarchical) 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 taggedVideo
, 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.
- NOTE: This currently requires
- 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
Supported Systems
- Linux
License
The app is released under the GPL-3.0 License