2Slides Logo
أتمتة إنشاء العروض التقديمية باستخدام Python: دليل 2Slides API
2Slides Team
4 min read

أتمتة إنشاء العروض التقديمية باستخدام Python: دليل 2Slides API

Python هي اللغة المفضلة للأتمتة، وخطوط أنابيب البيانات، وسير عمل الذكاء الاصطناعي. يوضح هذا الدليل كيفية استخدام 2Slides REST API من Python لإنشاء العروض التقديمية تلقائيًا — من الشرائح البسيطة لمرة واحدة إلى خطوط الأنابيب الآلية المعقدة.

المتطلبات الأساسية

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'): """إضافة تعليق صوتي بالذكاء الاصطناعي للشرائح الموجودة.""" 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'Generating weekly report: {datetime.now().isoformat()}') # 1. إنشاء الشرائح job = generate_slides( topic='''Weekly Engineering Update — Week of March 23, 2026: - Deployed v2.4 to production (99.9% uptime) - 3 new API endpoints shipped - Performance: p99 latency down 40% - Sprint velocity: 42 story points (target: 40) - Next week: database migration, new auth system''', theme_id='corporate-standard-id' ) result = wait_for_job(job['jobId']) print(f'Slides ready: {result["downloadUrl"]}') # 2. إضافة السرد الصوتي add_narration(job['jobId'], mode='single', voice='Kore') print('Narration added') # 3. تحميل الحزمة package = download_with_audio(job['jobId']) print(f'Full package: {json.dumps(package, indent=2)}') return result['downloadUrl'] if __name__ == '__main__': url = weekly_report_pipeline() print(f'\nReport 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 # تراجع أسي print(f'Rate limited. Waiting {wait}s...') time.sleep(wait) elif e.response.status_code == 402: raise Exception('Insufficient credits') else: raise except (Timeout, ConnectionError) as e: print(f'Network error (attempt {attempt + 1}): {e}') time.sleep(5) raise Exception(f'Failed after {retries} retries')

الأسئلة الشائعة

ما هي نسخة Python المطلوبة؟

Python 3.7+ لدعم f-strings وتوافق

requests
.

هل يمكنني استخدام Python غير المتزامن (asyncio/aiohttp)؟

نعم — استبدل

requests
بـ
aiohttp
لاستدعاءات HTTP غير المتزامنة. نمط الاستطلاع يعمل بنفس الطريقة.

كيف أتعامل مع وظائف الدفعات الكبيرة؟

استخدم asyncio لتشغيل عمليات إنشاء متعددة بشكل متزامن، مع احترام حد المعدل (60 طلب/دقيقة).


ابدأ الأتمتة — احصل على مفتاح 2Slides API الخاص بك وأنشئ العروض التقديمية من Python.

About 2Slides

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

Try For Free