audio-transcode-watcher 0.4.2__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.
- audio_transcode_watcher-0.4.2/.github/FUNDING.yml +4 -0
- audio_transcode_watcher-0.4.2/.github/dependabot.yml +64 -0
- audio_transcode_watcher-0.4.2/.github/workflows/release.yml +95 -0
- audio_transcode_watcher-0.4.2/.github/workflows/tests.yml +56 -0
- audio_transcode_watcher-0.4.2/.gitignore +47 -0
- audio_transcode_watcher-0.4.2/Dockerfile +22 -0
- audio_transcode_watcher-0.4.2/LICENSE +674 -0
- audio_transcode_watcher-0.4.2/PKG-INFO +305 -0
- audio_transcode_watcher-0.4.2/README.md +274 -0
- audio_transcode_watcher-0.4.2/SECURITY.md +36 -0
- audio_transcode_watcher-0.4.2/config.example.yaml +100 -0
- audio_transcode_watcher-0.4.2/docs/ROADMAP.md +108 -0
- audio_transcode_watcher-0.4.2/docs/images/banner.svg +97 -0
- audio_transcode_watcher-0.4.2/docs/images/icon.png +0 -0
- audio_transcode_watcher-0.4.2/docs/images/icon.svg +31 -0
- audio_transcode_watcher-0.4.2/pyproject.toml +65 -0
- audio_transcode_watcher-0.4.2/src/audio_transcode_watcher/__init__.py +3 -0
- audio_transcode_watcher-0.4.2/src/audio_transcode_watcher/config.py +190 -0
- audio_transcode_watcher-0.4.2/src/audio_transcode_watcher/encoder.py +208 -0
- audio_transcode_watcher-0.4.2/src/audio_transcode_watcher/lyrics.py +193 -0
- audio_transcode_watcher-0.4.2/src/audio_transcode_watcher/main.py +97 -0
- audio_transcode_watcher-0.4.2/src/audio_transcode_watcher/sync.py +471 -0
- audio_transcode_watcher-0.4.2/src/audio_transcode_watcher/utils.py +150 -0
- audio_transcode_watcher-0.4.2/src/audio_transcode_watcher/watcher.py +109 -0
- audio_transcode_watcher-0.4.2/tests/__init__.py +1 -0
- audio_transcode_watcher-0.4.2/tests/conftest.py +114 -0
- audio_transcode_watcher-0.4.2/tests/test_config.py +224 -0
- audio_transcode_watcher-0.4.2/tests/test_encoder.py +206 -0
- audio_transcode_watcher-0.4.2/tests/test_lyrics.py +163 -0
- audio_transcode_watcher-0.4.2/tests/test_sync.py +478 -0
- audio_transcode_watcher-0.4.2/tests/test_utils.py +244 -0
- audio_transcode_watcher-0.4.2/tools/verify_sync.py +638 -0
- audio_transcode_watcher-0.4.2/uv.lock +817 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: pip
|
|
4
|
+
directory: /
|
|
5
|
+
schedule:
|
|
6
|
+
interval: weekly
|
|
7
|
+
day: monday
|
|
8
|
+
open-pull-requests-limit: 10
|
|
9
|
+
commit-message:
|
|
10
|
+
prefix: deps
|
|
11
|
+
labels:
|
|
12
|
+
- dependencies
|
|
13
|
+
- automated
|
|
14
|
+
groups:
|
|
15
|
+
minor-and-patch:
|
|
16
|
+
patterns:
|
|
17
|
+
- '*'
|
|
18
|
+
update-types:
|
|
19
|
+
- minor
|
|
20
|
+
- patch
|
|
21
|
+
pip_security:
|
|
22
|
+
applies-to: security-updates
|
|
23
|
+
patterns:
|
|
24
|
+
- '*'
|
|
25
|
+
ignore:
|
|
26
|
+
- dependency-name: '*'
|
|
27
|
+
update-types:
|
|
28
|
+
- version-update:semver-major
|
|
29
|
+
- package-ecosystem: docker
|
|
30
|
+
directory: /
|
|
31
|
+
schedule:
|
|
32
|
+
interval: weekly
|
|
33
|
+
day: monday
|
|
34
|
+
commit-message:
|
|
35
|
+
prefix: docker
|
|
36
|
+
labels:
|
|
37
|
+
- docker
|
|
38
|
+
- automated
|
|
39
|
+
groups:
|
|
40
|
+
docker_security:
|
|
41
|
+
applies-to: security-updates
|
|
42
|
+
patterns:
|
|
43
|
+
- '*'
|
|
44
|
+
- package-ecosystem: github-actions
|
|
45
|
+
directory: /
|
|
46
|
+
schedule:
|
|
47
|
+
interval: monthly
|
|
48
|
+
commit-message:
|
|
49
|
+
prefix: ci
|
|
50
|
+
labels:
|
|
51
|
+
- ci
|
|
52
|
+
- automated
|
|
53
|
+
groups:
|
|
54
|
+
github-actions:
|
|
55
|
+
patterns:
|
|
56
|
+
- '*'
|
|
57
|
+
github_actions_security:
|
|
58
|
+
applies-to: security-updates
|
|
59
|
+
patterns:
|
|
60
|
+
- '*'
|
|
61
|
+
ignore:
|
|
62
|
+
- dependency-name: '*'
|
|
63
|
+
update-types:
|
|
64
|
+
- version-update:semver-major
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*.*.*'
|
|
7
|
+
|
|
8
|
+
env:
|
|
9
|
+
REGISTRY: docker.io
|
|
10
|
+
IMAGE_NAME: drumsergio/audio-transcoder
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
test:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Set up Python 3.14
|
|
19
|
+
uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: '3.14'
|
|
22
|
+
cache: 'pip'
|
|
23
|
+
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
run: |
|
|
26
|
+
python -m pip install --upgrade pip
|
|
27
|
+
pip install -e ".[dev]"
|
|
28
|
+
|
|
29
|
+
- name: Run tests
|
|
30
|
+
run: pytest
|
|
31
|
+
|
|
32
|
+
build-and-push:
|
|
33
|
+
needs: test
|
|
34
|
+
runs-on: ubuntu-latest
|
|
35
|
+
permissions:
|
|
36
|
+
contents: write
|
|
37
|
+
packages: write
|
|
38
|
+
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/checkout@v4
|
|
41
|
+
|
|
42
|
+
- name: Extract version from tag
|
|
43
|
+
id: version
|
|
44
|
+
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
|
|
45
|
+
|
|
46
|
+
- name: Set up QEMU
|
|
47
|
+
uses: docker/setup-qemu-action@v3
|
|
48
|
+
|
|
49
|
+
- name: Set up Docker Buildx
|
|
50
|
+
uses: docker/setup-buildx-action@v3
|
|
51
|
+
|
|
52
|
+
- name: Log into Docker Hub
|
|
53
|
+
uses: docker/login-action@v3
|
|
54
|
+
with:
|
|
55
|
+
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
56
|
+
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
57
|
+
|
|
58
|
+
- name: Extract Docker metadata
|
|
59
|
+
id: meta
|
|
60
|
+
uses: docker/metadata-action@v5
|
|
61
|
+
with:
|
|
62
|
+
images: ${{ env.IMAGE_NAME }}
|
|
63
|
+
tags: |
|
|
64
|
+
type=semver,pattern={{version}}
|
|
65
|
+
type=semver,pattern={{major}}.{{minor}}
|
|
66
|
+
type=semver,pattern={{major}}
|
|
67
|
+
type=raw,value=latest,enable={{is_default_branch}}
|
|
68
|
+
|
|
69
|
+
- name: Build and push Docker image
|
|
70
|
+
uses: docker/build-push-action@v6
|
|
71
|
+
with:
|
|
72
|
+
context: .
|
|
73
|
+
push: true
|
|
74
|
+
platforms: linux/amd64
|
|
75
|
+
tags: ${{ steps.meta.outputs.tags }}
|
|
76
|
+
labels: ${{ steps.meta.outputs.labels }}
|
|
77
|
+
cache-from: type=gha
|
|
78
|
+
cache-to: type=gha,mode=max
|
|
79
|
+
|
|
80
|
+
- name: Create GitHub Release
|
|
81
|
+
uses: softprops/action-gh-release@v2
|
|
82
|
+
with:
|
|
83
|
+
generate_release_notes: true
|
|
84
|
+
body: |
|
|
85
|
+
## Docker Image
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
docker pull ${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## What's Changed
|
|
92
|
+
|
|
93
|
+
See the automatically generated release notes below.
|
|
94
|
+
env:
|
|
95
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
|
|
15
|
+
- name: Set up Python 3.14
|
|
16
|
+
uses: actions/setup-python@v5
|
|
17
|
+
with:
|
|
18
|
+
python-version: '3.14'
|
|
19
|
+
cache: 'pip'
|
|
20
|
+
|
|
21
|
+
- name: Install dependencies
|
|
22
|
+
run: |
|
|
23
|
+
python -m pip install --upgrade pip
|
|
24
|
+
pip install -e ".[dev]"
|
|
25
|
+
|
|
26
|
+
- name: Run tests with coverage
|
|
27
|
+
run: |
|
|
28
|
+
pytest --cov --cov-report=xml --cov-report=term-missing
|
|
29
|
+
|
|
30
|
+
- name: Upload coverage to Codecov
|
|
31
|
+
uses: codecov/codecov-action@v4
|
|
32
|
+
with:
|
|
33
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
34
|
+
files: ./coverage.xml
|
|
35
|
+
fail_ci_if_error: false
|
|
36
|
+
|
|
37
|
+
lint:
|
|
38
|
+
runs-on: ubuntu-latest
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/checkout@v4
|
|
41
|
+
|
|
42
|
+
- name: Set up Python 3.14
|
|
43
|
+
uses: actions/setup-python@v5
|
|
44
|
+
with:
|
|
45
|
+
python-version: '3.14'
|
|
46
|
+
cache: 'pip'
|
|
47
|
+
|
|
48
|
+
- name: Install package
|
|
49
|
+
run: |
|
|
50
|
+
python -m pip install --upgrade pip
|
|
51
|
+
pip install -e .
|
|
52
|
+
|
|
53
|
+
- name: Check imports
|
|
54
|
+
run: |
|
|
55
|
+
python -c "from audio_transcode_watcher.main import main"
|
|
56
|
+
python -c "from audio_transcode_watcher.config import Config, load_config"
|
|
@@ -0,0 +1,47 @@
|
|
|
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
|
+
venv/
|
|
26
|
+
ENV/
|
|
27
|
+
|
|
28
|
+
# Testing
|
|
29
|
+
.coverage
|
|
30
|
+
.pytest_cache/
|
|
31
|
+
htmlcov/
|
|
32
|
+
.tox/
|
|
33
|
+
.nox/
|
|
34
|
+
|
|
35
|
+
# IDEs
|
|
36
|
+
.idea/
|
|
37
|
+
.vscode/
|
|
38
|
+
*.swp
|
|
39
|
+
*.swo
|
|
40
|
+
|
|
41
|
+
# OS
|
|
42
|
+
.DS_Store
|
|
43
|
+
Thumbs.db
|
|
44
|
+
|
|
45
|
+
# Local config (not the example)
|
|
46
|
+
config.yaml
|
|
47
|
+
!config.example.yaml
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
FROM python:3.14-slim
|
|
2
|
+
|
|
3
|
+
# Install FFmpeg for transcoding
|
|
4
|
+
RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg \
|
|
5
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
6
|
+
|
|
7
|
+
# Set working directory
|
|
8
|
+
WORKDIR /app
|
|
9
|
+
|
|
10
|
+
# Copy package files
|
|
11
|
+
COPY pyproject.toml README.md ./
|
|
12
|
+
COPY src/ ./src/
|
|
13
|
+
COPY tools/ ./tools/
|
|
14
|
+
|
|
15
|
+
# Install the package
|
|
16
|
+
RUN pip install --no-cache-dir .
|
|
17
|
+
|
|
18
|
+
# Environment
|
|
19
|
+
ENV PYTHONUNBUFFERED=1
|
|
20
|
+
|
|
21
|
+
# Default command
|
|
22
|
+
ENTRYPOINT ["python", "-m", "audio_transcode_watcher.main"]
|