tagfile
==============================================================================
Search, index and tag your files and find duplicates.
The goal of tagfile is to manage and organize documents, downloads,
music, pictures and videos in a way that is not tied to any file browser
program, filesystem or operating system.
The metadata that tagfile creates and uses to keep track of these
files should be portable for use in multiple computer systems and be
independent from any persistent mount points, filepaths or filenames.
--------
Features
--------
- index files with their checksums
- find duplicate files
- scan all files in a directory recursively
- ignore files according to rules in user config
Features to be implemented in later versions:
- remove duplicate files in the same directory
- remove duplicate files interactively across directories
- add user defined tags to files (using checksums, independent from filenames)
Ideas that may or may not be implemented in later versions:
- ability to filter files using tags to create listings to use with
other programs
- ability to use tags to create directory structures of symlinked content
------------
Quick Manual
------------
Open a terminal and cd to a directory to be scanned for files:
.. code:: console
$ cd ~/Music
$ tagfile scan
Now, you can see stats, search for files by string and find duplicate
files using the following commands:
.. code:: console
$ tagfile stats
$ tagfile find radiohead
$ tagfile same
You can add directories without cd'ing to it first with the add command:
.. code:: console
$ tagfile add ~/Videos
------------------
Installing tagfile
------------------
Tagfile is a command-line end-user application written in Python that
is dependant on packages from PyPI. You can install it using pip. But
using pipx (https://pypa.github.io/pipx/) is recommended because it
avoids dependency problems and/or clashes with python packages from your
system's package manager in the future.
Install tagfile:
.. code:: console
$ pipx install tagfile
To build and install from source you can use:
.. code:: console
$ make install
This will auto-install flit (build tool) and pipx if not found.
To upgrade or uninstall tagfile in the future you can use:
.. code:: console
$ pipx upgrade tagfile
$ pipx uninstall tagfile
------
Status
------
Current version: **v0.1.0**
Tagfile has been written in a short time and used by me sporadically for
8 years after that. All code was contained in a single file script in
``~/bin``, available from Github only.
Starting in March 2023 I've decided to properly release it to PyPI and
flesh out the current project structure, command interface and database
handling before working on new features so it may live up to its name.
Since at this moment in time, you cannot tag your files yet :)
Tagfile adheres to `Semantic Versioning <https://semver.org>`_. Until
a stable version 1.0.0 is ready, the API, CLI and config settings are
subject to change from 0.x version to 0.x version, likely without
offering migrations.
Prerequisites:
- Python 3.7 or later
Dependencies (automatically installed with pipx / pip):
- Peewee ORM (https://peewee.readthedocs.org/en/latest/)
- PyYAML (https://pyyaml.org/)
- ansicolors (https://pypi.python.org/pypi/ansicolors/)
- pycommand (https://babab.github.io/pycommand/)
----------------
Software license
----------------
Copyright (c) 2015-2023 Benjamin Althues <benjamin at babab . nl>
tagfile is open source software, licensed under a BSD-3-Clause license.
See the `LICENSE <https://github.com/babab/tagfile/blob/master/LICENSE>`_
file for the full license text.
Raw data
{
"_id": null,
"home_page": null,
"name": "tagfile",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "tag,files,media,duplicate,duplicates,organize,checksum,locate,database,find,hash,filter,harddisk,space",
"author": null,
"author_email": "Benjamin Althues <benjamin@babab.nl>",
"download_url": "https://files.pythonhosted.org/packages/4d/3b/b4fc25ea0857f72705e5ac92aecbe00ddfb66229963cd1769db12fe821e0/tagfile-0.1.0.tar.gz",
"platform": null,
"description": "tagfile\n==============================================================================\n\nSearch, index and tag your files and find duplicates.\n\nThe goal of tagfile is to manage and organize documents, downloads,\nmusic, pictures and videos in a way that is not tied to any file browser\nprogram, filesystem or operating system.\n\nThe metadata that tagfile creates and uses to keep track of these\nfiles should be portable for use in multiple computer systems and be\nindependent from any persistent mount points, filepaths or filenames.\n\n\n--------\nFeatures\n--------\n\n- index files with their checksums\n- find duplicate files\n- scan all files in a directory recursively\n- ignore files according to rules in user config\n\nFeatures to be implemented in later versions:\n\n- remove duplicate files in the same directory\n- remove duplicate files interactively across directories\n- add user defined tags to files (using checksums, independent from filenames)\n\nIdeas that may or may not be implemented in later versions:\n\n- ability to filter files using tags to create listings to use with\n other programs\n- ability to use tags to create directory structures of symlinked content\n\n\n------------\nQuick Manual\n------------\n\nOpen a terminal and cd to a directory to be scanned for files:\n\n.. code:: console\n\n $ cd ~/Music\n $ tagfile scan\n\n\nNow, you can see stats, search for files by string and find duplicate\nfiles using the following commands:\n\n.. code:: console\n\n $ tagfile stats\n $ tagfile find radiohead\n $ tagfile same\n\n\nYou can add directories without cd'ing to it first with the add command:\n\n.. code:: console\n\n $ tagfile add ~/Videos\n\n\n------------------\nInstalling tagfile\n------------------\n\nTagfile is a command-line end-user application written in Python that\nis dependant on packages from PyPI. You can install it using pip. But\nusing pipx (https://pypa.github.io/pipx/) is recommended because it\navoids dependency problems and/or clashes with python packages from your\nsystem's package manager in the future.\n\nInstall tagfile:\n\n.. code:: console\n\n $ pipx install tagfile\n\nTo build and install from source you can use:\n\n.. code:: console\n\n $ make install\n\nThis will auto-install flit (build tool) and pipx if not found.\n\nTo upgrade or uninstall tagfile in the future you can use:\n\n.. code:: console\n\n $ pipx upgrade tagfile\n $ pipx uninstall tagfile\n\n\n------\nStatus\n------\n\nCurrent version: **v0.1.0**\n\nTagfile has been written in a short time and used by me sporadically for\n8 years after that. All code was contained in a single file script in\n``~/bin``, available from Github only.\n\nStarting in March 2023 I've decided to properly release it to PyPI and\nflesh out the current project structure, command interface and database\nhandling before working on new features so it may live up to its name.\nSince at this moment in time, you cannot tag your files yet :)\n\nTagfile adheres to `Semantic Versioning <https://semver.org>`_. Until\na stable version 1.0.0 is ready, the API, CLI and config settings are\nsubject to change from 0.x version to 0.x version, likely without\noffering migrations.\n\nPrerequisites:\n\n- Python 3.7 or later\n\nDependencies (automatically installed with pipx / pip):\n\n- Peewee ORM (https://peewee.readthedocs.org/en/latest/)\n- PyYAML (https://pyyaml.org/)\n- ansicolors (https://pypi.python.org/pypi/ansicolors/)\n- pycommand (https://babab.github.io/pycommand/)\n\n\n----------------\nSoftware license\n----------------\n\nCopyright (c) 2015-2023 Benjamin Althues <benjamin at babab . nl>\n\ntagfile is open source software, licensed under a BSD-3-Clause license.\nSee the `LICENSE <https://github.com/babab/tagfile/blob/master/LICENSE>`_\nfile for the full license text.\n",
"bugtrack_url": null,
"license": null,
"summary": "Search, index and tag your files and find duplicates",
"version": "0.1.0",
"split_keywords": [
"tag",
"files",
"media",
"duplicate",
"duplicates",
"organize",
"checksum",
"locate",
"database",
"find",
"hash",
"filter",
"harddisk",
"space"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "9e02c4e32c8847e7edb702d946da368e758768532871f097185a21c1e3673652",
"md5": "bc89531dc7ccec9cef1278a8b266b665",
"sha256": "c7bfe99483fd382af6da1ce8f7eabc14444d3c5401b4537bce417c28a172d902"
},
"downloads": -1,
"filename": "tagfile-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bc89531dc7ccec9cef1278a8b266b665",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 8028,
"upload_time": "2023-03-23T21:33:55",
"upload_time_iso_8601": "2023-03-23T21:33:55.150867Z",
"url": "https://files.pythonhosted.org/packages/9e/02/c4e32c8847e7edb702d946da368e758768532871f097185a21c1e3673652/tagfile-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4d3bb4fc25ea0857f72705e5ac92aecbe00ddfb66229963cd1769db12fe821e0",
"md5": "a13d3d0fc2dc1c19f6f07ddf4f4dbbc7",
"sha256": "efe080a92e421c3d07c2a876f212b793461bb193a9f7364a9fe24eb0691fb46e"
},
"downloads": -1,
"filename": "tagfile-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "a13d3d0fc2dc1c19f6f07ddf4f4dbbc7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 6854,
"upload_time": "2023-03-23T21:33:57",
"upload_time_iso_8601": "2023-03-23T21:33:57.504622Z",
"url": "https://files.pythonhosted.org/packages/4d/3b/b4fc25ea0857f72705e5ac92aecbe00ddfb66229963cd1769db12fe821e0/tagfile-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-23 21:33:57",
"github": false,
"gitlab": false,
"bitbucket": false,
"lcname": "tagfile"
}