2Slides Logo
Automatiseeri esitluste loomine Pythoniga: 2Slides API õpetus
2Slides Team
4 min read

Automatiseeri Esitluste Loomine Pythoniga: 2Slides API Õpetus

Python on esirinnas keel automatiseerimiseks, andmetorustikeks ja AI töövoogudeks. See õpetus näitab, kuidas kasutada 2Slides REST API-t Pythonis, et luua esitlusi automaatselt — alates lihtsatest ühekordsetest slaididest kuni keerukate automatiseeritud torustikeni.

Eeldused

pip install requests python-dotenv

Loo

.env
fail:

TWOSLIDES_API_KEY=sk-2slides-sinu-api-võti

Kiire Algus: Loo Oma Esimesed Slaidid

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'): """Loo esitlus tekstiteema põhjal.""" 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): """Küsi staatust kuni töö lõpeb.""" 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' Töö {job_id}: {status}') if status == 'success': return data if status == 'failed': raise Exception(f'Töö ebaõnnestus: {data}') I notice this appears to be the end of a code snippet, but you haven't provided the full document to translate. However, I can translate this code snippet while maintaining the technical terms and structure: ```python time.sleep(interval) raise TimeoutError(f'Töö {job_id} aegus pärast {timeout}s') # Loo esitlus job = generate_slides('Top 10 AI trendi 2026. aastaks') print(f'Töö ID: {job["jobId"]}') result = wait_for_job(job['jobId']) print(f'Laadi alla: {result["downloadUrl"]}')

Note: To provide a complete and accurate SEO-optimized translation, I would need the full Markdown document including:

  • Headers and titles
  • Full context of the code
  • Any surrounding explanatory text
  • Meta descriptions or introductory content

Please provide the complete Markdown document for a proper translation.

Teisenda dokumente slaidideks

def convert_file_to_slides(file_url, prompt='', theme_id=None): """Teisenda PDF, DOCX, XLSX või teised failid slaidideks.""" 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']) # Teisenda kvartali aruande PDF result = convert_file_to_slides( file_url='https://your-storage.com/q1-report.pdf', prompt='Kokkuvõte juhatusele, maksimaalselt 10 slaidi' ) print(f'Lae alla: {result["downloadUrl"]}')

Disainiga Kohandatud Slaidid (Loo Sarnaselt)

def create_like_this(topic, reference_image_url, resolution='2K'): """Genereeri slaide, mis vastavad viitedisainile.""" 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']) # Sobita oma brändi mallile result = create_like_this( topic='Meeskonna Kuukiri — Märts 2026', reference_image_url='https://your-brand.com/slide-template.png' )

Häälejutustuse lisamine

def add_narration(job_id, mode='single', voice='Charon', content_mode='concise'): """Lisa AI häälejutustus olemasolevatele slaididele.""" 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): """Laadi alla slaidid koos hääle audiofailidega.""" response = requests.post( f'{BASE_URL}/slides/download-slides-pages-voices', headers=HEADERS, json={'jobId': job_id} ) response.raise_for_status() return response.json()

Sirvige teemasid

def search_themes(query=''): """Otsi saadaolevaid slaiditeemaid.""" 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']}")

Tootmisliini Näide

""" Automatiseeritud iganädalaste aruannete liin. Käivita cron-iga: 0 9 * * MON python weekly_report.py """ import json from datetime import datetime def weekly_report_pipeline(): print(f'Genereerin iganädalast aruannet: {datetime.now().isoformat()}') # 1. Genereeri slaidid job = generate_slides( topic='''Iganädalane Tehnilise Meeskonna Uuendus — 23. märtsi 2026 nädal: - Versioon 2.4 toodangusse paigaldatud (99.9% töövalmidus) - 3 uut API lõpp-punkti välja lastud - Jõudlus: p99 latentsus langes 40% - Sprindi kiirus: 42 lugu punkti (eesmärk: 40) - Järgmine nädal: andmebaasi migratsioon, uus autentimissüsteem''', theme_id='corporate-standard-id' ) result = wait_for_job(job['jobId']) print(f'Slaidid valmis: {result["downloadUrl"]}') # 2. Lisa jutustus add_narration(job['jobId'], mode='single', voice='Kore') print('Jutustus lisatud') # 3. Laadi alla pakett package = download_with_audio(job['jobId']) print(f'Täielik pakett: {json.dumps(package, indent=2)}') return result['downloadUrl'] if __name__ == '__main__': url = weekly_report_pipeline() print(f'\nAruande URL: {url}')

Vigade Käsitlemise Parimad Tavad

from requests.exceptions import HTTPError, Timeout, ConnectionError def safe_generate(topic, retries=3): """Genereeri slaidid korduskatsete loogikaga.""" 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 # Eksponentsiaalne taganemisaeg print(f'Päringute limiit saavutatud. Ootan {wait}s...') time.sleep(wait) elif e.response.status_code == 402: raise Exception('Ebapiisavalt krediite') else: raise except (Timeout, ConnectionError) as e: print(f'Võrguühenduse viga (katse {attempt + 1}): {e}') time.sleep(5) raise Exception(f'Ebaõnnestus pärast {retries} katset')

Korduma Kippuvad Küsimused

Millist Python versiooni on vaja?

Python 3.7+ f-stringide ja

requests
ühilduvuse jaoks.

Kas ma saan kasutada asünkroonset Pythonit (asyncio/aiohttp)?

Jah — asenda

requests
aiohttp
-ga asünkroonsete HTTP päringute jaoks. Pollingu muster töötab samal viisil.

Kuidas ma käsitlen suuri partiitöid?

Kasuta asyncio't mitme genereerimise samaaegse käivitamise jaoks, järgides kiiruslimiiti (60 päringut/min).


Alusta automatiseerimist — hangi oma 2Slides API võti ja genereeri esitlusi Pythonist.

About 2Slides

Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.

Try For Free