Coder Social home page Coder Social logo

lifecanvs / lcvs-app-librer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pjdude/librer

0.0 0.0 0.0 1.44 MB

A cross-platform GUI file cataloging program with extensive customization options to suit user preferences. Highly optimized for multi-core parallel search speed, data integrity, and repository portability.

Home Page: https://pjdude.github.io/librer/

License: MIT License

Shell 0.74% Python 98.45% HTML 0.04% Batchfile 0.78%

lcvs-app-librer's Introduction

LIBRER

A cross-platform GUI file cataloging program with extensive customization options to suit user preferences. Highly optimized for multi-core parallel search speed, data integrity, and repository portability.

Features:

The primary purpose of this software is to enable users to catalog their files, especially on removable media such as memory cards and portable drives. It allows user to add metadata, referred to here as custom data, and later search the created records with multiple cryteria. Custom data consists of textual information acquired through the execution of user-chosen commands or scripts. Custom data may include any text data customized to meet the user's requirements, restricted only by the available memory and the software accessible for data retrieval. The retrieved data is stored in a newly created database record and can be utilized for search or verification purposes. Liber allows you to search files using regular expressions, glob expressions and fuzzy matching on both filenames and custom data. Created data records can be exported and imported to share data with others or for backup purposes.

Screenshots:

Main window, new record creation dialog and running custom data extraction:

image info

Search dialog:

image info

Context menu:

image info

Portable executable packages created with PyInstaller for Linux and Windows can be downloaded from the Releases site. At the same time, separate builds are created with the Nuitka compiler.

Guidelines for crafting Custom Data Extractors

Custom data extractor is a command that can be invoked with a single parameter - the full path to a specific file from which data is extracted. The command should provide the expected data in any textual format to the standard output (stdout). CDE can be an executable file (e.g., 7z, zip, ffmpeg, md5sum etc.) or an executable shell script (extract.sh, extract.bat etc.). The conditions it should meet are reasonably short execution time and reasonably limited information output. The criteria allowing the execution of a particular Custom data extractor include the glob expression (on file name) and the file size range.

Examples of software suitable for creating Custom Data Extractors:

7-zip - lists the contents of the most popular archives, etc.

exiftool - get exif data from images like *.jpg, info on executables, and many more

ffprobe, MediaInfo - both get tags and other metadata from multimedia files like mp3, mp4, mkv, etc.

system shell basic commands like: type, more, cat

Usage tips:

  • do not put any destructive actions in your Custom Data Extractor scripts
  • try to keep as little custom data as possible, to speed up scanning and searching records and keep record files small
  • if general purpose and generally available tools produce too much and not needed text data, write a wrapper script (*.sh, *bat) executing specific tool and post-process retrieved data.
  • You don't have to use Custom Data if you don't need to. Only the file system will be cataloged.

Supported platforms:

  • Linux
  • Windows (10,11)

Portability

librer writes log files, configuration and record files in runtime. Default location for these files is logs and data subfolders of librer main directory.

Technical information

Record in librer is the result of a single scan operation and is shown as one of many top nodes in the main tree window. Contains a directory tree with collected custom data. It is stored as a single .dat file in librer database directory. Its internal format is optimized for security, fast initial access and maximum compression (just check :)) Every section is a python data structure serialized by pickle and compressed separately by Zstandard algorithm. The record file, once saved, is never modified afterward. It can only be deleted upon request or exported. All record files are independent of each other. Fuzzy matching is implemented using the SequenceMatcher function provided by the difflib module. Searching records is performed as a separate subprocess for each record. The number of parallel searches is limited by the CPU cores.

Manual build (linux):
pip install -r requirements.txt
./scripts/icons.convert.sh
./scripts/version.gen.sh
./scripts/pyinstaller.run.sh
Manual build (windows):
pip install -r requirements.txt
.\scripts\icons.convert.bat
.\scripts\version.gen.bat
.\scripts\pyinstaller.run.bat
Manual running of python script:
pip install -r requirements.txt
./scripts/icons.convert.sh
./scripts/version.gen.sh

python3 ./src/librer.py

Ideas for future development

  • gather custom data (generated also by user scripts) not only as text but also as binary files and store them inside record file (e.g. image thumbnails etc.)
  • calculate the CRC of scanned files and use it to search for duplicates among different records, verify current data with the saved file system image
  • comparing two records with each other. e.g. two scans of the same file system performed at different times

Licensing

Check out my homepage for other projects.

lcvs-app-librer's People

Contributors

pjdude avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.