
2Slides Team
4 min read

Python ऑटोमेशन, डेटा पाइपलाइन और AI वर्कफ़्लो के लिए पसंदीदा भाषा है। यह ट्यूटोरियल दिखाता है कि Python से 2Slides REST API का उपयोग करके प्रेजेंटेशन को स्वचालित रूप से कैसे जनरेट करें — सरल एकबारगी स्लाइड से लेकर जटिल स्वचालित पाइपलाइन तक।
pip install requests python-dotenv
एक
.envTWOSLIDES_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 3.7+ f-strings और
requestsहां — async HTTP calls के लिए
requestsaiohttpकई जनरेशन्स को समवर्ती रूप से चलाने के लिए asyncio का उपयोग करें, rate limit (60 req/min) का सम्मान करते हुए।
स्वचालन शुरू करें — अपनी 2Slides API key प्राप्त करें और Python से प्रेजेंटेशन जनरेट करें।
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For FreeYour AI Agent for slides. Save time, shine faster with intelligent presentation creation.
© 2026 2slides. All rights reserved.