audiopod


Nameaudiopod JSON
Version 1.2.0 PyPI version JSON
download
home_pagehttps://github.com/audiopod-ai/audiopod-python
SummaryProfessional Audio Processing API Client for Python
upload_time2025-08-16 09:14:01
maintainerNone
docs_urlNone
authorAudioPod AI
requires_python>=3.8
licenseNone
keywords audio processing ai voice cloning transcription translation music generation denoising api sdk
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # AudioPod Python SDK

The official Python SDK for the AudioPod API - Professional Audio Processing powered by AI.

[![PyPI version](https://badge.fury.io/py/audiopod.svg)](https://badge.fury.io/py/audiopod)
[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## Features

- 🎵 **Music Generation** - Create music from text prompts, lyrics, or audio samples
- 🎤 **Voice Cloning** - Clone voices from audio samples and generate speech
- 📝 **Transcription** - Convert speech to text with speaker diarization
- 🌍 **Translation** - Translate audio and video content between languages
- 🎬 **Karaoke Generation** - Create karaoke videos with synchronized lyrics
- 🔊 **Audio Enhancement** - Denoise and improve audio quality
- 👥 **Speaker Analysis** - Identify and separate speakers in audio
- 💰 **Credit Management** - Track usage and manage API credits

## Installation

```bash
pip install audiopod
```

## Quick Start

### Authentication

Get your API key from the [AudioPod Dashboard](https://app.audiopod.ai/dashboard) and set it as an environment variable:

```bash
export AUDIOPOD_API_KEY="ap_your_api_key_here"
```

Or pass it directly to the client:

```python
import audiopod

client = audiopod.Client(api_key="ap_your_api_key_here")
```

### Basic Usage

#### Voice Generation (Unified TTS & Cloning)

```python
import audiopod

# Initialize client
client = audiopod.Client()

# Generate voice using file cloning (unified approach)
job = client.voice.generate_voice(
    text="Hello! This is voice generation using a cloned voice.",
    voice_file="path/to/voice_sample.wav",  # For voice cloning
    language="en",
    audio_format="mp3",
    generation_params={
        "speed": 1.0
    },
    wait_for_completion=True
)

print(f"Generated audio URL: {job.output_url}")

# Generate speech with existing voice profile (unified approach)
speech = client.voice.generate_voice(
    text="Hello from my voice profile!",
    voice_id="voice-profile-id",  # For existing voice profiles
    language="en",
    audio_format="mp3",
    generation_params={
        "speed": 1.0
    },
    wait_for_completion=True
)

# Backward compatibility methods (deprecated - use generate_voice instead)
legacy_clone = client.voice.clone_voice(
    voice_file="path/to/voice_sample.wav",
    text="Hello! This is a cloned voice speaking.",
    language="en",
    wait_for_completion=True
)
```

#### Music Generation

```python
# Generate music from text
music_job = client.music.generate_music(
    prompt="upbeat electronic dance music with heavy bass",
    duration=120.0,  # 2 minutes
    wait_for_completion=True
)

print(f"Generated music URL: {music_job.output_url}")
```

#### Audio Transcription

```python
# Transcribe audio with speaker diarization
transcript = client.transcription.transcribe_audio(
    audio_file="path/to/audio.mp3",
    language="en",
    enable_speaker_diarization=True,
    wait_for_completion=True
)

print(f"Transcript: {transcript.transcript}")
print(f"Detected {len(transcript.segments)} speakers")
```

#### Speech-to-Speech Translation

```python
# Translate speech while preserving voice characteristics
translation = client.translation.translate_speech(
    audio_file="path/to/english_audio.wav",
    target_language="es",  # Spanish
    source_language="en",  # English (optional - auto-detect)
    wait_for_completion=True
)

print(f"Translated audio URL: {translation.translated_audio_url}")

# Or translate from URL
url_translation = client.translation.translate_speech(
    url="https://example.com/audio.mp3",
    target_language="fr",  # French
    wait_for_completion=True
)
```

### Async Support

The SDK supports async/await for better performance:

```python
import asyncio
import audiopod

async def main():
    async with audiopod.AsyncClient() as client:
        # All the same methods are available with async support
        job = await client.voice.clone_voice(
            voice_file="voice.wav",
            text="Async voice cloning!",
            wait_for_completion=True
        )
        print(f"Async result: {job['output_url']}")

asyncio.run(main())
```

### Advanced Examples

#### Create Voice Profile for Reuse

```python
# Create a reusable voice profile
voice_profile = client.voice.create_voice_profile(
    name="My Custom Voice",
    voice_file="voice_sample.wav",
    description="A professional voice for narration",
    wait_for_completion=True
)

# Use the voice profile for speech generation (unified approach - recommended)
speech = client.voice.generate_voice(
    text="This uses my custom voice profile with the unified method!",
    voice_id=voice_profile.id,
    language="en",
    audio_format="mp3",
    generation_params={
        "speed": 1.0
    },
    wait_for_completion=True
)

# Legacy method (still works - uses generate_voice internally)
legacy_speech = client.voice.generate_speech(
    voice_id=voice_profile.id,
    text="This uses the legacy method.",
    wait_for_completion=True
)
```

#### Batch Processing

```python
# Process multiple files
audio_files = ["file1.mp3", "file2.wav", "file3.m4a"]
jobs = []

for audio_file in audio_files:
    job = client.transcription.transcribe_audio(
        audio_file=audio_file,
        language="en"
    )
    jobs.append(job)

# Wait for all jobs to complete
for job in jobs:
    completed_job = client.transcription.get_transcription_job(job.id)
    while completed_job.job.status != "completed":
        time.sleep(5)
        completed_job = client.transcription.get_transcription_job(job.id)
    
    print(f"Transcript for {job.id}: {completed_job.transcript}")
```

#### Music Generation with Custom Parameters

```python
# Generate rap music with specific parameters
rap_job = client.music.generate_rap(
    lyrics="""
    Started from the bottom now we're here
    Building dreams with every single year
    AI music generation so clear
    AudioPod making magic appear
    """,
    style="modern",
    tempo=120,
    wait_for_completion=True
)

# Share the generated music
share_result = client.music.share_music_track(
    job_id=rap_job.job.id,
    platform="social",
    message="Check out this AI-generated rap!"
)
print(f"Shareable URL: {share_result['share_url']}")
```

#### Karaoke Video Generation

```python
# Generate karaoke video from YouTube URL
karaoke_job = client.karaoke.generate_karaoke(
    youtube_url="https://www.youtube.com/watch?v=example",
    video_style="modern",
    wait_for_completion=True
)

print(f"Karaoke video URL: {karaoke_job.result['karaoke_video_path']}")
```

## Error Handling

```python
import audiopod
from audiopod.exceptions import (
    AudioPodError,
    AuthenticationError,
    RateLimitError,
    ValidationError,
    ProcessingError
)

try:
    client = audiopod.Client(api_key="invalid_key")
    job = client.voice.clone_voice("voice.wav", "Test text")
    
except AuthenticationError:
    print("Invalid API key")
except RateLimitError as e:
    print(f"Rate limit exceeded. Retry after: {e.retry_after} seconds")
except ValidationError as e:
    print(f"Invalid input: {e.message}")
except ProcessingError as e:
    print(f"Processing failed: {e.message}")
except AudioPodError as e:
    print(f"General API error: {e.message}")
```

## Credit Management

```python
# Check credit balance
credits = client.credits.get_credit_balance()
print(f"Available credits: {credits.total_available_credits}")
print(f"Next reset: {credits.next_reset_date}")

# Get usage history
usage = client.credits.get_usage_history()
for record in usage:
    print(f"Service: {record['service_type']}, Credits: {record['credits_used']}")

# Get credit multipliers
multipliers = client.credits.get_credit_multipliers()
print(f"Voice cloning: {multipliers['voice_cloning']} credits/second")
```

## Configuration

### Environment Variables

- `AUDIOPOD_API_KEY`: Your AudioPod API key
- `AUDIOPOD_BASE_URL`: Custom API base URL (optional)
- `AUDIOPOD_TIMEOUT`: Request timeout in seconds (default: 30)

### Client Configuration

```python
client = audiopod.Client(
    api_key="your_api_key",
    base_url="https://api.audiopod.ai",  # Custom base URL
    timeout=60,  # 60 second timeout
    max_retries=5,  # Retry failed requests
    verify_ssl=True,  # SSL verification
    debug=True  # Enable debug logging
)
```

## API Reference

### Client Classes

- `audiopod.Client`: Synchronous client
- `audiopod.AsyncClient`: Asynchronous client

### Services

- `client.voice`: **Voice generation operations** (unified TTS & cloning using `generate_voice()`)
- `client.music`: Music generation and editing
- `client.transcription`: Speech-to-text transcription
- `client.translation`: Audio/video translation
- `client.speaker`: Speaker analysis and diarization  
- `client.denoiser`: Audio denoising and enhancement
- `client.karaoke`: Karaoke video generation
- `client.credits`: Credit management and usage tracking

#### Voice Service Methods

**Recommended (Unified Approach):**
- `client.voice.generate_voice()` - Generate speech with voice file (cloning) or voice ID (TTS)

**Legacy Methods (Backward Compatibility):**
- `client.voice.clone_voice()` - Clone voice from audio file (deprecated, uses `generate_voice` internally)
- `client.voice.generate_speech()` - Generate speech with voice profile (deprecated, uses `generate_voice` internally)

**Voice Management:**
- `client.voice.create_voice_profile()` - Create reusable voice profiles
- `client.voice.list_voice_profiles()` - List available voice profiles
- `client.voice.delete_voice_profile()` - Delete voice profiles

### Models

- `Job`: Base job information and status
- `VoiceProfile`: Voice profile details
- `TranscriptionResult`: Transcription results and metadata
- `MusicGenerationResult`: Music generation results
- `TranslationResult`: Translation job results
- `CreditInfo`: User credit information

## CLI Usage

The SDK includes a command-line interface:

```bash
# Check API status
audiopod health

# Get credit balance  
audiopod credits balance

# Clone a voice
audiopod voice clone voice.wav "Hello world!" --language en

# Generate music
audiopod music generate "upbeat electronic music" --duration 60

# Transcribe audio
audiopod transcription transcribe audio.mp3 --language en
```

## Requirements

- Python 3.8+
- Active AudioPod account with API access
- Valid API key

## Support

- 📖 [API Reference](https://docs.audiopod.ai)
- 💬 [Discord Community](https://discord.gg/audiopod)
- 📧 [Email Support](mailto:support@audiopod.ai)
- 🐛 [Bug Reports](https://github.com/AudiopodAI/audiopod)

## License

This SDK is released under the MIT License. See [LICENSE](LICENSE) for details.

---

Made with ❤️ by the AudioPod team

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/audiopod-ai/audiopod-python",
    "name": "audiopod",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "audio, processing, ai, voice, cloning, transcription, translation, music, generation, denoising, api, sdk",
    "author": "AudioPod AI",
    "author_email": "AudioPod AI <support@audiopod.ai>",
    "download_url": "https://files.pythonhosted.org/packages/b0/54/0f245c133e75e17774fae4682e6290b09825351993f95ca42c3a574f10e9/audiopod-1.2.0.tar.gz",
    "platform": null,
    "description": "# AudioPod Python SDK\n\nThe official Python SDK for the AudioPod API - Professional Audio Processing powered by AI.\n\n[![PyPI version](https://badge.fury.io/py/audiopod.svg)](https://badge.fury.io/py/audiopod)\n[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Features\n\n- \ud83c\udfb5 **Music Generation** - Create music from text prompts, lyrics, or audio samples\n- \ud83c\udfa4 **Voice Cloning** - Clone voices from audio samples and generate speech\n- \ud83d\udcdd **Transcription** - Convert speech to text with speaker diarization\n- \ud83c\udf0d **Translation** - Translate audio and video content between languages\n- \ud83c\udfac **Karaoke Generation** - Create karaoke videos with synchronized lyrics\n- \ud83d\udd0a **Audio Enhancement** - Denoise and improve audio quality\n- \ud83d\udc65 **Speaker Analysis** - Identify and separate speakers in audio\n- \ud83d\udcb0 **Credit Management** - Track usage and manage API credits\n\n## Installation\n\n```bash\npip install audiopod\n```\n\n## Quick Start\n\n### Authentication\n\nGet your API key from the [AudioPod Dashboard](https://app.audiopod.ai/dashboard) and set it as an environment variable:\n\n```bash\nexport AUDIOPOD_API_KEY=\"ap_your_api_key_here\"\n```\n\nOr pass it directly to the client:\n\n```python\nimport audiopod\n\nclient = audiopod.Client(api_key=\"ap_your_api_key_here\")\n```\n\n### Basic Usage\n\n#### Voice Generation (Unified TTS & Cloning)\n\n```python\nimport audiopod\n\n# Initialize client\nclient = audiopod.Client()\n\n# Generate voice using file cloning (unified approach)\njob = client.voice.generate_voice(\n    text=\"Hello! This is voice generation using a cloned voice.\",\n    voice_file=\"path/to/voice_sample.wav\",  # For voice cloning\n    language=\"en\",\n    audio_format=\"mp3\",\n    generation_params={\n        \"speed\": 1.0\n    },\n    wait_for_completion=True\n)\n\nprint(f\"Generated audio URL: {job.output_url}\")\n\n# Generate speech with existing voice profile (unified approach)\nspeech = client.voice.generate_voice(\n    text=\"Hello from my voice profile!\",\n    voice_id=\"voice-profile-id\",  # For existing voice profiles\n    language=\"en\",\n    audio_format=\"mp3\",\n    generation_params={\n        \"speed\": 1.0\n    },\n    wait_for_completion=True\n)\n\n# Backward compatibility methods (deprecated - use generate_voice instead)\nlegacy_clone = client.voice.clone_voice(\n    voice_file=\"path/to/voice_sample.wav\",\n    text=\"Hello! This is a cloned voice speaking.\",\n    language=\"en\",\n    wait_for_completion=True\n)\n```\n\n#### Music Generation\n\n```python\n# Generate music from text\nmusic_job = client.music.generate_music(\n    prompt=\"upbeat electronic dance music with heavy bass\",\n    duration=120.0,  # 2 minutes\n    wait_for_completion=True\n)\n\nprint(f\"Generated music URL: {music_job.output_url}\")\n```\n\n#### Audio Transcription\n\n```python\n# Transcribe audio with speaker diarization\ntranscript = client.transcription.transcribe_audio(\n    audio_file=\"path/to/audio.mp3\",\n    language=\"en\",\n    enable_speaker_diarization=True,\n    wait_for_completion=True\n)\n\nprint(f\"Transcript: {transcript.transcript}\")\nprint(f\"Detected {len(transcript.segments)} speakers\")\n```\n\n#### Speech-to-Speech Translation\n\n```python\n# Translate speech while preserving voice characteristics\ntranslation = client.translation.translate_speech(\n    audio_file=\"path/to/english_audio.wav\",\n    target_language=\"es\",  # Spanish\n    source_language=\"en\",  # English (optional - auto-detect)\n    wait_for_completion=True\n)\n\nprint(f\"Translated audio URL: {translation.translated_audio_url}\")\n\n# Or translate from URL\nurl_translation = client.translation.translate_speech(\n    url=\"https://example.com/audio.mp3\",\n    target_language=\"fr\",  # French\n    wait_for_completion=True\n)\n```\n\n### Async Support\n\nThe SDK supports async/await for better performance:\n\n```python\nimport asyncio\nimport audiopod\n\nasync def main():\n    async with audiopod.AsyncClient() as client:\n        # All the same methods are available with async support\n        job = await client.voice.clone_voice(\n            voice_file=\"voice.wav\",\n            text=\"Async voice cloning!\",\n            wait_for_completion=True\n        )\n        print(f\"Async result: {job['output_url']}\")\n\nasyncio.run(main())\n```\n\n### Advanced Examples\n\n#### Create Voice Profile for Reuse\n\n```python\n# Create a reusable voice profile\nvoice_profile = client.voice.create_voice_profile(\n    name=\"My Custom Voice\",\n    voice_file=\"voice_sample.wav\",\n    description=\"A professional voice for narration\",\n    wait_for_completion=True\n)\n\n# Use the voice profile for speech generation (unified approach - recommended)\nspeech = client.voice.generate_voice(\n    text=\"This uses my custom voice profile with the unified method!\",\n    voice_id=voice_profile.id,\n    language=\"en\",\n    audio_format=\"mp3\",\n    generation_params={\n        \"speed\": 1.0\n    },\n    wait_for_completion=True\n)\n\n# Legacy method (still works - uses generate_voice internally)\nlegacy_speech = client.voice.generate_speech(\n    voice_id=voice_profile.id,\n    text=\"This uses the legacy method.\",\n    wait_for_completion=True\n)\n```\n\n#### Batch Processing\n\n```python\n# Process multiple files\naudio_files = [\"file1.mp3\", \"file2.wav\", \"file3.m4a\"]\njobs = []\n\nfor audio_file in audio_files:\n    job = client.transcription.transcribe_audio(\n        audio_file=audio_file,\n        language=\"en\"\n    )\n    jobs.append(job)\n\n# Wait for all jobs to complete\nfor job in jobs:\n    completed_job = client.transcription.get_transcription_job(job.id)\n    while completed_job.job.status != \"completed\":\n        time.sleep(5)\n        completed_job = client.transcription.get_transcription_job(job.id)\n    \n    print(f\"Transcript for {job.id}: {completed_job.transcript}\")\n```\n\n#### Music Generation with Custom Parameters\n\n```python\n# Generate rap music with specific parameters\nrap_job = client.music.generate_rap(\n    lyrics=\"\"\"\n    Started from the bottom now we're here\n    Building dreams with every single year\n    AI music generation so clear\n    AudioPod making magic appear\n    \"\"\",\n    style=\"modern\",\n    tempo=120,\n    wait_for_completion=True\n)\n\n# Share the generated music\nshare_result = client.music.share_music_track(\n    job_id=rap_job.job.id,\n    platform=\"social\",\n    message=\"Check out this AI-generated rap!\"\n)\nprint(f\"Shareable URL: {share_result['share_url']}\")\n```\n\n#### Karaoke Video Generation\n\n```python\n# Generate karaoke video from YouTube URL\nkaraoke_job = client.karaoke.generate_karaoke(\n    youtube_url=\"https://www.youtube.com/watch?v=example\",\n    video_style=\"modern\",\n    wait_for_completion=True\n)\n\nprint(f\"Karaoke video URL: {karaoke_job.result['karaoke_video_path']}\")\n```\n\n## Error Handling\n\n```python\nimport audiopod\nfrom audiopod.exceptions import (\n    AudioPodError,\n    AuthenticationError,\n    RateLimitError,\n    ValidationError,\n    ProcessingError\n)\n\ntry:\n    client = audiopod.Client(api_key=\"invalid_key\")\n    job = client.voice.clone_voice(\"voice.wav\", \"Test text\")\n    \nexcept AuthenticationError:\n    print(\"Invalid API key\")\nexcept RateLimitError as e:\n    print(f\"Rate limit exceeded. Retry after: {e.retry_after} seconds\")\nexcept ValidationError as e:\n    print(f\"Invalid input: {e.message}\")\nexcept ProcessingError as e:\n    print(f\"Processing failed: {e.message}\")\nexcept AudioPodError as e:\n    print(f\"General API error: {e.message}\")\n```\n\n## Credit Management\n\n```python\n# Check credit balance\ncredits = client.credits.get_credit_balance()\nprint(f\"Available credits: {credits.total_available_credits}\")\nprint(f\"Next reset: {credits.next_reset_date}\")\n\n# Get usage history\nusage = client.credits.get_usage_history()\nfor record in usage:\n    print(f\"Service: {record['service_type']}, Credits: {record['credits_used']}\")\n\n# Get credit multipliers\nmultipliers = client.credits.get_credit_multipliers()\nprint(f\"Voice cloning: {multipliers['voice_cloning']} credits/second\")\n```\n\n## Configuration\n\n### Environment Variables\n\n- `AUDIOPOD_API_KEY`: Your AudioPod API key\n- `AUDIOPOD_BASE_URL`: Custom API base URL (optional)\n- `AUDIOPOD_TIMEOUT`: Request timeout in seconds (default: 30)\n\n### Client Configuration\n\n```python\nclient = audiopod.Client(\n    api_key=\"your_api_key\",\n    base_url=\"https://api.audiopod.ai\",  # Custom base URL\n    timeout=60,  # 60 second timeout\n    max_retries=5,  # Retry failed requests\n    verify_ssl=True,  # SSL verification\n    debug=True  # Enable debug logging\n)\n```\n\n## API Reference\n\n### Client Classes\n\n- `audiopod.Client`: Synchronous client\n- `audiopod.AsyncClient`: Asynchronous client\n\n### Services\n\n- `client.voice`: **Voice generation operations** (unified TTS & cloning using `generate_voice()`)\n- `client.music`: Music generation and editing\n- `client.transcription`: Speech-to-text transcription\n- `client.translation`: Audio/video translation\n- `client.speaker`: Speaker analysis and diarization  \n- `client.denoiser`: Audio denoising and enhancement\n- `client.karaoke`: Karaoke video generation\n- `client.credits`: Credit management and usage tracking\n\n#### Voice Service Methods\n\n**Recommended (Unified Approach):**\n- `client.voice.generate_voice()` - Generate speech with voice file (cloning) or voice ID (TTS)\n\n**Legacy Methods (Backward Compatibility):**\n- `client.voice.clone_voice()` - Clone voice from audio file (deprecated, uses `generate_voice` internally)\n- `client.voice.generate_speech()` - Generate speech with voice profile (deprecated, uses `generate_voice` internally)\n\n**Voice Management:**\n- `client.voice.create_voice_profile()` - Create reusable voice profiles\n- `client.voice.list_voice_profiles()` - List available voice profiles\n- `client.voice.delete_voice_profile()` - Delete voice profiles\n\n### Models\n\n- `Job`: Base job information and status\n- `VoiceProfile`: Voice profile details\n- `TranscriptionResult`: Transcription results and metadata\n- `MusicGenerationResult`: Music generation results\n- `TranslationResult`: Translation job results\n- `CreditInfo`: User credit information\n\n## CLI Usage\n\nThe SDK includes a command-line interface:\n\n```bash\n# Check API status\naudiopod health\n\n# Get credit balance  \naudiopod credits balance\n\n# Clone a voice\naudiopod voice clone voice.wav \"Hello world!\" --language en\n\n# Generate music\naudiopod music generate \"upbeat electronic music\" --duration 60\n\n# Transcribe audio\naudiopod transcription transcribe audio.mp3 --language en\n```\n\n## Requirements\n\n- Python 3.8+\n- Active AudioPod account with API access\n- Valid API key\n\n## Support\n\n- \ud83d\udcd6 [API Reference](https://docs.audiopod.ai)\n- \ud83d\udcac [Discord Community](https://discord.gg/audiopod)\n- \ud83d\udce7 [Email Support](mailto:support@audiopod.ai)\n- \ud83d\udc1b [Bug Reports](https://github.com/AudiopodAI/audiopod)\n\n## License\n\nThis SDK is released under the MIT License. See [LICENSE](LICENSE) for details.\n\n---\n\nMade with \u2764\ufe0f by the AudioPod team\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Professional Audio Processing API Client for Python",
    "version": "1.2.0",
    "project_urls": {
        "API Reference": "https://docs.audiopod.ai/",
        "Bug Tracker": "https://github.com/audiopod-ai/audiopod/issues",
        "Homepage": "https://audiopod.ai",
        "Repository": "https://github.com/audiopod-ai/audiopod"
    },
    "split_keywords": [
        "audio",
        " processing",
        " ai",
        " voice",
        " cloning",
        " transcription",
        " translation",
        " music",
        " generation",
        " denoising",
        " api",
        " sdk"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "60bed26ca75509a8c6cc31e8bd27ecdaf9639aee0f53d7ff8036f674e212a784",
                "md5": "b101fecfafc6bb975e7c85773249a6d2",
                "sha256": "423ad99700a6b9294b92210d9bd0bd95db015c6a0f914fb931a0d206ada7caa8"
            },
            "downloads": -1,
            "filename": "audiopod-1.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b101fecfafc6bb975e7c85773249a6d2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 33045,
            "upload_time": "2025-08-16T09:14:00",
            "upload_time_iso_8601": "2025-08-16T09:14:00.337358Z",
            "url": "https://files.pythonhosted.org/packages/60/be/d26ca75509a8c6cc31e8bd27ecdaf9639aee0f53d7ff8036f674e212a784/audiopod-1.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b0540f245c133e75e17774fae4682e6290b09825351993f95ca42c3a574f10e9",
                "md5": "8804a83908b57382f93d9fb2278e93dd",
                "sha256": "5c903b746273ac095bc2e04eeac733c0194031fa78c16d86fbf184fd68937ade"
            },
            "downloads": -1,
            "filename": "audiopod-1.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "8804a83908b57382f93d9fb2278e93dd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 42757,
            "upload_time": "2025-08-16T09:14:01",
            "upload_time_iso_8601": "2025-08-16T09:14:01.489179Z",
            "url": "https://files.pythonhosted.org/packages/b0/54/0f245c133e75e17774fae4682e6290b09825351993f95ca42c3a574f10e9/audiopod-1.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-16 09:14:01",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "audiopod-ai",
    "github_project": "audiopod-python",
    "github_not_found": true,
    "lcname": "audiopod"
}
        
Elapsed time: 0.74116s