Skip to content

Repository files navigation

English 简体中文 日本語

Offline Utility Suite

A portable, bilingual Windows toolkit for authenticated folder containers and practical SRT subtitle cleanup/editing, reconstructed into maintainable source from the author's earlier binaries and standalone HTML.

Last commit Repository size GitHub stars Python 3.12 to 3.14 MIT License

Included Tools

Folder Locker

  • Copies a folder into an authenticated AES-256-GCM .locked container.
  • Derives keys with PBKDF2-HMAC-SHA256 using the documented 600,000 iterations.
  • Reads the supported legacy FOLDERLOCK1 and FOLDERLOCK2 container formats.
  • Rejects symbolic links and unsafe restore paths and removes partial restoration output after failure.
  • Keeps the source folder after successful encryption so the user can verify a real restore before deleting anything.
  • Also provides a clearly labeled Windows/NTFS ACL quick lock. Quick lock is access control and name obfuscation, not encryption.

SRT Subtitle De-duplicator

  • Processes one or more .srt files with selectable cleanup rules.
  • Removes adjacent repeated lines inside a block, repeated fragments on one line, duplicate later blocks, and optionally anomalous timeline tails.
  • Reads UTF-8 BOM, UTF-8, GB18030, Big5, and Latin-1 inputs.
  • Writes UTF-8 and creates a timestamped *.bak-<time>.srt only when content actually changes.
  • Supports optional drag-and-drop through tkinterdnd2 and works with the file picker when drag-and-drop is unavailable.

SRT·EDIT

  • A standalone, single-file editor at web/srt-editor.html.
  • Opens directly in a browser with no server, install, build, CDN, or network connection.
  • Loads an original and optional comparison subtitle, edits the right column, adjusts times and offsets, searches, adds/removes entries, supports keyboard shortcuts, and exports _edited.srt.
  • Escapes subtitle text before inserting it into the DOM.

All tools run offline. They do not upload files, call remote APIs, include telemetry, or load remote runtime assets.

Requirements

  • Windows for the packaged desktop executables and the NTFS quick-lock mode.
  • Python >=3.12,<3.15 for source execution.
  • cryptography==49.0.0 and tkinterdnd2==0.6.2 from requirements.txt.
  • PyInstaller 6.21.0 only when building release executables.

Install and Run

Use a release asset

Download the required file from GitHub Release v1.0.0.

Goal v1.0.0 asset Start
Protect or restore a folder folder-locker-v1.0.0-windows-x64.exe Run the EXE on Windows x64
Clean SRT files in batches srt-dedupe-v1.0.0-windows-x64.exe Run the EXE on Windows x64
Compare and edit subtitles srt-editor-v1.0.0.html Open directly in a browser
Keep all three portable tools offline-utility-suite-v1.0.0-windows-x64.zip Extract the archive and choose a tool

Verify the selected asset against SHA256SUMS.txt. The EXE files are not digitally signed and may trigger an unknown-publisher or antivirus warning.

Run from source

py -3.12 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
$env:PYTHONPATH = "src"
.\.venv\Scripts\python.exe -m folder_locker.app
.\.venv\Scripts\python.exe -m srt_dedupe.app

Open web/srt-editor.html directly for SRT·EDIT.

Use the Tools

Folder Locker

Choose a source folder and destination .locked file, enter the password twice, and create the container. The source remains untouched. Restore the container to a separate destination and inspect the files before manually removing the source. A forgotten password cannot be recovered.

The advanced quick-lock tab modifies NTFS permissions and obfuscates names. Administrators or owners may bypass it, and its metadata is important for recovery.

SRT De-duplicator

Add one or more .srt files, select at least one cleanup rule, and start processing. Each file fails independently. The result panel reports detected encoding, old/new block count, cleanup statistics, backup path, and post-run validation.

The default rule removes adjacent duplicate text lines within each subtitle block. Cross-block removal keeps the earliest matching subtitle.

SRT·EDIT

Load the source subtitle, optionally load a comparison subtitle, edit and retime the right-hand entries, search as needed, and export the edited file. The editor remains self-contained and offline.

Test and Validate

$env:PYTHONPATH = "src"
python -m unittest discover -s tests -v
python -m compileall -q src scripts tests
.\tests\run_ui_smoke.ps1

Use .\tests\run_ui_smoke.ps1 -SkipLaunch only in CI or another environment without an interactive Windows desktop. No independent lint or format command was found.

Tests cover Folder Locker, SRT core cleanup, release metadata, and the Web editor. Recovery evidence and limits are documented in docs/RECOVERY_NOTES.md; docs/TEST_REPORT.md records the repository's existing verification report.

Build and Release

Install build dependencies and run the release build:

.\.venv\Scripts\python.exe -m pip install -r requirements-dev.txt
powershell -ExecutionPolicy Bypass -File scripts/build.ps1

The build script tests first, compiles sources, creates two Windows x64 one-file executables, copies the HTML editor, creates a portable ZIP, and writes SHA256 checksums.

Expected release assets:

release-assets\folder-locker-v1.0.0-windows-x64.exe
release-assets\srt-dedupe-v1.0.0-windows-x64.exe
release-assets\srt-editor-v1.0.0.html
release-assets\offline-utility-suite-v1.0.0-windows-x64.zip
release-assets\SHA256SUMS.txt

No MSI is generated: the tools have no service, driver, file association, or required registry state. The executables are not digitally signed; verify SHA256SUMS.txt.

The workflow in .github/workflows/release.yml runs on v* tags with Python 3.12, installs requirements-dev.txt, builds, performs run_ui_smoke.ps1 -SkipLaunch, and creates or updates the matching GitHub Release using the repository token.

Project Structure

Path Responsibility
src/folder_locker/ Tkinter Folder Locker and cryptographic/ACL core
src/srt_dedupe/ Tkinter batch interface and SRT parsing/cleanup core
src/utility_suite/ Shared application identity and local language settings
web/srt-editor.html Self-contained offline SRT comparison editor
tests/ Folder, subtitle, release, web-editor, and GUI/package checks
scripts/build.ps1 Test, compile, PyInstaller, HTML copy, ZIP, and SHA256 pipeline
resources/ Folder Locker and SRT De-duplicator Windows version resources
docs/ Recovery notes, open-source audit, and test report

Recovery and Data Safety

This repository is a maintainable behavioral reconstruction. It does not claim to reproduce lost comments, original variable names, or byte-for-byte original source. Behavior is supported by tests and documented evidence.

  • Do not commit original binaries, extraction intermediates, local paths, caches, containers, restored folders, SRT backups, or release output.
  • Folder encryption never deletes the source automatically; verify restoration yourself.
  • SRT processing writes only when changed and creates a backup first.
  • The HTML editor must remain self-contained and escape untrusted subtitle text.
  • Unsigned PyInstaller binaries may trigger SmartScreen or antivirus warnings; accurate version metadata is not a digital signature.

Maintenance and Contributions

  • Keep Folder Locker behavior in src/folder_locker/, subtitle cleanup in src/srt_dedupe/, shared identity/settings in src/utility_suite/, and the standalone editor in web/srt-editor.html; do not move core rules into UI callbacks.
  • Add focused tests for container/path/ACL changes, SRT encoding/cleanup/backup changes, or editor import/escaping/export changes. Then run unittest, compileall, and the applicable UI/package smoke.
  • Read the recovery notes, open-source audit, and test report before changing reconstructed behavior, dependencies, or release claims.
  • Keep the tools fully offline and synchronize all three README versions, release notes, third-party notices, version resources, workflow, and checksums when their documented facts change.

Author

License

Project source is available under the MIT License. Packaged-component notices are in THIRD_PARTY_NOTICES.md, including Python, PyInstaller's bootloader exception, cryptography, Tcl/Tk, and tkinterdnd2/tkDnD.

Releases

Packages

Contributors

Languages