Python Examples
Complete Python examples for the AudioSpliter API using the requests library.
Setup
pip install requests
export AUDIOSPLITER_API_KEY=as_live_abc123
Helper Class
import requests
import os
import time
class AudioSpliter:
BASE_URL = 'https://api.audiospliter.com/api/v1'
def __init__(self, api_key=None):
self.api_key = api_key or os.environ['AUDIOSPLITER_API_KEY']
self.session = requests.Session()
self.session.headers.update({
'X-API-Key': self.api_key,
'Content-Type': 'application/json',
})
def _request(self, method, path, **kwargs):
response = self.session.request(method, f'{self.BASE_URL}{path}', **kwargs)
response.raise_for_status()
if response.status_code == 204:
return None
return response.json()
def create_job(self, source_url, split_mode='duration', **kwargs):
return self._request('POST', '/splits', json={
'sourceUrl': source_url,
'splitMode': split_mode,
**kwargs,
})
def get_job(self, job_id):
return self._request('GET', f'/splits/{job_id}')
def list_jobs(self, **params):
return self._request('GET', '/splits', params=params)
def delete_job(self, job_id):
return self._request('DELETE', f'/splits/{job_id}')
def wait_for_completion(self, job_id, interval=5, timeout=300):
start = time.time()
while time.time() - start < timeout:
job = self.get_job(job_id)
if job['status'] == 'completed':
return job
if job['status'] == 'failed':
raise Exception(f"Job failed: {job.get('error', {}).get('message')}")
time.sleep(interval)
raise TimeoutError('Job did not complete within timeout')
Create and Wait
client = AudioSpliter()
job = client.create_job(
'https://example.com/podcast.mp3',
segmentDuration=600,
outputFormat='mp3',
)
print(f"Job {job['id']} created")
result = client.wait_for_completion(job['id'])
for segment in result['segments']:
print(f"Segment {segment['index']}: {segment['downloadUrl']}")
Download Segments
import os
def download_segments(job, output_dir='./segments'):
os.makedirs(output_dir, exist_ok=True)
for segment in job['segments']:
response = requests.get(segment['downloadUrl'])
filename = os.path.join(output_dir, f"segment-{segment['index']}.mp3")
with open(filename, 'wb') as f:
f.write(response.content)
print(f"Downloaded {filename} ({len(response.content)} bytes)")
Full Pipeline
client = AudioSpliter()
# Split
job = client.create_job(
'https://example.com/long-recording.wav',
splitMode='duration',
segmentDuration=600,
outputFormat='mp3',
)
# Wait
result = client.wait_for_completion(job['id'])
# Download
download_segments(result, './output')
print(f"Done! {len(result['segments'])} segments downloaded.")
Error Handling
from requests.exceptions import HTTPError
try:
job = client.create_job('https://example.com/audio.mp3', segmentDuration=600)
except HTTPError as e:
if e.response.status_code == 429:
retry_after = e.response.json()['error'].get('retryAfter', 30)
print(f"Rate limited. Retry after {retry_after}s")
elif e.response.status_code == 401:
print("Invalid API key")
else:
print(f"Error: {e.response.json()['error']['message']}")