

Python से प्रेजेटेशन जेनरेशन को ऑटोमेट करें: 2Slides API ट्यूटोरियल
Python ऑटोमेशन, डेटा पाइपलाइन और AI वर्कफ़्लो के लिए पसंदीदा भाषा है। यह ट्यूटोरियल दिखाता है कि Python से 2Slides REST API का उपयोग करके प्रेजेंटेशन को स्वचालित रूप से कैसे जनरेट करें — सरल एकबारगी स्लाइड से लेकर जटिल स्वचालित पाइपलाइन तक।
आवश्यक शर्तें
pip install requests python-dotenvएक .env फ़ाइल बनाएं:
TWOSLIDES_API_KEY=sk-2slides-your-api-keyत्वरित शुरुआत: अपनी पहली स्लाइड्स जनरेट करें
import os
import time
import requests
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.getenv('TWOSLIDES_API_KEY')
BASE_URL = 'https://2slides.com/api/v1'
HEADERS = {
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
def generate_slides(topic, theme_id=None, mode='async'):
"""टेक्स्ट टॉपिक से प्रेजेंटेशन जनरेट करें।"""
payload = {
'userInput': topic,
'mode': mode,
'responseLanguage': 'en',
'resolution': '2K',
}
if theme_id:
payload['themeId'] = theme_id
response = requests.post(
f'{BASE_URL}/slides/generate',
headers=HEADERS,
json=payload
)
response.raise_for_status()
return response.json()
def wait_for_job(job_id, timeout=300, interval=3):
"""जॉब पूरा होने तक पोल करें।"""
start = time.time()
while time.time() - start < timeout:
response = requests.get(
f'{BASE_URL}/jobs/{job_id}',
headers=HEADERS
)
data = response.json()
status = data.get('status')
print(f' Job {job_id}: {status}')
if status == 'success':
return data
if status == 'failed':
raise Exception(f'Job failed: {data}')
time.sleep(interval)
raise TimeoutError(f'Job {job_id} timed out after {timeout}s')
# एक प्रेजेंटेशन जनरेट करें
job = generate_slides('Top 10 AI Trends for 2026')
print(f'Job ID: {job["jobId"]}')
result = wait_for_job(job['jobId'])
print(f'Download: {result["downloadUrl"]}')डॉक्यूमेंट को स्लाइड्स में बदलें
def convert_file_to_slides(file_url, prompt='', theme_id=None):
"""PDF, DOCX, XLSX या अन्य फ़ाइलों को स्लाइड्स में बदलें।"""
payload = {
'fileUrl': file_url,
'userInput': prompt,
'mode': 'async'
}
if theme_id:
payload['themeId'] = theme_id
response = requests.post(
f'{BASE_URL}/slides/create-pdf-slides',
headers=HEADERS,
json=payload
)
response.raise_for_status()
job = response.json()
return wait_for_job(job['jobId'])
# एक त्रैमासिक रिपोर्ट PDF को कन्वर्ट करें
result = convert_file_to_slides(
file_url='https://your-storage.com/q1-report.pdf',
prompt='Executive summary for the board, 10 slides max'
)
print(f'Download: {result["downloadUrl"]}')डिज़ाइन-मैच्ड स्लाइड्स (इस तरह बनाएं)
def create_like_this(topic, reference_image_url, resolution='2K'):
"""रेफरेंस डिज़ाइन से मैच करती स्लाइड्स जनरेट करें।"""
payload = {
'userInput': topic,
'designStyle': {
'global': {
'referenceImageUrl': reference_image_url
}
},
'resolution': resolution,
'mode': 'async'
}
response = requests.post(
f'{BASE_URL}/slides/create-like-this',
headers=HEADERS,
json=payload
)
response.raise_for_status()
job = response.json()
return wait_for_job(job['jobId'])
# अपने ब्रांड टेम्पलेट से मैच करें
result = create_like_this(
topic='मासिक टीम अपडेट — मार्च 2026',
reference_image_url='https://your-brand.com/slide-template.png'
)वॉइस नैरेशन जोड़ें
def add_narration(job_id, mode='single', voice='Charon', content_mode='concise'):
"""मौजूदा स्लाइड्स में AI वॉइस नैरेशन जोड़ें।"""
payload = {
'jobId': job_id,
'mode': mode,
'voice': voice,
'contentMode': content_mode
}
response = requests.post(
f'{BASE_URL}/slides/generate-narration',
headers=HEADERS,
json=payload
)
response.raise_for_status()
return response.json()
def download_with_audio(job_id):
"""वॉइस ऑडियो फाइलों के साथ स्लाइड्स डाउनलोड करें।"""
response = requests.post(
f'{BASE_URL}/slides/download-slides-pages-voices',
headers=HEADERS,
json={'jobId': job_id}
)
response.raise_for_status()
return response.json()थीम्स ब्राउज़ करें
def search_themes(query=''):
"""उपलब्ध स्लाइड थीम्स खोजें।"""
params = {'query': query} if query else {}
response = requests.get(
f'{BASE_URL}/themes',
headers=HEADERS,
params=params
)
response.raise_for_status()
return response.json()
themes = search_themes('corporate')
for theme in themes.get('themes', []):
print(f"{theme['id']}: {theme['name']}")उत्पादन पाइपलाइन उदाहरण
"""
स्वचालित साप्ताहिक रिपोर्ट पाइपलाइन।
cron के माध्यम से चलाएं: 0 9 * * MON python weekly_report.py
"""
import json
from datetime import datetime
def weekly_report_pipeline():
print(f'साप्ताहिक रिपोर्ट जनरेट हो रही है: {datetime.now().isoformat()}')
# 1. स्लाइड्स जनरेट करें
job = generate_slides(
topic='''साप्ताहिक इंजीनियरिंग अपडेट — 23 मार्च, 2026 का सप्ताह:
- v2.4 को प्रोडक्शन में डिप्लॉय किया (99.9% uptime)
- 3 नए API endpoints शिप किए गए
- परफॉर्मेंस: p99 latency में 40% की कमी
- Sprint velocity: 42 story points (लक्ष्य: 40)
- अगला सप्ताह: database migration, नया auth system''',
theme_id='corporate-standard-id'
)
result = wait_for_job(job['jobId'])
print(f'स्लाइड्स तैयार: {result["downloadUrl"]}')
# 2. नैरेशन जोड़ें
add_narration(job['jobId'], mode='single', voice='Kore')
print('नैरेशन जोड़ा गया')
# 3. पैकेज डाउनलोड करें
package = download_with_audio(job['jobId'])
print(f'पूर्ण पैकेज: {json.dumps(package, indent=2)}')
return result['downloadUrl']
if __name__ == '__main__':
url = weekly_report_pipeline()
print(f'\nरिपोर्ट URL: {url}')एरर हैंडलिंग सर्वोत्तम प्रथाएं
from requests.exceptions import HTTPError, Timeout, ConnectionError
def safe_generate(topic, retries=3):
"""पुनः प्रयास लॉजिक के साथ स्लाइड्स जनरेट करें।"""
for attempt in range(retries):
try:
job = generate_slides(topic)
return wait_for_job(job['jobId'])
except HTTPError as e:
if e.response.status_code == 429:
wait = 2 ** attempt * 5 # Exponential backoff
print(f'Rate limited. {wait}s प्रतीक्षा कर रहे हैं...')
time.sleep(wait)
elif e.response.status_code == 402:
raise Exception('अपर्याप्त क्रेडिट्स')
else:
raise
except (Timeout, ConnectionError) as e:
print(f'नेटवर्क एरर (प्रयास {attempt + 1}): {e}')
time.sleep(5)
raise Exception(f'{retries} पुनः प्रयासों के बाद विफल')अक्सर पूछे जाने वाले प्रश्न
किस Python संस्करण की आवश्यकता है?
Python 3.7+ f-strings और requests compatibility के लिए।
क्या मैं async Python (asyncio/aiohttp) का उपयोग कर सकता हूं?
हां — async HTTP calls के लिए requests को aiohttp से बदलें। polling pattern उसी तरह से काम करता है।
मैं बड़े batch jobs को कैसे हैंडल करूं?
कई जनरेशन्स को समवर्ती रूप से चलाने के लिए asyncio का उपयोग करें, rate limit (60 req/min) का सम्मान करते हुए।
स्वचालन शुरू करें — अपनी 2Slides API key प्राप्त करें और Python से प्रेजेंटेशन जनरेट करें।
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free