Skip to main content

Official Python client library for AutoSubtitle.net API

Project description

AutoSubtitle Python Client

Official Python client library for AutoSubtitle.net API - Automatically generate subtitles for videos.

Installation

pip install autosubtitle-api

Note: The package name on PyPI is autosubtitle-api, but you import it as autosubtitle:

from autosubtitle import AutoSubtitleClient

Quick Start

from autosubtitle import AutoSubtitleClient

# Initialize the client
client = AutoSubtitleClient(api_key="your-api-key")

# Create a subtitle job from video URL
response = client.create_subtitle(
    video_url="https://example.com/video.mp4",
    language="en",
    font_name="Montserrat",
    font_size=100,
    position="bottom"
)

transaction_id = response["transaction"]["id"]
print(f"Transaction created: {transaction_id}")

# Wait for the transaction to complete
transaction = client.wait_for_transaction(transaction_id)
print(f"Status: {transaction['status']}")

Features

  • ✅ Create subtitles from video URL or file
  • ✅ Get transaction history
  • ✅ Get specific transaction by ID
  • ✅ Get billing summary and usage
  • ✅ Wait for transaction completion with polling
  • ✅ Full type hints support
  • ✅ Comprehensive error handling

API Reference

AutoSubtitleClient

Constructor

client = AutoSubtitleClient(
    api_key: str,
    base_url: str = "https://api.autosubtitle.net"
)

Methods

create_subtitle()

Create a subtitle generation job.

response = client.create_subtitle(
    video_url: Optional[str] = None,
    video_file: Optional[Union[BinaryIO, bytes]] = None,
    language: Optional[str] = None,
    font_name: Optional[str] = None,
    font_size: Optional[int] = None,
    font_weight: Optional[str] = None,  # 'normal', 'bold', 'light'
    font_color: Optional[str] = None,  # Hex code
    highlight_color: Optional[str] = None,  # Hex code
    stroke_width: Optional[int] = None,
    stroke_color: Optional[str] = None,  # Hex code
    background_color: Optional[str] = None,  # Hex code
    background_opacity: Optional[float] = None,  # 0.0-1.0
    position: Optional[str] = None,  # 'top', 'center', 'bottom'
    y_offset: Optional[int] = None,
    words_per_subtitle: Optional[int] = None,
    enable_animation: Optional[bool] = None
)

Returns: Dict[str, Any] with transaction details

Example:

# From URL
response = client.create_subtitle(
    video_url="https://example.com/video.mp4",
    language="en",
    font_name="Montserrat"
)

# From file
with open("video.mp4", "rb") as f:
    response = client.create_subtitle(
        video_file=f,
        language="tr",
        font_size=120
    )
get_transactions()

Get all subtitle transactions.

response = client.get_transactions()

Returns: Dict[str, Any] with list of transactions

get_transaction(transaction_id: str)

Get a specific transaction by ID.

response = client.get_transaction("transaction-id")

Returns: Dict[str, Any] with transaction details

get_billing_summary()

Get billing summary and usage information.

summary = client.get_billing_summary()

Returns: Dict[str, Any] with billing information

wait_for_transaction()

Wait for a transaction to complete.

transaction = client.wait_for_transaction(
    transaction_id: str,
    interval: int = 2000,  # milliseconds
    timeout: int = 300000,  # milliseconds (5 minutes)
    on_progress: Optional[Callable[[Dict[str, Any]], None]] = None
)

Returns: Dict[str, Any] with completed transaction

Example:

def on_progress(transaction):
    print(f"Status: {transaction['status']}")

transaction = client.wait_for_transaction(
    transaction_id,
    interval=2000,
    timeout=60000,
    on_progress=on_progress
)

Error Handling

The client raises AutoSubtitleError for API errors:

from autosubtitle import AutoSubtitleClient, AutoSubtitleError

try:
    response = client.create_subtitle(video_url="invalid-url")
except AutoSubtitleError as e:
    print(f"Error: {e.message}")
    print(f"Status: {e.status}")
    print(f"Code: {e.code}")

Examples

Complete Workflow

from autosubtitle import AutoSubtitleClient

client = AutoSubtitleClient(api_key="your-api-key")

# Create subtitle job
response = client.create_subtitle(
    video_url="https://example.com/video.mp4",
    language="en",
    font_name="Montserrat",
    font_size=100,
    position="bottom",
    font_color="#FFFFFF",
    highlight_color="#800080"
)

transaction_id = response["transaction"]["id"]

# Wait for completion
def on_progress(transaction):
    print(f"Processing... Status: {transaction['status']}")

transaction = client.wait_for_transaction(
    transaction_id,
    on_progress=on_progress
)

if transaction["status"] == "completed":
    print(f"Result video: {transaction['result_video_url']}")
    print(f"Transcription: {transaction['transcription']}")

Get Transaction History

response = client.get_transactions()

for transaction in response["projects"]:
    print(f"ID: {transaction['id']}")
    print(f"Status: {transaction['status']}")
    print(f"Created: {transaction['created_at']}")
    print("---")

Get Billing Information

summary = client.get_billing_summary()

print(f"Plan: {summary['plan']['name']}")
print(f"Usage: {summary['usage']['used']}/{summary['usage']['limit']}")
print(f"Reset Date: {summary['usage']['resetDate']}")

Testing

Unit Tests (with mocking)

python -m pytest tests/test_client.py

Integration Tests (with real API)

export AUTOSUBTITLE_API_KEY="your-api-key"
python -m pytest tests/test_integration.py

Requirements

  • Python 3.8+
  • requests >= 2.28.0

License

MIT

Support

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

autosubtitle_api-1.0.1.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

autosubtitle_api-1.0.1-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file autosubtitle_api-1.0.1.tar.gz.

File metadata

  • Download URL: autosubtitle_api-1.0.1.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for autosubtitle_api-1.0.1.tar.gz
Algorithm Hash digest
SHA256 cd70e2a54f2757620761da91dade95caaba2dbfea31b84a196ca213e2afae01f
MD5 ca1b030ba777faadc148aebfa5739ca5
BLAKE2b-256 b2ae109ab7922b240d0acfb0c313ed20f65225e6ec160e62d10c02c18127a59e

See more details on using hashes here.

File details

Details for the file autosubtitle_api-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for autosubtitle_api-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f12e3b4f6955b1086b2408f3ebd10cf356fef92f12e9dd27dce9242362d8fdbf
MD5 663003b5462174020e8f6bdedfef2dfc
BLAKE2b-256 287e5cd99da93f4446a4103fb60c077bb8fe71fe193938bd09bb9bd1b853adf0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page