kfn2mp4 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. kfn2mp4-0.1.0/CHANGELOG.md +44 -0
  2. kfn2mp4-0.1.0/LICENSE +674 -0
  3. kfn2mp4-0.1.0/MANIFEST.in +8 -0
  4. kfn2mp4-0.1.0/PKG-INFO +209 -0
  5. kfn2mp4-0.1.0/README.md +181 -0
  6. kfn2mp4-0.1.0/docs/kfn-format.md +156 -0
  7. kfn2mp4-0.1.0/docs/kfn3-format.md +139 -0
  8. kfn2mp4-0.1.0/kfn2mp4/__init__.py +6 -0
  9. kfn2mp4-0.1.0/kfn2mp4/__main__.py +6 -0
  10. kfn2mp4-0.1.0/kfn2mp4/assgen.py +227 -0
  11. kfn2mp4-0.1.0/kfn2mp4/cdg.py +143 -0
  12. kfn2mp4-0.1.0/kfn2mp4/cli.py +459 -0
  13. kfn2mp4-0.1.0/kfn2mp4/container.py +276 -0
  14. kfn2mp4-0.1.0/kfn2mp4/encoding.py +53 -0
  15. kfn2mp4-0.1.0/kfn2mp4/kfn3.py +561 -0
  16. kfn2mp4-0.1.0/kfn2mp4/midi.py +71 -0
  17. kfn2mp4-0.1.0/kfn2mp4/model.py +132 -0
  18. kfn2mp4-0.1.0/kfn2mp4/probe.py +214 -0
  19. kfn2mp4-0.1.0/kfn2mp4/progress.py +80 -0
  20. kfn2mp4-0.1.0/kfn2mp4/render.py +643 -0
  21. kfn2mp4-0.1.0/kfn2mp4/report.py +137 -0
  22. kfn2mp4-0.1.0/kfn2mp4/songini.py +288 -0
  23. kfn2mp4-0.1.0/kfn2mp4.egg-info/PKG-INFO +209 -0
  24. kfn2mp4-0.1.0/kfn2mp4.egg-info/SOURCES.txt +44 -0
  25. kfn2mp4-0.1.0/kfn2mp4.egg-info/dependency_links.txt +1 -0
  26. kfn2mp4-0.1.0/kfn2mp4.egg-info/entry_points.txt +2 -0
  27. kfn2mp4-0.1.0/kfn2mp4.egg-info/requires.txt +6 -0
  28. kfn2mp4-0.1.0/kfn2mp4.egg-info/top_level.txt +1 -0
  29. kfn2mp4-0.1.0/pyproject.toml +59 -0
  30. kfn2mp4-0.1.0/setup.cfg +4 -0
  31. kfn2mp4-0.1.0/tests/_synth.py +276 -0
  32. kfn2mp4-0.1.0/tests/conftest.py +28 -0
  33. kfn2mp4-0.1.0/tests/test_assgen.py +227 -0
  34. kfn2mp4-0.1.0/tests/test_cdg.py +163 -0
  35. kfn2mp4-0.1.0/tests/test_cli.py +324 -0
  36. kfn2mp4-0.1.0/tests/test_container.py +99 -0
  37. kfn2mp4-0.1.0/tests/test_encoding.py +39 -0
  38. kfn2mp4-0.1.0/tests/test_kfn3.py +218 -0
  39. kfn2mp4-0.1.0/tests/test_kfn3_media.py +76 -0
  40. kfn2mp4-0.1.0/tests/test_midi.py +93 -0
  41. kfn2mp4-0.1.0/tests/test_model.py +48 -0
  42. kfn2mp4-0.1.0/tests/test_probe.py +100 -0
  43. kfn2mp4-0.1.0/tests/test_render.py +402 -0
  44. kfn2mp4-0.1.0/tests/test_report.py +75 -0
  45. kfn2mp4-0.1.0/tests/test_songini.py +130 -0
  46. kfn2mp4-0.1.0/tools/kfn3_probe_head.py +214 -0
@@ -0,0 +1,44 @@
1
+ <!-- SPDX-License-Identifier: GPL-3.0-or-later -->
2
+ # Changelog
3
+
4
+ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
5
+ and the project adheres to [Semantic Versioning](https://semver.org/).
6
+
7
+ ## [Unreleased]
8
+
9
+ ## [0.1.0] - 2026-07-26
10
+
11
+ First public release.
12
+
13
+ ### Added
14
+ - **Conversion** of KaraFun karaoke files to MP4 with synchronized, highlighted
15
+ lyrics (word-by-word `\kf` wipe, burned in via ffmpeg/libass):
16
+ - `KFNB` binary containers (AES-128-ECB encrypted entries),
17
+ - old `PK` (ZIP) containers,
18
+ - legacy `KFN3` containers (chunked-deflate body) with a readable body;
19
+ encrypted-head files are detected and reported cleanly,
20
+ - **CD+Graphics**: standalone `.cdg` + sibling audio pairs and CDG entries
21
+ embedded in a KFN,
22
+ - **MIDI-only** files, synthesized via fluidsynth + a General-MIDI soundfont.
23
+ - **Rendering**: fixed 1280×720 canvas (aspect-fit, letter-/pillar-boxed);
24
+ image / video / timed-slideshow backgrounds; embedded fonts; translucent
25
+ text box for legibility; auto 2–3 line slot layout (`--slots 1-4`);
26
+ duet second voice in an accent colour; guaranteed text-width fit.
27
+ - **CLI**: single binary — a bare input prints an ffprobe-style report
28
+ (`--json` for machine output); conversion with `-o`/`-O` (yt-dlp-style
29
+ `{title}/{artist}/…` templates); batch inputs with skip-of-already-converted
30
+ by default (`--overwrite` to redo); `--extract-only`; colour overrides;
31
+ `--logo` watermark; `--check` environment doctor; `--report` privacy-safe
32
+ convertibility diagnostics; tqdm progress bars; clean interrupt handling
33
+ (unfinished outputs and temp files removed on stop).
34
+ - **Output**: MP4 tagged with the song's title/artist/album/year and a
35
+ converted-by marker in the `comment` tag.
36
+ - **Windows**: UTF-8 console output, `KFN2MP4_FFMPEG` tool discovery, shell-glob
37
+ expansion, and a standalone `kfn2mp4.exe` built in CI (validated on real
38
+ Windows 11 hardware).
39
+ - **Quality**: fully synthetic test suite (no copyrighted samples needed),
40
+ ~86% branch coverage enforced in CI on Linux and Windows across
41
+ Python 3.9–3.12.
42
+
43
+ [Unreleased]: https://github.com/lukenowak/kfn2mp4/compare/v0.1.0...HEAD
44
+ [0.1.0]: https://github.com/lukenowak/kfn2mp4/releases/tag/v0.1.0