{"id":15008578,"url":"https://github.com/guillex387/qpt-compact","last_synced_at":"2025-10-03T16:31:49.403Z","repository":{"id":181328093,"uuid":"390193749","full_name":"Guillex387/qpt-compact","owner":"Guillex387","description":"This is a command line tool for compressing and decompressing, files and folders","archived":true,"fork":false,"pushed_at":"2021-12-14T20:04:51.000Z","size":21,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-09-29T16:04:40.814Z","etag":null,"topics":["algorithms","algorithms-and-data-structures","cli","command-line","command-line-tool","compression","compression-algorithm","dart","dart-lang","dart-package","windows"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Guillex387.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-07-28T03:00:26.000Z","updated_at":"2024-01-02T01:46:08.000Z","dependencies_parsed_at":"2023-07-15T01:33:51.651Z","dependency_job_id":null,"html_url":"https://github.com/Guillex387/qpt-compact","commit_stats":null,"previous_names":["guillex387/qpt-compact"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guillex387%2Fqpt-compact","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guillex387%2Fqpt-compact/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guillex387%2Fqpt-compact/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guillex387%2Fqpt-compact/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Guillex387","download_url":"https://codeload.github.com/Guillex387/qpt-compact/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235156017,"owners_count":18944828,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithms","algorithms-and-data-structures","cli","command-line","command-line-tool","compression","compression-algorithm","dart","dart-lang","dart-package","windows"],"created_at":"2024-09-24T19:19:25.754Z","updated_at":"2025-10-03T16:31:44.100Z","avatar_url":"https://github.com/Guillex387.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# qpt-compact\n\n## Description and use\nThis is a command line tool for compress and decompress, files and folders, using a lossless compression.\n\u003e Type `compactor -h` or `--help`\n\n## Executable\nDownload the executable for [windows x64](https://github.com/Guillex387/qpt-compact/releases/download/1.1.0/compactor-win-v1.1.0-x64.zip) and [linux x64](https://github.com/Guillex387/qpt-compact/releases/download/1.1.0/compactor-linux-v1.1.0-x64.zip) **last version**.\n\u003e In linux for execute this, you need the executable permission, this command only needs to be used once.\n\u003e\n\u003e `$ chmod +x ./compactor`\n\u003e\n\u003e And then you can use the app.\n\u003e\n\u003e `$ ./compactor -h`\n\n## Development\nThis tool is written in [dart](https://dart.dev) with help of the package manager [pub](https://pub.dev), for donwload the necesary libraries for the app.\nFor compressing the files and folders I use the [bzip2 encoder](https://en.wikipedia.org/wiki/Bzip2), in case that you don't like use the compressor put this flag `--no-compress`, you will find all commands structures in the help message.\n\nI save the info in a json header, the structure of this is a tree, the folder object have a list of childs that can be a folder or a file, the file object will save her location of its content in a [base64](https://en.wikipedia.org/wiki/Base64) string with a constant length of 24 characters, that indicates the byteoffset and the length, and this header has a attribute called *compressed*, which is a boolean that indicates if the file contents have the bzip enconding or not.\n\nFor read the file, at the beginning you will find a binary unsinged int of 64 bit that indicate the length of the json header, for the location of the file, divide the string in two, parse to byteArray and to Uint64, then you have two numbers left, the first indicate the byteoffset and the other the length of file. Check if the contents of the files needs a bzip2 decoding with the *compressed* attribute of the header.\n\n## License\nLicensed under the [Apache License](https://github.com/Guillex387/qpt-compact/blob/master/LICENSE), Version 2.0. Copyright 2021 Guillex387.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguillex387%2Fqpt-compact","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguillex387%2Fqpt-compact","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguillex387%2Fqpt-compact/lists"}