vidio-cli 0.1.0__tar.gz → 0.1.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.
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/CHANGELOG.md +8 -0
- vidio_cli-0.1.2/PKG-INFO +205 -0
- vidio_cli-0.1.2/README.md +176 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/pyproject.toml +2 -1
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/uv.lock +3 -1
- vidio_cli-0.1.0/PKG-INFO +0 -238
- vidio_cli-0.1.0/README.md +0 -210
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/.gitattributes +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/.github/workflows/ci.yml +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/.github/workflows/publish.yml +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/.gitignore +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/AGENTS.md +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/LICENSE +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/src/vidio_cli/__init__.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/src/vidio_cli/cli.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/src/vidio_cli/commands/__init__.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/src/vidio_cli/commands/concat.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/src/vidio_cli/commands/crop.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/src/vidio_cli/commands/grid.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/src/vidio_cli/commands/info.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/src/vidio_cli/commands/list.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/src/vidio_cli/commands/resize.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/src/vidio_cli/commands/to_gif.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/src/vidio_cli/commands/trim.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/src/vidio_cli/config.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/src/vidio_cli/ffmpeg_utils.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/tests/assets/sample.mp4 +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/tests/conftest.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/tests/test_cli.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/tests/test_concat.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/tests/test_crop.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/tests/test_grid.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/tests/test_info.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/tests/test_list.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/tests/test_resize.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/tests/test_to_gif.py +0 -0
- {vidio_cli-0.1.0 → vidio_cli-0.1.2}/tests/test_trim.py +0 -0
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## 0.1.2 - 2026-06-15
|
|
6
|
+
|
|
7
|
+
- Fixed packaged installs by declaring `click` as a direct runtime dependency.
|
|
8
|
+
|
|
9
|
+
## 0.1.1 - 2026-02-21
|
|
10
|
+
|
|
11
|
+
- Updated README with PyPI release workflow and trusted publishing setup.
|
|
12
|
+
|
|
5
13
|
## 0.1.0 - 2026-02-06
|
|
6
14
|
|
|
7
15
|
First public release of `vidio-cli`.
|
vidio_cli-0.1.2/PKG-INFO
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vidio-cli
|
|
3
|
+
Version: 0.1.2
|
|
4
|
+
Summary: A simple and easy-to-use ffmpeg wrapper for common video operations
|
|
5
|
+
Project-URL: Homepage, https://github.com/matanb/vidio-cli
|
|
6
|
+
Project-URL: Repository, https://github.com/matanb/vidio-cli
|
|
7
|
+
Project-URL: Issues, https://github.com/matanb/vidio-cli/issues
|
|
8
|
+
Author-email: Matan Ben-Yosef <matan.ben.yosef@gmail.com>
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: cli,ffmpeg,gif,media,video
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Topic :: Multimedia :: Video
|
|
23
|
+
Classifier: Topic :: Utilities
|
|
24
|
+
Requires-Python: >=3.10
|
|
25
|
+
Requires-Dist: click>=8.0.0
|
|
26
|
+
Requires-Dist: rich>=13.5.0
|
|
27
|
+
Requires-Dist: typer>=0.9.0
|
|
28
|
+
Description-Content-Type: text/markdown
|
|
29
|
+
|
|
30
|
+
# vidio
|
|
31
|
+
|
|
32
|
+
**Stop Googling ffmpeg flags.** Just tell `vidio` what you want.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
vidio trim long-meeting.mp4 highlight.mp4 --start 1:30 --duration 45
|
|
36
|
+
vidio resize raw-footage.mp4 web-ready.mp4 --width 1280
|
|
37
|
+
vidio to-gif funny-moment.mp4 reaction.gif --fps 15 --quality high
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`vidio` is a CLI tool that wraps ffmpeg with sane defaults so you can trim, resize, crop, concatenate, and convert videos without memorizing arcane flags every single time.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Install
|
|
45
|
+
|
|
46
|
+
Requires Python 3.10+ and [ffmpeg](https://ffmpeg.org/) in your PATH.
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Recommended — install as a standalone tool with uv
|
|
50
|
+
uv tool install vidio-cli
|
|
51
|
+
|
|
52
|
+
# Or run it directly without installing
|
|
53
|
+
uvx vidio-cli trim input.mp4 output.mp4 --start 10 --end 30
|
|
54
|
+
|
|
55
|
+
# Or if you prefer pip
|
|
56
|
+
pip install vidio-cli
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Once installed, the `vidio` command is available globally.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## What's in the box
|
|
64
|
+
|
|
65
|
+
| Command | What it does |
|
|
66
|
+
|---------|-------------|
|
|
67
|
+
| `vidio ls` | Find video files in a directory |
|
|
68
|
+
| `vidio info` | Inspect metadata, codecs, resolution |
|
|
69
|
+
| `vidio trim` | Cut a clip by time range |
|
|
70
|
+
| `vidio resize` | Scale to target dimensions or percentage |
|
|
71
|
+
| `vidio crop` | Crop to aspect ratios like 16:9, 9:16, square |
|
|
72
|
+
| `vidio concat` | Place videos side-by-side or stacked |
|
|
73
|
+
| `vidio grid` | Build multi-video grid layouts |
|
|
74
|
+
| `vidio to-gif` | Convert clips to GIF with palette optimization |
|
|
75
|
+
|
|
76
|
+
That's it. No bloat, no kitchen-sink features. Just the things you actually do with video files on a regular basis.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Usage
|
|
81
|
+
|
|
82
|
+
Every command has `--help`:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
vidio --help
|
|
86
|
+
vidio trim --help
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Trim
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Cut from 30s to 1:30
|
|
93
|
+
vidio trim input.mp4 clip.mp4 --start 30 --end 1:30
|
|
94
|
+
|
|
95
|
+
# Take 45 seconds starting at 1:30
|
|
96
|
+
vidio trim input.mp4 clip.mp4 --start 1:30 --duration 45
|
|
97
|
+
|
|
98
|
+
# Chop off everything after 2:15
|
|
99
|
+
vidio trim input.mp4 clip.mp4 --end 2:15
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Resize
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Scale to a specific width (height calculated automatically)
|
|
106
|
+
vidio resize input.mp4 output.mp4 --width 1280
|
|
107
|
+
|
|
108
|
+
# Scale to 50%
|
|
109
|
+
vidio resize input.mp4 output.mp4 --scale 0.5
|
|
110
|
+
|
|
111
|
+
# Force exact dimensions (may distort)
|
|
112
|
+
vidio resize input.mp4 output.mp4 -w 1920 -h 1080 --force-aspect
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Crop
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Square crop, centered (great for Instagram)
|
|
119
|
+
vidio crop input.mp4 output.mp4 --preset center-square
|
|
120
|
+
|
|
121
|
+
# Vertical video for Reels/TikTok
|
|
122
|
+
vidio crop input.mp4 output.mp4 --preset 9:16
|
|
123
|
+
|
|
124
|
+
# Widescreen
|
|
125
|
+
vidio crop input.mp4 output.mp4 --preset 16:9
|
|
126
|
+
|
|
127
|
+
# Manual crop with offset
|
|
128
|
+
vidio crop input.mp4 output.mp4 -w 1280 -h 720 --x 100 --y 50
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Concat
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# Side-by-side
|
|
135
|
+
vidio concat left.mp4 right.mp4 combined.mp4
|
|
136
|
+
|
|
137
|
+
# Stacked vertically
|
|
138
|
+
vidio concat top.mp4 bottom.mp4 combined.mp4 --vertical
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Grid
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# Auto-arranged grid
|
|
145
|
+
vidio grid a.mp4 b.mp4 c.mp4 d.mp4 mosaic.mp4
|
|
146
|
+
|
|
147
|
+
# Explicit 2x2 with padding
|
|
148
|
+
vidio grid a.mp4 b.mp4 c.mp4 d.mp4 mosaic.mp4 --rows 2 --cols 2 --padding 10
|
|
149
|
+
|
|
150
|
+
# Custom cell size
|
|
151
|
+
vidio grid a.mp4 b.mp4 c.mp4 d.mp4 mosaic.mp4 --width 640 --height 360
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Convert to GIF
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Good defaults out of the box
|
|
158
|
+
vidio to-gif clip.mp4 output.gif
|
|
159
|
+
|
|
160
|
+
# Optimized for small file size
|
|
161
|
+
vidio to-gif clip.mp4 output.gif --scale 0.3 --fps 8 --quality low
|
|
162
|
+
|
|
163
|
+
# Specific time range
|
|
164
|
+
vidio to-gif clip.mp4 output.gif --start 10 --duration 5
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### List & Info
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# Quick ls-style listing
|
|
171
|
+
vidio ls
|
|
172
|
+
|
|
173
|
+
# Detailed view with duration, resolution, codec
|
|
174
|
+
vidio ls --list
|
|
175
|
+
|
|
176
|
+
# Recursive search
|
|
177
|
+
vidio ls --recursive
|
|
178
|
+
|
|
179
|
+
# JSON output (handy for scripting)
|
|
180
|
+
vidio ls --json
|
|
181
|
+
|
|
182
|
+
# Full metadata for a single file
|
|
183
|
+
vidio info video.mp4
|
|
184
|
+
vidio info video.mp4 --json
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Development
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
git clone https://github.com/matanb/vidio-cli.git
|
|
193
|
+
cd vidio-cli
|
|
194
|
+
uv sync --group dev
|
|
195
|
+
|
|
196
|
+
# Run tests
|
|
197
|
+
uv run pytest -q
|
|
198
|
+
|
|
199
|
+
# Lint
|
|
200
|
+
uv run ruff check .
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## License
|
|
204
|
+
|
|
205
|
+
MIT
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# vidio
|
|
2
|
+
|
|
3
|
+
**Stop Googling ffmpeg flags.** Just tell `vidio` what you want.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
vidio trim long-meeting.mp4 highlight.mp4 --start 1:30 --duration 45
|
|
7
|
+
vidio resize raw-footage.mp4 web-ready.mp4 --width 1280
|
|
8
|
+
vidio to-gif funny-moment.mp4 reaction.gif --fps 15 --quality high
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
`vidio` is a CLI tool that wraps ffmpeg with sane defaults so you can trim, resize, crop, concatenate, and convert videos without memorizing arcane flags every single time.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Install
|
|
16
|
+
|
|
17
|
+
Requires Python 3.10+ and [ffmpeg](https://ffmpeg.org/) in your PATH.
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Recommended — install as a standalone tool with uv
|
|
21
|
+
uv tool install vidio-cli
|
|
22
|
+
|
|
23
|
+
# Or run it directly without installing
|
|
24
|
+
uvx vidio-cli trim input.mp4 output.mp4 --start 10 --end 30
|
|
25
|
+
|
|
26
|
+
# Or if you prefer pip
|
|
27
|
+
pip install vidio-cli
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Once installed, the `vidio` command is available globally.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## What's in the box
|
|
35
|
+
|
|
36
|
+
| Command | What it does |
|
|
37
|
+
|---------|-------------|
|
|
38
|
+
| `vidio ls` | Find video files in a directory |
|
|
39
|
+
| `vidio info` | Inspect metadata, codecs, resolution |
|
|
40
|
+
| `vidio trim` | Cut a clip by time range |
|
|
41
|
+
| `vidio resize` | Scale to target dimensions or percentage |
|
|
42
|
+
| `vidio crop` | Crop to aspect ratios like 16:9, 9:16, square |
|
|
43
|
+
| `vidio concat` | Place videos side-by-side or stacked |
|
|
44
|
+
| `vidio grid` | Build multi-video grid layouts |
|
|
45
|
+
| `vidio to-gif` | Convert clips to GIF with palette optimization |
|
|
46
|
+
|
|
47
|
+
That's it. No bloat, no kitchen-sink features. Just the things you actually do with video files on a regular basis.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Usage
|
|
52
|
+
|
|
53
|
+
Every command has `--help`:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
vidio --help
|
|
57
|
+
vidio trim --help
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Trim
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Cut from 30s to 1:30
|
|
64
|
+
vidio trim input.mp4 clip.mp4 --start 30 --end 1:30
|
|
65
|
+
|
|
66
|
+
# Take 45 seconds starting at 1:30
|
|
67
|
+
vidio trim input.mp4 clip.mp4 --start 1:30 --duration 45
|
|
68
|
+
|
|
69
|
+
# Chop off everything after 2:15
|
|
70
|
+
vidio trim input.mp4 clip.mp4 --end 2:15
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Resize
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Scale to a specific width (height calculated automatically)
|
|
77
|
+
vidio resize input.mp4 output.mp4 --width 1280
|
|
78
|
+
|
|
79
|
+
# Scale to 50%
|
|
80
|
+
vidio resize input.mp4 output.mp4 --scale 0.5
|
|
81
|
+
|
|
82
|
+
# Force exact dimensions (may distort)
|
|
83
|
+
vidio resize input.mp4 output.mp4 -w 1920 -h 1080 --force-aspect
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Crop
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# Square crop, centered (great for Instagram)
|
|
90
|
+
vidio crop input.mp4 output.mp4 --preset center-square
|
|
91
|
+
|
|
92
|
+
# Vertical video for Reels/TikTok
|
|
93
|
+
vidio crop input.mp4 output.mp4 --preset 9:16
|
|
94
|
+
|
|
95
|
+
# Widescreen
|
|
96
|
+
vidio crop input.mp4 output.mp4 --preset 16:9
|
|
97
|
+
|
|
98
|
+
# Manual crop with offset
|
|
99
|
+
vidio crop input.mp4 output.mp4 -w 1280 -h 720 --x 100 --y 50
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Concat
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Side-by-side
|
|
106
|
+
vidio concat left.mp4 right.mp4 combined.mp4
|
|
107
|
+
|
|
108
|
+
# Stacked vertically
|
|
109
|
+
vidio concat top.mp4 bottom.mp4 combined.mp4 --vertical
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Grid
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# Auto-arranged grid
|
|
116
|
+
vidio grid a.mp4 b.mp4 c.mp4 d.mp4 mosaic.mp4
|
|
117
|
+
|
|
118
|
+
# Explicit 2x2 with padding
|
|
119
|
+
vidio grid a.mp4 b.mp4 c.mp4 d.mp4 mosaic.mp4 --rows 2 --cols 2 --padding 10
|
|
120
|
+
|
|
121
|
+
# Custom cell size
|
|
122
|
+
vidio grid a.mp4 b.mp4 c.mp4 d.mp4 mosaic.mp4 --width 640 --height 360
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Convert to GIF
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# Good defaults out of the box
|
|
129
|
+
vidio to-gif clip.mp4 output.gif
|
|
130
|
+
|
|
131
|
+
# Optimized for small file size
|
|
132
|
+
vidio to-gif clip.mp4 output.gif --scale 0.3 --fps 8 --quality low
|
|
133
|
+
|
|
134
|
+
# Specific time range
|
|
135
|
+
vidio to-gif clip.mp4 output.gif --start 10 --duration 5
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### List & Info
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# Quick ls-style listing
|
|
142
|
+
vidio ls
|
|
143
|
+
|
|
144
|
+
# Detailed view with duration, resolution, codec
|
|
145
|
+
vidio ls --list
|
|
146
|
+
|
|
147
|
+
# Recursive search
|
|
148
|
+
vidio ls --recursive
|
|
149
|
+
|
|
150
|
+
# JSON output (handy for scripting)
|
|
151
|
+
vidio ls --json
|
|
152
|
+
|
|
153
|
+
# Full metadata for a single file
|
|
154
|
+
vidio info video.mp4
|
|
155
|
+
vidio info video.mp4 --json
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Development
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
git clone https://github.com/matanb/vidio-cli.git
|
|
164
|
+
cd vidio-cli
|
|
165
|
+
uv sync --group dev
|
|
166
|
+
|
|
167
|
+
# Run tests
|
|
168
|
+
uv run pytest -q
|
|
169
|
+
|
|
170
|
+
# Lint
|
|
171
|
+
uv run ruff check .
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## License
|
|
175
|
+
|
|
176
|
+
MIT
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "vidio-cli"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.2"
|
|
4
4
|
description = "A simple and easy-to-use ffmpeg wrapper for common video operations"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
@@ -24,6 +24,7 @@ classifiers = [
|
|
|
24
24
|
"Topic :: Utilities",
|
|
25
25
|
]
|
|
26
26
|
dependencies = [
|
|
27
|
+
"click>=8.0.0",
|
|
27
28
|
"typer>=0.9.0",
|
|
28
29
|
"rich>=13.5.0",
|
|
29
30
|
]
|
|
@@ -336,9 +336,10 @@ wheels = [
|
|
|
336
336
|
|
|
337
337
|
[[package]]
|
|
338
338
|
name = "vidio-cli"
|
|
339
|
-
version = "0.1.
|
|
339
|
+
version = "0.1.2"
|
|
340
340
|
source = { editable = "." }
|
|
341
341
|
dependencies = [
|
|
342
|
+
{ name = "click" },
|
|
342
343
|
{ name = "rich" },
|
|
343
344
|
{ name = "typer" },
|
|
344
345
|
]
|
|
@@ -352,6 +353,7 @@ dev = [
|
|
|
352
353
|
|
|
353
354
|
[package.metadata]
|
|
354
355
|
requires-dist = [
|
|
356
|
+
{ name = "click", specifier = ">=8.0.0" },
|
|
355
357
|
{ name = "rich", specifier = ">=13.5.0" },
|
|
356
358
|
{ name = "typer", specifier = ">=0.9.0" },
|
|
357
359
|
]
|
vidio_cli-0.1.0/PKG-INFO
DELETED
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: vidio-cli
|
|
3
|
-
Version: 0.1.0
|
|
4
|
-
Summary: A simple and easy-to-use ffmpeg wrapper for common video operations
|
|
5
|
-
Project-URL: Homepage, https://github.com/matanb/vidio-cli
|
|
6
|
-
Project-URL: Repository, https://github.com/matanb/vidio-cli
|
|
7
|
-
Project-URL: Issues, https://github.com/matanb/vidio-cli/issues
|
|
8
|
-
Author-email: Matan Ben-Yosef <matan.ben.yosef@gmail.com>
|
|
9
|
-
License-Expression: MIT
|
|
10
|
-
License-File: LICENSE
|
|
11
|
-
Keywords: cli,ffmpeg,gif,media,video
|
|
12
|
-
Classifier: Development Status :: 3 - Alpha
|
|
13
|
-
Classifier: Environment :: Console
|
|
14
|
-
Classifier: Intended Audience :: Developers
|
|
15
|
-
Classifier: Intended Audience :: End Users/Desktop
|
|
16
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
-
Classifier: Operating System :: OS Independent
|
|
18
|
-
Classifier: Programming Language :: Python :: 3
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
-
Classifier: Topic :: Multimedia :: Video
|
|
23
|
-
Classifier: Topic :: Utilities
|
|
24
|
-
Requires-Python: >=3.10
|
|
25
|
-
Requires-Dist: rich>=13.5.0
|
|
26
|
-
Requires-Dist: typer>=0.9.0
|
|
27
|
-
Description-Content-Type: text/markdown
|
|
28
|
-
|
|
29
|
-
# vidio-cli
|
|
30
|
-
|
|
31
|
-
A simple and easy-to-use ffmpeg wrapper for common video operations.
|
|
32
|
-
|
|
33
|
-
## Features
|
|
34
|
-
|
|
35
|
-
- **Stupidly Easy:** Simple CLI commands for common video operations.
|
|
36
|
-
- **Powerful Defaults:** Sensible defaults make it work great out of the box.
|
|
37
|
-
- **Focused v1 Scope:** Core commands people use repeatedly, without feature bloat.
|
|
38
|
-
|
|
39
|
-
## Requirements
|
|
40
|
-
|
|
41
|
-
- Python 3.10+
|
|
42
|
-
- ffmpeg (must be installed and in your PATH)
|
|
43
|
-
|
|
44
|
-
## v1 Command Scope
|
|
45
|
-
|
|
46
|
-
`vidio-cli` 0.1.0 intentionally focuses on practical, high-frequency tasks:
|
|
47
|
-
|
|
48
|
-
- `list` / `ls`: find video files quickly
|
|
49
|
-
- `info`: inspect metadata and streams
|
|
50
|
-
- `trim`: cut clips by time range
|
|
51
|
-
- `resize`: scale for delivery targets
|
|
52
|
-
- `crop`: convert to target aspect ratios
|
|
53
|
-
- `concat`: place videos side-by-side or stacked
|
|
54
|
-
- `grid`: build multi-video collages
|
|
55
|
-
- `to-gif`: convert clips to GIF with good defaults
|
|
56
|
-
|
|
57
|
-
Commands that are less consistently useful (for example, niche one-off transforms) are deferred to later releases.
|
|
58
|
-
|
|
59
|
-
## Installation
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
# Using pip
|
|
63
|
-
pip install vidio-cli
|
|
64
|
-
|
|
65
|
-
# Using uv
|
|
66
|
-
uv pip install vidio-cli
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Usage
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
# Get help
|
|
73
|
-
vidio --help
|
|
74
|
-
|
|
75
|
-
# Get help for a specific command
|
|
76
|
-
vidio concat --help
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### Concatenate Videos
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
# Concatenate videos horizontally
|
|
83
|
-
vidio concat video1.mp4 video2.mp4 output.mp4
|
|
84
|
-
|
|
85
|
-
# Concatenate videos vertically
|
|
86
|
-
vidio concat video1.mp4 video2.mp4 output.mp4 --vertical
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### List Video Files
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
# List videos in current directory (ls-style output)
|
|
93
|
-
vidio list
|
|
94
|
-
# or use the shorter alias
|
|
95
|
-
vidio ls
|
|
96
|
-
|
|
97
|
-
# List with detailed information (duration, resolution, codec)
|
|
98
|
-
vidio ls --list
|
|
99
|
-
|
|
100
|
-
# Search recursively in subdirectories
|
|
101
|
-
vidio ls --recursive
|
|
102
|
-
|
|
103
|
-
# Use table format instead of ls-style
|
|
104
|
-
vidio ls --table
|
|
105
|
-
|
|
106
|
-
# Get JSON output for scripting
|
|
107
|
-
vidio ls --json
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
### Video Information
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
# Display detailed metadata about a video file
|
|
114
|
-
vidio info video.mp4
|
|
115
|
-
|
|
116
|
-
# Get machine-readable JSON output
|
|
117
|
-
vidio info video.mp4 --json
|
|
118
|
-
|
|
119
|
-
# Calculate exact frame count (slower but accurate)
|
|
120
|
-
vidio info video.mp4 --exact-frames
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Create Video Grids
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
# Arrange videos in a 2x2 grid (auto-calculated)
|
|
127
|
-
vidio grid video1.mp4 video2.mp4 video3.mp4 video4.mp4 output.mp4
|
|
128
|
-
|
|
129
|
-
# Specify grid dimensions
|
|
130
|
-
vidio grid video1.mp4 video2.mp4 video3.mp4 video4.mp4 output.mp4 --rows 2 --cols 2
|
|
131
|
-
|
|
132
|
-
# Control cell size and add padding
|
|
133
|
-
vidio grid video1.mp4 video2.mp4 video3.mp4 video4.mp4 output.mp4 --width 640 --height 360 --padding 10
|
|
134
|
-
|
|
135
|
-
# Change background color
|
|
136
|
-
vidio grid video1.mp4 video2.mp4 video3.mp4 video4.mp4 output.mp4 --background white
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### Trim Videos
|
|
140
|
-
|
|
141
|
-
```bash
|
|
142
|
-
# Trim from 30 seconds to 90 seconds
|
|
143
|
-
vidio trim input.mp4 output.mp4 --start 30 --end 90
|
|
144
|
-
|
|
145
|
-
# Trim from 1:30 for 45 seconds duration
|
|
146
|
-
vidio trim input.mp4 output.mp4 --start 1:30 --duration 45
|
|
147
|
-
|
|
148
|
-
# Trim from beginning to 2:15
|
|
149
|
-
vidio trim input.mp4 output.mp4 --end 2:15
|
|
150
|
-
|
|
151
|
-
# Trim using different time formats
|
|
152
|
-
vidio trim input.mp4 output.mp4 --start 0:01:30 --end 0:02:45
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### Resize Videos
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
# Resize to specific dimensions (maintains aspect ratio)
|
|
159
|
-
vidio resize input.mp4 output.mp4 --width 1920 --height 1080
|
|
160
|
-
|
|
161
|
-
# Scale by percentage
|
|
162
|
-
vidio resize input.mp4 output.mp4 --scale 0.5 # 50% of original size
|
|
163
|
-
|
|
164
|
-
# Resize width only (height auto-calculated)
|
|
165
|
-
vidio resize input.mp4 output.mp4 --width 1280
|
|
166
|
-
|
|
167
|
-
# Resize height only (width auto-calculated)
|
|
168
|
-
vidio resize input.mp4 output.mp4 --height 720
|
|
169
|
-
|
|
170
|
-
# Force exact dimensions (may distort)
|
|
171
|
-
vidio resize input.mp4 output.mp4 -w 1920 -h 1080 --force-aspect
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
### Convert to GIF
|
|
175
|
-
|
|
176
|
-
```bash
|
|
177
|
-
# Basic conversion with optimized palette
|
|
178
|
-
vidio to-gif video.mp4 output.gif
|
|
179
|
-
|
|
180
|
-
# High quality with custom frame rate
|
|
181
|
-
vidio to-gif video.mp4 output.gif --fps 15 --quality high
|
|
182
|
-
|
|
183
|
-
# Small file size for web
|
|
184
|
-
vidio to-gif video.mp4 output.gif --scale 0.3 --fps 8 --quality low
|
|
185
|
-
|
|
186
|
-
# Convert specific time range
|
|
187
|
-
vidio to-gif video.mp4 output.gif --start 10 --duration 5
|
|
188
|
-
|
|
189
|
-
# Custom width with different dithering
|
|
190
|
-
vidio to-gif video.mp4 output.gif --width 800 --dither bayer
|
|
191
|
-
|
|
192
|
-
# Fast conversion (skip optimization)
|
|
193
|
-
vidio to-gif video.mp4 output.gif --no-optimize
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
### Crop Videos
|
|
197
|
-
|
|
198
|
-
```bash
|
|
199
|
-
# Crop to center square (perfect for Instagram)
|
|
200
|
-
vidio crop input.mp4 output.mp4 --preset center-square
|
|
201
|
-
|
|
202
|
-
# Crop to 16:9 aspect ratio
|
|
203
|
-
vidio crop input.mp4 output.mp4 --preset 16:9
|
|
204
|
-
|
|
205
|
-
# Crop to 9:16 aspect ratio (vertical/portrait)
|
|
206
|
-
vidio crop input.mp4 output.mp4 --preset 9:16
|
|
207
|
-
|
|
208
|
-
# Crop to 4:3 aspect ratio
|
|
209
|
-
vidio crop input.mp4 output.mp4 --preset 4:3
|
|
210
|
-
|
|
211
|
-
# Custom crop region (centered)
|
|
212
|
-
vidio crop input.mp4 output.mp4 --width 1280 --height 720
|
|
213
|
-
|
|
214
|
-
# Custom crop with specific position
|
|
215
|
-
vidio crop input.mp4 output.mp4 -w 1280 -h 720 --x 100 --y 50
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
## Development
|
|
220
|
-
|
|
221
|
-
```bash
|
|
222
|
-
# Clone the repo
|
|
223
|
-
git clone https://github.com/matanb/vidio-cli.git
|
|
224
|
-
cd vidio-cli
|
|
225
|
-
|
|
226
|
-
# Install dependencies
|
|
227
|
-
uv sync --group dev
|
|
228
|
-
|
|
229
|
-
# Run tests
|
|
230
|
-
uv run pytest -q
|
|
231
|
-
|
|
232
|
-
# Run lint
|
|
233
|
-
uv run ruff check .
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
## License
|
|
237
|
-
|
|
238
|
-
MIT
|
vidio_cli-0.1.0/README.md
DELETED
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
# vidio-cli
|
|
2
|
-
|
|
3
|
-
A simple and easy-to-use ffmpeg wrapper for common video operations.
|
|
4
|
-
|
|
5
|
-
## Features
|
|
6
|
-
|
|
7
|
-
- **Stupidly Easy:** Simple CLI commands for common video operations.
|
|
8
|
-
- **Powerful Defaults:** Sensible defaults make it work great out of the box.
|
|
9
|
-
- **Focused v1 Scope:** Core commands people use repeatedly, without feature bloat.
|
|
10
|
-
|
|
11
|
-
## Requirements
|
|
12
|
-
|
|
13
|
-
- Python 3.10+
|
|
14
|
-
- ffmpeg (must be installed and in your PATH)
|
|
15
|
-
|
|
16
|
-
## v1 Command Scope
|
|
17
|
-
|
|
18
|
-
`vidio-cli` 0.1.0 intentionally focuses on practical, high-frequency tasks:
|
|
19
|
-
|
|
20
|
-
- `list` / `ls`: find video files quickly
|
|
21
|
-
- `info`: inspect metadata and streams
|
|
22
|
-
- `trim`: cut clips by time range
|
|
23
|
-
- `resize`: scale for delivery targets
|
|
24
|
-
- `crop`: convert to target aspect ratios
|
|
25
|
-
- `concat`: place videos side-by-side or stacked
|
|
26
|
-
- `grid`: build multi-video collages
|
|
27
|
-
- `to-gif`: convert clips to GIF with good defaults
|
|
28
|
-
|
|
29
|
-
Commands that are less consistently useful (for example, niche one-off transforms) are deferred to later releases.
|
|
30
|
-
|
|
31
|
-
## Installation
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
# Using pip
|
|
35
|
-
pip install vidio-cli
|
|
36
|
-
|
|
37
|
-
# Using uv
|
|
38
|
-
uv pip install vidio-cli
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Usage
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
# Get help
|
|
45
|
-
vidio --help
|
|
46
|
-
|
|
47
|
-
# Get help for a specific command
|
|
48
|
-
vidio concat --help
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### Concatenate Videos
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
# Concatenate videos horizontally
|
|
55
|
-
vidio concat video1.mp4 video2.mp4 output.mp4
|
|
56
|
-
|
|
57
|
-
# Concatenate videos vertically
|
|
58
|
-
vidio concat video1.mp4 video2.mp4 output.mp4 --vertical
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### List Video Files
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
# List videos in current directory (ls-style output)
|
|
65
|
-
vidio list
|
|
66
|
-
# or use the shorter alias
|
|
67
|
-
vidio ls
|
|
68
|
-
|
|
69
|
-
# List with detailed information (duration, resolution, codec)
|
|
70
|
-
vidio ls --list
|
|
71
|
-
|
|
72
|
-
# Search recursively in subdirectories
|
|
73
|
-
vidio ls --recursive
|
|
74
|
-
|
|
75
|
-
# Use table format instead of ls-style
|
|
76
|
-
vidio ls --table
|
|
77
|
-
|
|
78
|
-
# Get JSON output for scripting
|
|
79
|
-
vidio ls --json
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Video Information
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
# Display detailed metadata about a video file
|
|
86
|
-
vidio info video.mp4
|
|
87
|
-
|
|
88
|
-
# Get machine-readable JSON output
|
|
89
|
-
vidio info video.mp4 --json
|
|
90
|
-
|
|
91
|
-
# Calculate exact frame count (slower but accurate)
|
|
92
|
-
vidio info video.mp4 --exact-frames
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Create Video Grids
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
# Arrange videos in a 2x2 grid (auto-calculated)
|
|
99
|
-
vidio grid video1.mp4 video2.mp4 video3.mp4 video4.mp4 output.mp4
|
|
100
|
-
|
|
101
|
-
# Specify grid dimensions
|
|
102
|
-
vidio grid video1.mp4 video2.mp4 video3.mp4 video4.mp4 output.mp4 --rows 2 --cols 2
|
|
103
|
-
|
|
104
|
-
# Control cell size and add padding
|
|
105
|
-
vidio grid video1.mp4 video2.mp4 video3.mp4 video4.mp4 output.mp4 --width 640 --height 360 --padding 10
|
|
106
|
-
|
|
107
|
-
# Change background color
|
|
108
|
-
vidio grid video1.mp4 video2.mp4 video3.mp4 video4.mp4 output.mp4 --background white
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### Trim Videos
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
# Trim from 30 seconds to 90 seconds
|
|
115
|
-
vidio trim input.mp4 output.mp4 --start 30 --end 90
|
|
116
|
-
|
|
117
|
-
# Trim from 1:30 for 45 seconds duration
|
|
118
|
-
vidio trim input.mp4 output.mp4 --start 1:30 --duration 45
|
|
119
|
-
|
|
120
|
-
# Trim from beginning to 2:15
|
|
121
|
-
vidio trim input.mp4 output.mp4 --end 2:15
|
|
122
|
-
|
|
123
|
-
# Trim using different time formats
|
|
124
|
-
vidio trim input.mp4 output.mp4 --start 0:01:30 --end 0:02:45
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Resize Videos
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
# Resize to specific dimensions (maintains aspect ratio)
|
|
131
|
-
vidio resize input.mp4 output.mp4 --width 1920 --height 1080
|
|
132
|
-
|
|
133
|
-
# Scale by percentage
|
|
134
|
-
vidio resize input.mp4 output.mp4 --scale 0.5 # 50% of original size
|
|
135
|
-
|
|
136
|
-
# Resize width only (height auto-calculated)
|
|
137
|
-
vidio resize input.mp4 output.mp4 --width 1280
|
|
138
|
-
|
|
139
|
-
# Resize height only (width auto-calculated)
|
|
140
|
-
vidio resize input.mp4 output.mp4 --height 720
|
|
141
|
-
|
|
142
|
-
# Force exact dimensions (may distort)
|
|
143
|
-
vidio resize input.mp4 output.mp4 -w 1920 -h 1080 --force-aspect
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
### Convert to GIF
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
# Basic conversion with optimized palette
|
|
150
|
-
vidio to-gif video.mp4 output.gif
|
|
151
|
-
|
|
152
|
-
# High quality with custom frame rate
|
|
153
|
-
vidio to-gif video.mp4 output.gif --fps 15 --quality high
|
|
154
|
-
|
|
155
|
-
# Small file size for web
|
|
156
|
-
vidio to-gif video.mp4 output.gif --scale 0.3 --fps 8 --quality low
|
|
157
|
-
|
|
158
|
-
# Convert specific time range
|
|
159
|
-
vidio to-gif video.mp4 output.gif --start 10 --duration 5
|
|
160
|
-
|
|
161
|
-
# Custom width with different dithering
|
|
162
|
-
vidio to-gif video.mp4 output.gif --width 800 --dither bayer
|
|
163
|
-
|
|
164
|
-
# Fast conversion (skip optimization)
|
|
165
|
-
vidio to-gif video.mp4 output.gif --no-optimize
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
### Crop Videos
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
# Crop to center square (perfect for Instagram)
|
|
172
|
-
vidio crop input.mp4 output.mp4 --preset center-square
|
|
173
|
-
|
|
174
|
-
# Crop to 16:9 aspect ratio
|
|
175
|
-
vidio crop input.mp4 output.mp4 --preset 16:9
|
|
176
|
-
|
|
177
|
-
# Crop to 9:16 aspect ratio (vertical/portrait)
|
|
178
|
-
vidio crop input.mp4 output.mp4 --preset 9:16
|
|
179
|
-
|
|
180
|
-
# Crop to 4:3 aspect ratio
|
|
181
|
-
vidio crop input.mp4 output.mp4 --preset 4:3
|
|
182
|
-
|
|
183
|
-
# Custom crop region (centered)
|
|
184
|
-
vidio crop input.mp4 output.mp4 --width 1280 --height 720
|
|
185
|
-
|
|
186
|
-
# Custom crop with specific position
|
|
187
|
-
vidio crop input.mp4 output.mp4 -w 1280 -h 720 --x 100 --y 50
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
## Development
|
|
192
|
-
|
|
193
|
-
```bash
|
|
194
|
-
# Clone the repo
|
|
195
|
-
git clone https://github.com/matanb/vidio-cli.git
|
|
196
|
-
cd vidio-cli
|
|
197
|
-
|
|
198
|
-
# Install dependencies
|
|
199
|
-
uv sync --group dev
|
|
200
|
-
|
|
201
|
-
# Run tests
|
|
202
|
-
uv run pytest -q
|
|
203
|
-
|
|
204
|
-
# Run lint
|
|
205
|
-
uv run ruff check .
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
## License
|
|
209
|
-
|
|
210
|
-
MIT
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|