A CLI tool for indexing video files with programmatic access
Project description
Zapdos-Py
A CLI tool for indexing video files by extracting keyframes that can also be used programmatically.
Installation
To install zapdos-py, you can use pip:
pip install zapdos-py
Or if you're using uv:
uv pip install zapdos-py
Usage
Command Line Interface
After installation, you can use the zapdos-py command:
ZAPDOS_API_KEY=your_api_key_here zapdos-py <video_file_path> [--interval <seconds>]
This command will index the specified video file by extracting keyframes at regular intervals.
You can also set your API key as an environment variable:
export ZAPDOS_API_KEY=your_api_key_here
zapdos-py <video_file_path> [--interval <seconds>]
Programmatic Usage
You can also use zapdos-py programmatically in your Python code using the client-based approach:
from zapdos import Client
# Create a client with your API key
client = Client(api_key="your_api_key_here")
# Index a video file
try:
result = client.index("path/to/your/video.mp4", interval_sec=30)
print(f"Indexed {len(result['items'])} frames")
except FileNotFoundError as e:
print(f"Error: {e}")
except ValueError as e:
print(f"Error: {e}")
With Progress Callback
You can also provide a callback function to receive progress updates during the indexing process:
from zapdos import Client
def progress_callback(event_data):
"""Callback function to handle progress updates."""
event_type = event_data.get("event")
if event_type == "uploaded":
print(f"Uploaded frame {event_data.get('file_id')}")
elif event_type == "done-indexing":
print("Indexing completed successfully!")
elif event_type == "error":
print(f"Error: {event_data.get('message')}")
# Create a client with your API key
client = Client(api_key="your_api_key_here")
# Index a video file with progress updates
try:
result = client.index(
"path/to/your/video.mp4",
interval_sec=30,
progress_callback=progress_callback
)
print(f"Indexed {len(result['items'])} frames")
except FileNotFoundError as e:
print(f"Error: {e}")
except ValueError as e:
print(f"Error: {e}")
Example
CLI Usage
# Extract frames every 30 seconds (default)
export ZAPDOS_API_KEY=your_api_key_here
zapdos-py ./video.mp4
# Extract frames every 10 seconds
export ZAPDOS_API_KEY=your_api_key_here
zapdos-py ./video.mp4 --interval 10
# Single command example (setting API key and running in one line)
ZAPDOS_API_KEY=your_api_key_here zapdos-py ./video.mp4 --interval 10
Programmatic Usage
from zapdos import Client
from pathlib import Path
# Create a client with your API key
client = Client(api_key="your_api_key_here")
# Index a video file
video_path = Path("video.mp4")
try:
result = client.index(video_path, interval_sec=30)
print(f"Indexed {len(result['items'])} frames")
for item in result['items']:
print(f" - {item}")
except FileNotFoundError as e:
print(f"Error: {e}")
except ValueError as e:
print(f"Error: {e}")
Supported Video Formats
Zapdos-Py supports the following video formats:
- MP4 (.mp4)
- AVI (.avi)
- MOV (.mov)
- MKV (.mkv)
- WMV (.wmv)
- FLV (.flv)
- WEBM (.webm)
- M4V (.m4v)
- 3GP (.3gp, .3g2)
- MPG/MPEG (.mpg, .mpeg, .m2v)
Development
To set up the project for development:
- Clone the repository
- Install uv if you haven't already:
pip install uv - Install the package in development mode:
uv pip install --editable .
- Run the CLI tool:
zapdos-py <video_file_path>
Testing
There are several ways to run the tests:
Using pytest (recommended):
pytest tests/
Using unittest directly:
python -m unittest tests.test_cli
Running the video indexer test:
python tests/test_video_indexer.py
License
This project is licensed under the MIT License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zapdos_py-0.2.5.tar.gz.
File metadata
- Download URL: zapdos_py-0.2.5.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a5bf5fbe29d816ca100afb157650ae299317e9da35b4d66702f42a9e1421094
|
|
| MD5 |
43774a0e4ce654105bb4be3a23129a98
|
|
| BLAKE2b-256 |
ceeed0e367d024bfd19fb12e704a93d85b01d21d610b2d48b4cb6927af3c5140
|
File details
Details for the file zapdos_py-0.2.5-py3-none-any.whl.
File metadata
- Download URL: zapdos_py-0.2.5-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a3f9923bc77cdc2c01083935446a8da72b340d95e528b65a205ccbaacb2c3d6
|
|
| MD5 |
656135211683762569a677f15fdb70ff
|
|
| BLAKE2b-256 |
d007d70926ed5de326edf7a07dde620ead1655110c345f02463817975185ce96
|