snapxo 1.0.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. snapxo-1.0.0/.gitignore +16 -0
  2. snapxo-1.0.0/CHANGELOG.md +33 -0
  3. snapxo-1.0.0/LICENSE +674 -0
  4. snapxo-1.0.0/PKG-INFO +371 -0
  5. snapxo-1.0.0/README.md +324 -0
  6. snapxo-1.0.0/pyproject.toml +126 -0
  7. snapxo-1.0.0/snapxo/__init__.py +1 -0
  8. snapxo-1.0.0/snapxo/__main__.py +4 -0
  9. snapxo-1.0.0/snapxo/checkpoint.py +118 -0
  10. snapxo-1.0.0/snapxo/cleanup.py +17 -0
  11. snapxo-1.0.0/snapxo/cli.py +188 -0
  12. snapxo-1.0.0/snapxo/config.py +122 -0
  13. snapxo-1.0.0/snapxo/conversations.py +468 -0
  14. snapxo-1.0.0/snapxo/dedup.py +65 -0
  15. snapxo-1.0.0/snapxo/deps.py +148 -0
  16. snapxo-1.0.0/snapxo/encoder.py +110 -0
  17. snapxo-1.0.0/snapxo/ffmpeg.py +209 -0
  18. snapxo-1.0.0/snapxo/fixtypes.py +66 -0
  19. snapxo-1.0.0/snapxo/indexer.py +431 -0
  20. snapxo-1.0.0/snapxo/inspector.py +292 -0
  21. snapxo-1.0.0/snapxo/manifest.py +167 -0
  22. snapxo-1.0.0/snapxo/merge.py +452 -0
  23. snapxo-1.0.0/snapxo/metadata.py +147 -0
  24. snapxo-1.0.0/snapxo/organizer.py +73 -0
  25. snapxo-1.0.0/snapxo/overlay.py +135 -0
  26. snapxo-1.0.0/snapxo/pdf.py +130 -0
  27. snapxo-1.0.0/snapxo/pipeline.py +508 -0
  28. snapxo-1.0.0/snapxo/scanner.py +114 -0
  29. snapxo-1.0.0/snapxo/snapmap.py +512 -0
  30. snapxo-1.0.0/snapxo/stats.py +274 -0
  31. snapxo-1.0.0/snapxo/utils.py +79 -0
  32. snapxo-1.0.0/snapxo/voice.py +45 -0
  33. snapxo-1.0.0/snapxo/webassets.py +158 -0
  34. snapxo-1.0.0/tests/conftest.py +61 -0
  35. snapxo-1.0.0/tests/test_checkpoint.py +125 -0
  36. snapxo-1.0.0/tests/test_cli.py +110 -0
  37. snapxo-1.0.0/tests/test_config.py +70 -0
  38. snapxo-1.0.0/tests/test_dedup.py +79 -0
  39. snapxo-1.0.0/tests/test_fixtypes.py +76 -0
  40. snapxo-1.0.0/tests/test_manifest.py +129 -0
  41. snapxo-1.0.0/tests/test_metadata.py +100 -0
  42. snapxo-1.0.0/tests/test_organizer.py +111 -0
  43. snapxo-1.0.0/tests/test_overlay.py +95 -0
  44. snapxo-1.0.0/tests/test_pipeline.py +160 -0
  45. snapxo-1.0.0/tests/test_scanner.py +64 -0
  46. snapxo-1.0.0/tests/test_utils.py +104 -0
@@ -0,0 +1,16 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ .eggs/
8
+ *.egg
9
+ .venv/
10
+ venv/
11
+ .mypy_cache/
12
+ .ruff_cache/
13
+ .pytest_cache/
14
+ *.tmp
15
+ CLAUDE.md
16
+ .claude/
@@ -0,0 +1,33 @@
1
+ # Changelog
2
+
3
+ All notable changes to SnapXO are recorded here. The format follows
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the version numbers
5
+ follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [1.0.0] - 2026-08-10
8
+
9
+ Initial release.
10
+
11
+ - **Media organization**: memories and chat media sorted into year or
12
+ year-month folders with clean filenames (`2026-05-08_0444.mp4`)
13
+ - **H.265 encoding**: videos re-encoded with Intel QSV hardware acceleration,
14
+ falling back to libx265
15
+ - **Overlay burning**: Snapchat overlays burned onto photos and videos
16
+ - **GPS and EXIF**: coordinates from `memories_history.json` written into image
17
+ EXIF data
18
+ - **Duplicate removal**: content-hash deduplication, before encoding
19
+ - **Voice messages**: audio-only MP4s detected and converted to MP3
20
+ - **Conversations**: per-contact pages with messages, photos, videos and voice
21
+ messages
22
+ - **Statistics**: overview page with cards and detail tables
23
+ - **Snap Map**: interactive map with route, timeline slider, playback animation
24
+ and the location of each memory
25
+ - **Media gallery**: `index.html` with navigation, type filters, thumbnails and
26
+ a details panel per file
27
+ - **Merge**: several exports combined into one, deduplicated and renumbered,
28
+ without re-encoding
29
+ - **PDF export**: conversations and statistics rendered to PDF
30
+ - **Resume**: an interrupted run picks up where it stopped instead of copying
31
+ and encoding everything again
32
+
33
+ Runs on Windows, Linux and macOS.