Package: linky-db
linkyAn databaseless file tagger using symlinks.This allows for a file to have multiple tags without agonizing about folder structure.Quick startIf videos are your thinghere you go.<iframe width="560" height="315" sandbox="allow-same-origin allow-scripts" src="https://video.ploud.fr/videos/embed/b404bb78-e1e6-4190-8517-ac222d015be4" frameborder="0" allowfullscreen></iframe>This requires at least python 3.6 and pip.
Before files can be tagged, a directory first has to be initialized for use withlinky.1. Install the packagepip install linky-db2. Configure the tag groups (categories)Navigate to directory for initializationCan be your folder with videos, music, books, etc.cd my_link_rootWrite a configuration fileYou can modify it later of course.
Seecategories.schema.yamlfor a description thereof andcategories.yamlfor an examplemkdir.linkyecho"Tags:default: Untaggedextensible: Trueexclusive_default: Truetags:- Action- Fantasy- Romance- Sci-Fi- Zombie">.linky/categories.yaml3. Initialize the folderlinky init .A.basedirectory will be created and everything previously in the directory,
will be moved into the base directory.
It will contain all the data.
The directory containing.baseand all other data is called thelinked root.SeeHowand thedocsfor more information.You can now start:exploring commands:linky help,linky help add,linky help ...tagging:linky tag -t Category/Tag file_in_your_rootadding more fileslinky add fileOrDir_outside_your_rootmoving files:linky move old/path/old_name new/path/new_nameMoving files outside of the tag folders is restricted bylinky!WhyPrograms often use databases to keep meta information about files. These databases:are often stored in places one might not expecthave a custom schemahave incompatibilities with other databasese.g postgres vs mariadb vs sqlite vs nosql vs etc.All of which make migrations from program to program difficult.
Now, of course this program will suffer from that particular problem (migration) too, however
it will be possible to manually maintain the folder structure and links mentioned below.HowConsider this existing directory. Lines prefixed by#are comments about the item below them!# The linked root.### Base folder that contains the data├──.base####### Configuration folder│├──.linky
││└──categories.yaml
│├──LastChristmas(2019)││├──Last.Christmas.2019.4k.HEVC.YIFY.mkv
││└──subs
││├──cmn.srt
││├──de.srt
││├──eng.srt
││└──nl.srt
│└──TheHurtLocker(2008)│└──The.Hurt.Locker.2008.1080p.BRrip.mkv### A category (or tag group) folder in the linked root├──Actors####### A tag folder│├──AnthonyMackie
││└──TheHurtLocker(2008)││└──The.Hurt.Locker.2008.1080p.BRrip.mkv->../../../.base/TheHurtLocker(2008)/The.Hurt.Locker.2008.1080p.BRrip.mkv####### Another tag folder│├──EmiliaClarke
││└──LastChristmas(2019)││├──Last.Christmas.2019.4k.HEVC.YIFY.mkv->../../../.base/LastChristmas(2019)/Last.Christmas.2019.4k.HEVC.YIFY.mkv
││└──subs
││├──cmn.srt->../../../../.base/LastChristmas(2019)/subs/cmn.srt
││├──de.srt->../../../../.base/LastChristmas(2019)/subs/de.srt
││├──eng.srt->../../../../.base/LastChristmas(2019)/subs/eng.srt
││└──nl.srt->../../../../.base/LastChristmas(2019)/subs/nl.srt
│├──EmmaThompson
││└──LastChristmas(2019)││├──Last.Christmas.2019.4k.HEVC.YIFY.mkv->../../../.base/LastChristmas(2019)/Last.Christmas.2019.4k.HEVC.YIFY.mkv
││└──subs
││├──cmn.srt->../../../../.base/LastChristmas(2019)/subs/cmn.srt
││├──de.srt->../../../../.base/LastChristmas(2019)/subs/de.srt
││├──eng.srt->../../../../.base/LastChristmas(2019)/subs/eng.srt
││└──nl.srt->../../../../.base/LastChristmas(2019)/subs/nl.srt
│├──GuyPearce
││└──TheHurtLocker(2008)││└──The.Hurt.Locker.2008.1080p.BRrip.mkv->../../../.base/TheHurtLocker(2008)/The.Hurt.Locker.2008.1080p.BRrip.mkv
│├──JeremyRenner
││└──TheHurtLocker(2008)││└──The.Hurt.Locker.2008.1080p.BRrip.mkv->../../../.base/TheHurtLocker(2008)/The.Hurt.Locker.2008.1080p.BRrip.mkv
│└──MadisonIngoldsby
│└──LastChristmas(2019)│├──Last.Christmas.2019.4k.HEVC.YIFY.mkv->../../../.base/LastChristmas(2019)/Last.Christmas.2019.4k.HEVC.YIFY.mkv
│└──subs
│├──cmn.srt->../../../../.base/LastChristmas(2019)/subs/cmn.srt
│├──de.srt->../../../../.base/LastChristmas(2019)/subs/de.srt
│├──eng.srt->../../../../.base/LastChristmas(2019)/subs/eng.srt
│└──nl.srt->../../../../.base/LastChristmas(2019)/subs/nl.srt
└──Watched├──Unwatched│└──LastChristmas(2019)│├──Last.Christmas.2019.4k.HEVC.YIFY.mkv->../../../.base/LastChristmas(2019)/Last.Christmas.2019.4k.HEVC.YIFY.mkv│└──subs│├──cmn.srt->../../../../.base/LastChristmas(2019)/subs/cmn.srt│├──de.srt->../../../../.base/LastChristmas(2019)/subs/de.srt│├──eng.srt->../../../../.base/LastChristmas(2019)/subs/eng.srt│└──nl.srt->../../../../.base/LastChristmas(2019)/subs/nl.srt└──Watched└──TheHurtLocker(2008)└──The.Hurt.Locker.2008.1080p.BRrip.mkv->../../../.base/TheHurtLocker(2008)/The.Hurt.Locker.2008.1080p.BRrip.mkvlinky works by keeping all files in a common, hidden folder called.base.
All siblings of in the folder tree will link their files to the base folder.
It is thus possible to have a file in multiple categories like
Watched, Rating, Size, Actors etc.DocsFor more information on the nomenclature and inner workings.DevelopmentSeeHACKING.mdAlternativesThe following aresemantic filesystemsthat fulfill very similar functions.
Most use separate database files, which is why I don't use them, but they
might very well be useful to you!dhtfs- Tagging based filesystem, providing dynamic directory hierarchies
based on tags associated with files.Tagsistant- a tag-based filesystem for Linux
that turns directories into tags and search your files for you.TMSU- TMSU is a tool for tagging your files.
It provides a simple command-line tool for applying tags
and a virtual filesystem so that you can get a tag-based
view of your files from within any other program.xtagfs- A tag-based filesystem for Mac OS XThanksFirst and formost to all the open source devs who made this possible.the packages on pypi like cliff, yamale ando therpipfor the package hostinggitlabfor the code hosting and CIJetbrains for the Pycharm IDEInkscape for the icon editorMy partner for the icon (a link is 66% of a foot. Source:wikipedia)