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.
- media_engine-0.1.0/.github/workflows/ci.yml +87 -0
- media_engine-0.1.0/.github/workflows/release.yml +75 -0
- media_engine-0.1.0/.gitignore +68 -0
- media_engine-0.1.0/API.md +535 -0
- media_engine-0.1.0/CLAUDE.md +325 -0
- media_engine-0.1.0/Dockerfile +26 -0
- media_engine-0.1.0/Dockerfile.cuda +37 -0
- media_engine-0.1.0/Dockerfile.mlx +32 -0
- media_engine-0.1.0/LICENSE +21 -0
- media_engine-0.1.0/MANIFEST.in +6 -0
- media_engine-0.1.0/PKG-INFO +276 -0
- media_engine-0.1.0/README.md +213 -0
- media_engine-0.1.0/cli/clip.py +79 -0
- media_engine-0.1.0/cli/faces.py +91 -0
- media_engine-0.1.0/cli/metadata.py +68 -0
- media_engine-0.1.0/cli/motion.py +77 -0
- media_engine-0.1.0/cli/objects.py +94 -0
- media_engine-0.1.0/cli/ocr.py +93 -0
- media_engine-0.1.0/cli/scenes.py +57 -0
- media_engine-0.1.0/cli/telemetry.py +65 -0
- media_engine-0.1.0/cli/transcript.py +76 -0
- media_engine-0.1.0/demo/index.html +1460 -0
- media_engine-0.1.0/demo/run.sh +105 -0
- media_engine-0.1.0/demo/server.py +151 -0
- media_engine-0.1.0/docker-compose.yml +54 -0
- media_engine-0.1.0/media_engine/__init__.py +7 -0
- media_engine-0.1.0/media_engine/_version.py +34 -0
- media_engine-0.1.0/media_engine/app.py +80 -0
- media_engine-0.1.0/media_engine/batch/__init__.py +56 -0
- media_engine-0.1.0/media_engine/batch/models.py +99 -0
- media_engine-0.1.0/media_engine/batch/processor.py +1131 -0
- media_engine-0.1.0/media_engine/batch/queue.py +232 -0
- media_engine-0.1.0/media_engine/batch/state.py +30 -0
- media_engine-0.1.0/media_engine/batch/timing.py +321 -0
- media_engine-0.1.0/media_engine/cli.py +17 -0
- media_engine-0.1.0/media_engine/config.py +674 -0
- media_engine-0.1.0/media_engine/extractors/__init__.py +75 -0
- media_engine-0.1.0/media_engine/extractors/clip.py +401 -0
- media_engine-0.1.0/media_engine/extractors/faces.py +459 -0
- media_engine-0.1.0/media_engine/extractors/frame_buffer.py +351 -0
- media_engine-0.1.0/media_engine/extractors/frames.py +402 -0
- media_engine-0.1.0/media_engine/extractors/metadata/__init__.py +127 -0
- media_engine-0.1.0/media_engine/extractors/metadata/apple.py +169 -0
- media_engine-0.1.0/media_engine/extractors/metadata/arri.py +118 -0
- media_engine-0.1.0/media_engine/extractors/metadata/avchd.py +208 -0
- media_engine-0.1.0/media_engine/extractors/metadata/avchd_gps.py +270 -0
- media_engine-0.1.0/media_engine/extractors/metadata/base.py +688 -0
- media_engine-0.1.0/media_engine/extractors/metadata/blackmagic.py +139 -0
- media_engine-0.1.0/media_engine/extractors/metadata/camera_360.py +276 -0
- media_engine-0.1.0/media_engine/extractors/metadata/canon.py +290 -0
- media_engine-0.1.0/media_engine/extractors/metadata/dji.py +371 -0
- media_engine-0.1.0/media_engine/extractors/metadata/dv.py +121 -0
- media_engine-0.1.0/media_engine/extractors/metadata/ffmpeg.py +76 -0
- media_engine-0.1.0/media_engine/extractors/metadata/generic.py +119 -0
- media_engine-0.1.0/media_engine/extractors/metadata/gopro.py +256 -0
- media_engine-0.1.0/media_engine/extractors/metadata/red.py +305 -0
- media_engine-0.1.0/media_engine/extractors/metadata/registry.py +114 -0
- media_engine-0.1.0/media_engine/extractors/metadata/sony.py +442 -0
- media_engine-0.1.0/media_engine/extractors/metadata/tesla.py +157 -0
- media_engine-0.1.0/media_engine/extractors/motion.py +765 -0
- media_engine-0.1.0/media_engine/extractors/objects.py +245 -0
- media_engine-0.1.0/media_engine/extractors/objects_qwen.py +754 -0
- media_engine-0.1.0/media_engine/extractors/ocr.py +268 -0
- media_engine-0.1.0/media_engine/extractors/scenes.py +82 -0
- media_engine-0.1.0/media_engine/extractors/shot_type.py +217 -0
- media_engine-0.1.0/media_engine/extractors/telemetry.py +262 -0
- media_engine-0.1.0/media_engine/extractors/transcribe.py +579 -0
- media_engine-0.1.0/media_engine/extractors/translate.py +121 -0
- media_engine-0.1.0/media_engine/extractors/vad.py +263 -0
- media_engine-0.1.0/media_engine/main.py +68 -0
- media_engine-0.1.0/media_engine/py.typed +0 -0
- media_engine-0.1.0/media_engine/routers/__init__.py +15 -0
- media_engine-0.1.0/media_engine/routers/batch.py +78 -0
- media_engine-0.1.0/media_engine/routers/health.py +93 -0
- media_engine-0.1.0/media_engine/routers/models.py +211 -0
- media_engine-0.1.0/media_engine/routers/settings.py +87 -0
- media_engine-0.1.0/media_engine/routers/utils.py +135 -0
- media_engine-0.1.0/media_engine/schemas.py +581 -0
- media_engine-0.1.0/media_engine/utils/__init__.py +5 -0
- media_engine-0.1.0/media_engine/utils/logging.py +54 -0
- media_engine-0.1.0/media_engine/utils/memory.py +49 -0
- media_engine-0.1.0/pyproject.toml +126 -0
- media_engine-0.1.0/tests/__init__.py +1 -0
- media_engine-0.1.0/tests/conftest.py +44 -0
- media_engine-0.1.0/tests/stress_test.py +643 -0
- media_engine-0.1.0/tests/test_api.py +59 -0
- media_engine-0.1.0/tests/test_batch_api.py +972 -0
- media_engine-0.1.0/tests/test_clip.py +51 -0
- media_engine-0.1.0/tests/test_faces.py +46 -0
- media_engine-0.1.0/tests/test_memory.py +232 -0
- media_engine-0.1.0/tests/test_metadata.py +38 -0
- media_engine-0.1.0/tests/test_model_lifecycle.py +284 -0
- media_engine-0.1.0/tests/test_objects.py +50 -0
- media_engine-0.1.0/tests/test_ocr.py +33 -0
- media_engine-0.1.0/tests/test_scenes.py +42 -0
- 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
|