media-engine 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 (96) hide show
  1. media_engine-0.1.0/.github/workflows/ci.yml +87 -0
  2. media_engine-0.1.0/.github/workflows/release.yml +75 -0
  3. media_engine-0.1.0/.gitignore +68 -0
  4. media_engine-0.1.0/API.md +535 -0
  5. media_engine-0.1.0/CLAUDE.md +325 -0
  6. media_engine-0.1.0/Dockerfile +26 -0
  7. media_engine-0.1.0/Dockerfile.cuda +37 -0
  8. media_engine-0.1.0/Dockerfile.mlx +32 -0
  9. media_engine-0.1.0/LICENSE +21 -0
  10. media_engine-0.1.0/MANIFEST.in +6 -0
  11. media_engine-0.1.0/PKG-INFO +276 -0
  12. media_engine-0.1.0/README.md +213 -0
  13. media_engine-0.1.0/cli/clip.py +79 -0
  14. media_engine-0.1.0/cli/faces.py +91 -0
  15. media_engine-0.1.0/cli/metadata.py +68 -0
  16. media_engine-0.1.0/cli/motion.py +77 -0
  17. media_engine-0.1.0/cli/objects.py +94 -0
  18. media_engine-0.1.0/cli/ocr.py +93 -0
  19. media_engine-0.1.0/cli/scenes.py +57 -0
  20. media_engine-0.1.0/cli/telemetry.py +65 -0
  21. media_engine-0.1.0/cli/transcript.py +76 -0
  22. media_engine-0.1.0/demo/index.html +1460 -0
  23. media_engine-0.1.0/demo/run.sh +105 -0
  24. media_engine-0.1.0/demo/server.py +151 -0
  25. media_engine-0.1.0/docker-compose.yml +54 -0
  26. media_engine-0.1.0/media_engine/__init__.py +7 -0
  27. media_engine-0.1.0/media_engine/_version.py +34 -0
  28. media_engine-0.1.0/media_engine/app.py +80 -0
  29. media_engine-0.1.0/media_engine/batch/__init__.py +56 -0
  30. media_engine-0.1.0/media_engine/batch/models.py +99 -0
  31. media_engine-0.1.0/media_engine/batch/processor.py +1131 -0
  32. media_engine-0.1.0/media_engine/batch/queue.py +232 -0
  33. media_engine-0.1.0/media_engine/batch/state.py +30 -0
  34. media_engine-0.1.0/media_engine/batch/timing.py +321 -0
  35. media_engine-0.1.0/media_engine/cli.py +17 -0
  36. media_engine-0.1.0/media_engine/config.py +674 -0
  37. media_engine-0.1.0/media_engine/extractors/__init__.py +75 -0
  38. media_engine-0.1.0/media_engine/extractors/clip.py +401 -0
  39. media_engine-0.1.0/media_engine/extractors/faces.py +459 -0
  40. media_engine-0.1.0/media_engine/extractors/frame_buffer.py +351 -0
  41. media_engine-0.1.0/media_engine/extractors/frames.py +402 -0
  42. media_engine-0.1.0/media_engine/extractors/metadata/__init__.py +127 -0
  43. media_engine-0.1.0/media_engine/extractors/metadata/apple.py +169 -0
  44. media_engine-0.1.0/media_engine/extractors/metadata/arri.py +118 -0
  45. media_engine-0.1.0/media_engine/extractors/metadata/avchd.py +208 -0
  46. media_engine-0.1.0/media_engine/extractors/metadata/avchd_gps.py +270 -0
  47. media_engine-0.1.0/media_engine/extractors/metadata/base.py +688 -0
  48. media_engine-0.1.0/media_engine/extractors/metadata/blackmagic.py +139 -0
  49. media_engine-0.1.0/media_engine/extractors/metadata/camera_360.py +276 -0
  50. media_engine-0.1.0/media_engine/extractors/metadata/canon.py +290 -0
  51. media_engine-0.1.0/media_engine/extractors/metadata/dji.py +371 -0
  52. media_engine-0.1.0/media_engine/extractors/metadata/dv.py +121 -0
  53. media_engine-0.1.0/media_engine/extractors/metadata/ffmpeg.py +76 -0
  54. media_engine-0.1.0/media_engine/extractors/metadata/generic.py +119 -0
  55. media_engine-0.1.0/media_engine/extractors/metadata/gopro.py +256 -0
  56. media_engine-0.1.0/media_engine/extractors/metadata/red.py +305 -0
  57. media_engine-0.1.0/media_engine/extractors/metadata/registry.py +114 -0
  58. media_engine-0.1.0/media_engine/extractors/metadata/sony.py +442 -0
  59. media_engine-0.1.0/media_engine/extractors/metadata/tesla.py +157 -0
  60. media_engine-0.1.0/media_engine/extractors/motion.py +765 -0
  61. media_engine-0.1.0/media_engine/extractors/objects.py +245 -0
  62. media_engine-0.1.0/media_engine/extractors/objects_qwen.py +754 -0
  63. media_engine-0.1.0/media_engine/extractors/ocr.py +268 -0
  64. media_engine-0.1.0/media_engine/extractors/scenes.py +82 -0
  65. media_engine-0.1.0/media_engine/extractors/shot_type.py +217 -0
  66. media_engine-0.1.0/media_engine/extractors/telemetry.py +262 -0
  67. media_engine-0.1.0/media_engine/extractors/transcribe.py +579 -0
  68. media_engine-0.1.0/media_engine/extractors/translate.py +121 -0
  69. media_engine-0.1.0/media_engine/extractors/vad.py +263 -0
  70. media_engine-0.1.0/media_engine/main.py +68 -0
  71. media_engine-0.1.0/media_engine/py.typed +0 -0
  72. media_engine-0.1.0/media_engine/routers/__init__.py +15 -0
  73. media_engine-0.1.0/media_engine/routers/batch.py +78 -0
  74. media_engine-0.1.0/media_engine/routers/health.py +93 -0
  75. media_engine-0.1.0/media_engine/routers/models.py +211 -0
  76. media_engine-0.1.0/media_engine/routers/settings.py +87 -0
  77. media_engine-0.1.0/media_engine/routers/utils.py +135 -0
  78. media_engine-0.1.0/media_engine/schemas.py +581 -0
  79. media_engine-0.1.0/media_engine/utils/__init__.py +5 -0
  80. media_engine-0.1.0/media_engine/utils/logging.py +54 -0
  81. media_engine-0.1.0/media_engine/utils/memory.py +49 -0
  82. media_engine-0.1.0/pyproject.toml +126 -0
  83. media_engine-0.1.0/tests/__init__.py +1 -0
  84. media_engine-0.1.0/tests/conftest.py +44 -0
  85. media_engine-0.1.0/tests/stress_test.py +643 -0
  86. media_engine-0.1.0/tests/test_api.py +59 -0
  87. media_engine-0.1.0/tests/test_batch_api.py +972 -0
  88. media_engine-0.1.0/tests/test_clip.py +51 -0
  89. media_engine-0.1.0/tests/test_faces.py +46 -0
  90. media_engine-0.1.0/tests/test_memory.py +232 -0
  91. media_engine-0.1.0/tests/test_metadata.py +38 -0
  92. media_engine-0.1.0/tests/test_model_lifecycle.py +284 -0
  93. media_engine-0.1.0/tests/test_objects.py +50 -0
  94. media_engine-0.1.0/tests/test_ocr.py +33 -0
  95. media_engine-0.1.0/tests/test_scenes.py +42 -0
  96. media_engine-0.1.0/tests/test_transcribe.py +73 -0
@@ -0,0 +1,87 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ lint:
11
+ name: Lint
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v5
18
+ with:
19
+ python-version: "3.12"
20
+
21
+ - name: Install linting tools
22
+ run: pip install ruff pyright black
23
+
24
+ - name: Ruff check
25
+ run: ruff check media_engine/ cli/ tests/
26
+
27
+ - name: Black format check
28
+ run: black --check --line-length 180 media_engine/ cli/ tests/
29
+
30
+ - name: Pyright
31
+ run: pyright media_engine/
32
+
33
+ test:
34
+ name: Test
35
+ needs: [lint]
36
+ runs-on: ubuntu-latest
37
+ steps:
38
+ - uses: actions/checkout@v4
39
+
40
+ - name: Set up Python
41
+ uses: actions/setup-python@v5
42
+ with:
43
+ python-version: "3.12"
44
+
45
+ - name: Install ffmpeg
46
+ run: sudo apt-get update && sudo apt-get install -y ffmpeg
47
+
48
+ - name: Install dependencies
49
+ run: |
50
+ pip install -e ".[cpu,dev]"
51
+
52
+ - name: Run tests
53
+ run: |
54
+ # Tests that require video files will auto-skip via pytest.skip()
55
+ # Stress test is excluded as it requires a running server
56
+ pytest tests/ -v --ignore=tests/stress_test.py
57
+
58
+ build:
59
+ name: Build
60
+ needs: [test]
61
+ runs-on: ubuntu-latest
62
+ steps:
63
+ - uses: actions/checkout@v4
64
+ with:
65
+ fetch-depth: 0 # Need full history for hatch-vcs
66
+
67
+ - name: Set up Python
68
+ uses: actions/setup-python@v5
69
+ with:
70
+ python-version: "3.12"
71
+
72
+ - name: Install build tools
73
+ run: pip install build
74
+
75
+ - name: Build package
76
+ run: python -m build
77
+
78
+ - name: Check package
79
+ run: |
80
+ pip install twine
81
+ twine check dist/*
82
+
83
+ - name: Upload artifacts
84
+ uses: actions/upload-artifact@v4
85
+ with:
86
+ name: dist
87
+ path: dist/
@@ -0,0 +1,75 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ # Run the same checks as CI before releasing
10
+ lint:
11
+ name: Lint
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v5
18
+ with:
19
+ python-version: "3.12"
20
+
21
+ - name: Install linting tools
22
+ run: pip install ruff pyright
23
+
24
+ - name: Ruff check
25
+ run: ruff check media_engine/ cli/ tests/
26
+
27
+ - name: Pyright
28
+ run: pyright media_engine/
29
+
30
+ publish:
31
+ name: Publish to PyPI
32
+ needs: [lint]
33
+ runs-on: ubuntu-latest
34
+ environment: pypi
35
+ permissions:
36
+ id-token: write # Required for trusted publishing
37
+ steps:
38
+ - uses: actions/checkout@v4
39
+ with:
40
+ fetch-depth: 0 # Need full history for hatch-vcs
41
+
42
+ - name: Set up Python
43
+ uses: actions/setup-python@v5
44
+ with:
45
+ python-version: "3.12"
46
+
47
+ - name: Install build tools
48
+ run: pip install build
49
+
50
+ - name: Build package
51
+ run: python -m build
52
+
53
+ - name: Check package
54
+ run: |
55
+ pip install twine
56
+ twine check dist/*
57
+
58
+ - name: Publish to PyPI
59
+ uses: pypa/gh-action-pypi-publish@release/v1
60
+ # Uses trusted publishing - configure at pypi.org/manage/project/media-engine/settings/publishing/
61
+
62
+ github-release:
63
+ name: Create GitHub Release
64
+ needs: [publish]
65
+ runs-on: ubuntu-latest
66
+ permissions:
67
+ contents: write
68
+ steps:
69
+ - uses: actions/checkout@v4
70
+
71
+ - name: Create GitHub Release
72
+ uses: softprops/action-gh-release@v2
73
+ with:
74
+ generate_release_notes: true
75
+ draft: false
@@ -0,0 +1,68 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+
23
+ # Virtual environments
24
+ venv/
25
+ ENV/
26
+ env/
27
+ .venv/
28
+
29
+ # IDE
30
+ .idea/
31
+ .vscode/
32
+ *.swp
33
+ *.swo
34
+ *~
35
+
36
+ # Testing
37
+ .pytest_cache/
38
+ .coverage
39
+ htmlcov/
40
+ .tox/
41
+ .nox/
42
+ test_data/
43
+
44
+ # Temp files
45
+ *.log
46
+ *.tmp
47
+ /tmp/
48
+
49
+ # OS
50
+ .DS_Store
51
+ Thumbs.db
52
+
53
+ # Project specific
54
+ *.mp4
55
+ *.mov
56
+ *.MP4
57
+ *.MOV
58
+ *.wav
59
+ *.xml
60
+ *.XML
61
+
62
+ # Model weights
63
+ *.pt
64
+ *.onnx
65
+ *.safetensors
66
+
67
+ # Generated version file (hatch-vcs)
68
+ media_engine/_version.py