Skip to main content

PraisonAI PPT - Create beautiful PowerPoint presentations from Bible verses in JSON format

Project description

PraisonAI PPT - PowerPoint Bible Verses Generator

PyPI version Python Version License: MIT

A professional Python package for creating beautiful PowerPoint presentations from Bible verses stored in JSON or YAML format. Each verse gets its own slide with proper formatting and styling.

Table of Contents


โœจ Features

Core Features

  • ๐Ÿ“ฆ Proper Python Package - Installable via pip with entry points
  • ๐Ÿ“– Dynamic verse loading from JSON or YAML files
  • ๐ŸŽจ Professional slide formatting with proper placeholders
  • ๐Ÿ“‘ Multi-part verse support for long verses
  • ๐Ÿ”ง Command-line interface with flexible options
  • ๐Ÿ Python API for programmatic use
  • ๐Ÿ“ Built-in examples included with the package
  • ๐Ÿ“ Template file for quick start
  • โœจ Auto-generated filenames or custom output names
  • ๐ŸŽฏ Error handling and user-friendly feedback

Advanced Features

  • ๐ŸŽจ Text highlighting - Highlight specific words or phrases (bold + orange)
  • ๐Ÿ”ค Custom font sizes - Set custom font sizes for specific words
  • ๐Ÿ“„ YAML support - User-friendly YAML format alongside JSON
  • ๐Ÿ“„ PDF Conversion - Convert presentations to PDF with multiple backends
  • ๐Ÿ”„ Multiple PDF Backends - Support for Aspose.Slides (commercial) and LibreOffice (free)
  • โš™๏ธ Advanced PDF Options - Quality settings, password protection, and more
  • โ˜๏ธ Google Drive Upload - Upload presentations directly to Google Drive
  • ๐Ÿ”Œ Lazy Loading - Optional dependencies loaded only when needed

๐Ÿš€ Quick Start

1. Install the Package

pip install praisonaippt

2. Create Your First Presentation

# Use a built-in example
praisonaippt --use-example verses

# Or create from your own JSON file
praisonaippt -i my_verses.json

3. Explore More Options

# List available examples
praisonaippt --list-examples

# Create with custom title
praisonaippt -i verses.json -t "Sunday Service"

# Convert to PDF
praisonaippt -i verses.json --convert-pdf

# Upload to Google Drive (requires setup)
praisonaippt -i verses.json --upload-gdrive --gdrive-credentials creds.json

๐Ÿ“ฆ Installation

Requirements

  • Python 3.7 or higher
  • python-pptx library (automatically installed)
  • PyYAML library (automatically installed)

Installation Methods

Method 1: Install from PyPI (Recommended)

# Basic installation
pip install praisonaippt

# Or using uv (faster)
uv pip install praisonaippt

Method 2: Install from Source

git clone https://github.com/MervinPraison/PraisonAIPPT.git
cd PraisonAIPPT
pip install .

Method 3: Development Installation

git clone https://github.com/MervinPraison/PraisonAIPPT.git
cd PraisonAIPPT
pip install -e .

Optional Dependencies

Install additional features as needed:

# For PDF conversion (Aspose - commercial, high quality)
pip install praisonaippt[pdf-aspose]

# For PDF conversion (all backends)
pip install praisonaippt[pdf-all]

# For Google Drive upload
pip install praisonaippt[gdrive]

# Install everything
pip install praisonaippt[all]

Note: For LibreOffice PDF conversion (free), download LibreOffice from libreoffice.org


โš™๏ธ Configuration

PraisonAI PPT supports persistent configuration stored in ~/.praisonaippt/config.yaml. This eliminates the need to specify credentials and settings every time you run commands.

Quick Setup

Initialize your configuration interactively:

praisonaippt --config-init

Or use the config command:

praisonaippt config init

Configuration File Location

  • Path: ~/.praisonaippt/config.yaml
  • Format: YAML (user-friendly, easy to edit)
  • Auto-created: On first --config-init run

Configuration Structure

gdrive:
  credentials_path: ~/gdrive-credentials.json
  folder_id: null
  folder_name: Bible Presentations
  use_date_folders: false
  date_format: YYYY/MM

pdf:
  backend: auto
  quality: high
  compression: true

defaults:
  output_format: pptx
  auto_convert_pdf: false
  auto_upload_gdrive: false

Configuration Options

Google Drive Settings (gdrive)

Option Description Example
credentials_path Path to service account JSON "~/gdrive-credentials.json"
folder_id Google Drive folder ID "1a2b3c4d5e6f7g8h9i0j"
folder_name Folder name (auto-creates if missing) "Bible Presentations"
use_date_folders Create date-based subfolders true or false
date_format Date folder format pattern "YYYY/MM", "YYYY-MM", "YYYY/MM/DD"

PDF Settings (pdf)

Option Description Values
backend PDF conversion backend "aspose", "libreoffice", "auto"
quality PDF quality "low", "medium", "high"
compression Enable image compression true, false

Default Behaviors (defaults)

Option Description Values
auto_convert_pdf Auto-convert to PDF true, false
auto_upload_gdrive Auto-upload to Google Drive true, false

Using Configuration

Once configured, commands become simpler:

Without Configuration

praisonaippt -i verses.json \
  --upload-gdrive \
  --gdrive-credentials ~/gdrive-credentials.json \
  --gdrive-folder-name "Bible Presentations"

With Configuration

# Just this! Config handles the rest
praisonaippt -i verses.json --upload-gdrive

Configuration Priority

Settings are applied in this order (later overrides earlier):

  1. Default values (built-in)
  2. Configuration file (~/.praisonaippt/config.yaml)
  3. Command-line arguments (highest priority)

Example:

# Config has: "folder_name": "Bible Presentations"
# This command overrides it:
praisonaippt -i verses.json --upload-gdrive --gdrive-folder-name "Sunday Service"

Configuration Commands

# Initialize configuration (interactive)
praisonaippt --config-init
praisonaippt config init

# Show current configuration
praisonaippt --config-show
praisonaippt config show

# Edit configuration manually (YAML is easy to edit!)
nano ~/.praisonaippt/config.yaml
vim ~/.praisonaippt/config.yaml
code ~/.praisonaippt/config.yaml

Manual Configuration

Create ~/.praisonaippt/config.yaml manually:

mkdir -p ~/.praisonaippt
cat > ~/.praisonaippt/config.yaml << 'EOF'
gdrive:
  credentials_path: ~/gdrive-credentials.json
  folder_name: Bible Presentations

pdf:
  backend: auto
  quality: high

defaults:
  auto_convert_pdf: false
  auto_upload_gdrive: false
EOF

YAML Benefits:

  • โœ… No quotes needed for most values
  • โœ… No commas or brackets
  • โœ… Clean, readable format
  • โœ… Easy to comment with #
  • โœ… Indentation-based (like Python)

Python API with Configuration

from praisonaippt import create_presentation, load_config
from praisonaippt.gdrive_uploader import upload_to_gdrive

# Load configuration
config = load_config()

# Create presentation
data = load_verses_from_file("verses.json")
output = create_presentation(data)

# Upload using config credentials
if config.get_gdrive_credentials():
    result = upload_to_gdrive(
        output,
        credentials_path=config.get_gdrive_credentials(),
        folder_name=config.get_gdrive_folder_name()
    )
    print(f"Uploaded: {result['webViewLink']}")

Configuration Examples

Example 1: Google Drive Only

gdrive:
  credentials_path: ~/secrets/gdrive-creds.json
  folder_name: Church Presentations

Example 2: Auto-Convert to PDF

pdf:
  backend: libreoffice
  quality: high
  compression: false

defaults:
  auto_convert_pdf: true

Example 3: Complete Automation

gdrive:
  credentials_path: ~/gdrive-credentials.json
  folder_name: Bible Study

pdf:
  backend: auto
  quality: high

defaults:
  auto_convert_pdf: true
  auto_upload_gdrive: true

Example 4: With Date-Based Folders

gdrive:
  credentials_path: ~/.praisonaippt/gdrive-credentials.json
  folder_name: Bible Presentations
  use_date_folders: true    # Creates subfolders like 2024/12
  date_format: YYYY/MM      # Format: YYYY/MM, YYYY-MM, YYYY/MM/DD, etc.

defaults:
  auto_upload_gdrive: true

Result: Files uploaded to Bible Presentations/2024/12/presentation.pptx

Example 5: With Comments (YAML supports comments!)

# Google Drive Settings
gdrive:
  credentials_path: ~/gdrive-credentials.json  # Path to service account JSON
  folder_name: Bible Presentations             # Auto-creates if doesn't exist
  use_date_folders: false                      # Set to true for date organization
  date_format: YYYY/MM                         # Date folder pattern (YYYY/MM, YYYY/MM/DD, etc.)

# PDF Settings
pdf:
  backend: auto      # Options: aspose, libreoffice, auto
  quality: high      # Options: low, medium, high
  compression: true  # Reduce file size

# Automation
defaults:
  auto_convert_pdf: false     # Set to true for automatic PDF conversion
  auto_upload_gdrive: false   # Set to true for automatic upload

With this config, just run:

praisonaippt -i verses.json
# Automatically creates PPTX, converts to PDF, and uploads to Google Drive!

Benefits of Configuration

โœ… No Repetition - Set credentials once, use everywhere
โœ… Faster Commands - Less typing, fewer arguments
โœ… Consistent Settings - Same quality/backend every time
โœ… Secure - Credentials stored in home directory (not in commands)
โœ… Flexible - Override config with CLI args when needed


๐Ÿš€ Quick Command Reference

# Setup
praisonaippt config init              # Initialize configuration
praisonaippt setup-oauth              # Setup OAuth (personal Drive)
praisonaippt setup-credentials        # Setup service account
praisonaippt secure-credentials       # Secure credential files

# Create Presentations
praisonaippt -i verses.json           # Create from JSON/YAML
praisonaippt --use-example verses     # Use built-in example
praisonaippt --list-examples          # List available examples

# With Features
praisonaippt -i verses.json --convert-pdf              # Create + PDF
praisonaippt -i verses.json --upload-gdrive            # Create + Upload
praisonaippt -i verses.json --convert-pdf --upload-gdrive  # All features

# Configuration
praisonaippt config show              # Show current config
praisonaippt --config-show            # Alternative syntax

# Convert Existing
praisonaippt convert-pdf input.pptx   # Convert PPTX to PDF

๐Ÿ“– Usage Guide

File Format (JSON or YAML)

YAML Format (Recommended! ๐Ÿ“„)

YAML is more user-friendly and easier to edit:

presentation_title: Your Presentation Title
presentation_subtitle: Your Subtitle

sections:
  - section: Section Name
    verses:
      - reference: Book Chapter:Verse (Version)
        text: The actual verse text here.
        highlights:
          - word1
          - phrase to highlight
        large_text:
          special_word: 200  # Custom font size

JSON Format

Traditional JSON format is also supported:

{
  "presentation_title": "Your Presentation Title",
  "presentation_subtitle": "Your Subtitle",
  "sections": [
    {
      "section": "Section Name",
      "verses": [
        {
          "reference": "Book Chapter:Verse (Version)",
          "text": "The actual verse text here.",
          "highlights": ["word1", "phrase to highlight"],
          "large_text": {"special_word": 200}
        }
      ]
    }
  ]
}

Quick Start Template

# For YAML (recommended)
cp examples/template.yaml my_verses.yaml
nano my_verses.yaml
praisonaippt -i my_verses.yaml

# For JSON
cp examples/template.json my_verses.json
nano my_verses.json
praisonaippt -i my_verses.json

CLI Usage

Setup Commands

# Initialize configuration (interactive)
praisonaippt config init

# Show current configuration
praisonaippt config show

# Setup OAuth for personal Google Drive
praisonaippt setup-oauth

# Setup service account credentials
praisonaippt setup-credentials

# Secure credential files (move to ~/.praisonaippt and set permissions)
praisonaippt secure-credentials

Basic Commands

# Use default verses.json
praisonaippt

# Specify input file
praisonaippt -i my_verses.json
praisonaippt -i my_verses.yaml

# Specify output file
praisonaippt -i verses.json -o my_presentation.pptx

# Use custom title
praisonaippt -i verses.json -t "My Custom Title"

# Use built-in examples
praisonaippt --use-example tamil_verses

# List available examples
praisonaippt --list-examples

With PDF Conversion

# Create and convert to PDF in one step
praisonaippt -i verses.json --convert-pdf

# Convert existing PPTX to PDF
praisonaippt convert-pdf presentation.pptx

# With specific backend
praisonaippt -i verses.json --convert-pdf --pdf-backend aspose

# With custom options
praisonaippt -i verses.json --convert-pdf \
  --pdf-options '{"quality":"high","compression":true}'

With Google Drive Upload

# Upload to Google Drive
praisonaippt -i verses.json \
  --upload-gdrive \
  --gdrive-credentials credentials.json \
  --gdrive-folder-name "Presentations"

# Upload with date-based folders (e.g., Presentations/2024/12/)
praisonaippt -i verses.json \
  --upload-gdrive \
  --gdrive-credentials credentials.json \
  --gdrive-folder-name "Presentations" \
  --gdrive-date-folders

# Complete workflow: Create + PDF + Upload with date folders
praisonaippt -i verses.json \
  --convert-pdf \
  --upload-gdrive \
  --gdrive-credentials credentials.json \
  --gdrive-folder-name "Bible Study" \
  --gdrive-date-folders

Python API

Basic Usage

from praisonaippt import create_presentation, load_verses_from_file

# Load verses from file
data = load_verses_from_file("verses.json")

# Create presentation
if data:
    output_file = create_presentation(
        data,
        output_file="my_presentation.pptx",
        custom_title="My Custom Title"  # Optional
    )
    print(f"Created: {output_file}")

With PDF Conversion

from praisonaippt import (
    create_presentation,
    load_verses_from_file,
    convert_pptx_to_pdf,
    PDFOptions
)

# Method 1: Create and convert in one step
data = load_verses_from_file("verses.json")
result = create_presentation(
    data,
    output_file="my_presentation.pptx",
    convert_to_pdf=True
)
if isinstance(result, dict):
    print(f"PPTX: {result['pptx']}")
    print(f"PDF: {result['pdf']}")

# Method 2: Convert existing PPTX
pdf_file = convert_pptx_to_pdf("presentation.pptx", "output.pdf")

# Method 3: With advanced options
pdf_options = PDFOptions(
    quality='high',
    include_hidden_slides=True,
    compression=True
)
pdf_file = convert_pptx_to_pdf(
    "presentation.pptx",
    "output.pdf",
    options=pdf_options,
    backend='aspose'
)

With Google Drive Upload

from praisonaippt import create_presentation
from praisonaippt.gdrive_uploader import upload_to_gdrive, is_gdrive_available

# Create presentation
output = create_presentation(data)

# Basic upload
if is_gdrive_available():
    result = upload_to_gdrive(
        output,
        credentials_path='credentials.json',
        folder_name='Presentations'
    )
    print(f"Uploaded: {result['webViewLink']}")

# Upload with date-based folders (e.g., Presentations/2024/12/)
if is_gdrive_available():
    result = upload_to_gdrive(
        output,
        credentials_path='credentials.json',
        folder_name='Presentations',
        use_date_folders=True,
        date_format='YYYY/MM'  # Default format
    )
    print(f"Uploaded to date folder: {result['webViewLink']}")

Using Built-in Examples

from praisonaippt import create_presentation
from praisonaippt.loader import get_example_path, load_verses_from_file, list_examples

# List available examples
examples = list_examples()
for example in examples:
    print(f"- {example}")

# Use an example
example_path = get_example_path("tamil_verses")
data = load_verses_from_file(example_path)
create_presentation(data, output_file="tamil_presentation.pptx")

๐ŸŽฏ Advanced Features

PDF Conversion

Convert your presentations to PDF with multiple backend options.

Backends

Backend Quality Cost Dependencies Best For
Aspose.Slides Excellent Commercial Python package Professional quality
LibreOffice Good Free LibreOffice install Free option
Auto Varies Varies Auto-detected Convenience

Quality Settings

  • "low": Smaller file size, basic quality
  • "medium": Balanced file size and quality
  • "high": Best quality, larger file size

Advanced Examples

# High quality PDF (no compression)
praisonaippt -i verses.json --convert-pdf \
  --pdf-options '{"quality":"high","compression":false}'

# Password-protected PDF
praisonaippt -i verses.json --convert-pdf \
  --pdf-options '{"password_protect":true,"password":"secret123"}'

# Export specific slides
praisonaippt convert-pdf presentation.pptx \
  --pdf-options '{"slide_range":[1,5]}'

# PDF/A compliance (archival)
praisonaippt convert-pdf presentation.pptx \
  --pdf-options '{"compliance":"PDF/A"}'

Google Drive Upload

Upload presentations directly to Google Drive with service account authentication.

Features

  • Lazy Loading: Dependencies only loaded when needed
  • Service Account Authentication: Secure authentication
  • Folder Management: Upload to specific folders or create new ones
  • Seamless Integration: Works with PDF conversion

Quick Setup

  1. Install dependencies:

    pip install praisonaippt[gdrive]
    
  2. Set up Google Drive credentials:

  3. Upload:

    praisonaippt -i verses.json \
      --upload-gdrive \
      --gdrive-credentials credentials.json \
      --gdrive-folder-name "Presentations"
    

Full Documentation: docs/google-drive-upload.md | QUICKSTART_GDRIVE.md

Text Highlighting

Highlight specific words or phrases in your verses.

Features

  • Add a highlights array to any verse (optional)
  • Highlighted text appears in bold orange color
  • Case-insensitive matching
  • Supports both single words and phrases

Example

{
  "reference": "John 3:16 (NIV)",
  "text": "For God so loved the world that he gave his one and only Son...",
  "highlights": ["loved", "eternal life"]
}

Large Text Feature

Set custom font sizes for specific words:

large_text:
  special_word: 200  # Custom font size in points

Perfect for emphasizing Hebrew/Greek words or key terms.

Full Documentation: docs/HIGHLIGHTS_FEATURE.md

Lazy Loading

Optional dependencies are loaded only when needed, providing:

  • Smaller Installation: Core package has minimal dependencies
  • Faster Startup: Only load what you use
  • No Import Errors: Package works without optional features
  • Clear Feedback: Helpful messages when features unavailable

Example

from praisonaippt.lazy_loader import check_optional_dependency

if check_optional_dependency('google.oauth2.service_account'):
    # Google Drive upload available
    from praisonaippt.gdrive_uploader import upload_to_gdrive
    upload_to_gdrive('file.pptx', credentials_path='creds.json')
else:
    print("Install with: pip install praisonaippt[gdrive]")

Full Documentation: docs/lazy-loading.md


๐Ÿ“š Complete Reference

Complete CLI Options

Global Options

Options:
  -h, --help            Show help message
  -v, --version         Show version number
  -i INPUT, --input INPUT
                        Input JSON/YAML file (default: verses.json)
  -o OUTPUT, --output OUTPUT
                        Output PowerPoint file (auto-generated if not specified)
  -t TITLE, --title TITLE
                        Custom presentation title (overrides JSON title)
  --use-example NAME    Use a built-in example file
  --list-examples       List all available example files

PDF Conversion Options

PDF Options:
  --convert-pdf         Convert the generated PowerPoint to PDF
  --pdf-backend {aspose,libreoffice,auto}
                        PDF conversion backend (default: auto)
  --pdf-options PDF_OPTIONS
                        PDF conversion options as JSON string
  --pdf-output PDF_OUTPUT
                        Custom PDF output filename

Google Drive Upload Options

Google Drive Options:
  --upload-gdrive       Upload the generated PowerPoint to Google Drive
  --gdrive-credentials PATH
                        Path to Google Drive service account credentials JSON file
  --gdrive-folder-id ID
                        Google Drive folder ID to upload to (optional)
  --gdrive-folder-name NAME
                        Google Drive folder name to search/create (optional)
  --gdrive-date-folders
                        Create date-based subfolders (e.g., 2024/12) within target folder

Configuration Options

Configuration:
  --config-init         Initialize configuration file interactively
  --config-show         Show current configuration

Setup Commands

Setup Commands:
  praisonaippt config init              Initialize configuration
  praisonaippt config show              Show current configuration
  praisonaippt setup-oauth              Setup OAuth for personal Google Drive
  praisonaippt setup-credentials        Setup service account credentials
  praisonaippt secure-credentials       Secure credential files with proper permissions

Convert-PDF Command Options

Convert-PDF Command:
  positional arguments:
    input_file            Input PPTX file to convert

  options:
    -h, --help            Show help message
    --pdf-backend {aspose,libreoffice,auto}
                        PDF conversion backend (default: auto)
    --pdf-options PDF_OPTIONS
                        PDF conversion options as JSON string
    --pdf-output PDF_OUTPUT
                        Custom PDF output filename

PDF Options Reference

Available Options

{
  "backend": "auto",                    // "aspose", "libreoffice", "auto"
  "quality": "high",                    // "low", "medium", "high"
  "include_hidden_slides": false,       // Include hidden slides in PDF
  "password_protect": false,            // Password protect PDF
  "password": null,                     // PDF password
  "compression": true,                  // Compress PDF images
  "notes_pages": false,                 // Include notes pages
  "slide_range": null,                  // [start, end] slide range
  "compliance": null                    // "PDF/A", "PDF/UA" compliance
}

Python API Reference

Core Functions

from praisonaippt import (
    create_presentation,      # Create PowerPoint presentation
    load_verses_from_file,    # Load verses from JSON/YAML file
    load_verses_from_dict,    # Load verses from dictionary
    convert_pptx_to_pdf,      # Convert PPTX to PDF
    PDFOptions,               # PDF configuration options
    lazy_import,              # Lazy import utility
    check_optional_dependency # Check if optional dependency is available
)

create_presentation()

create_presentation(
    data,                    # Verses data dictionary
    output_file=None,        # Output filename (auto-generated if None)
    custom_title=None,       # Custom presentation title
    convert_to_pdf=False,    # Convert to PDF
    pdf_options=None,        # PDFOptions instance
    pdf_backend='auto'       # PDF backend ('aspose', 'libreoffice', 'auto')
)

convert_pptx_to_pdf()

convert_pptx_to_pdf(
    pptx_file,              # Input PPTX file path
    pdf_file=None,          # Output PDF file path (auto-generated if None)
    backend='auto',         # Backend to use
    options=None            # PDFOptions instance
)

PDFOptions

PDFOptions(
    quality='high',                    # Quality setting
    include_hidden_slides=False,       # Include hidden slides
    password_protect=False,            # Password protect
    password=None,                     # Password
    compression=True,                  # Compress images
    notes_pages=False,                 # Include notes
    slide_range=None,                  # Slide range [start, end]
    compliance=None                    # Compliance standard
)

๐Ÿ’ก Examples

Example 1: Quick Start

# Install and use built-in example
pip install praisonaippt
praisonaippt --use-example verses

Example 2: Create from Template

# Copy template and customize
cp examples/template.json my_verses.json
nano my_verses.json
praisonaippt -i my_verses.json

Example 3: Custom Title

praisonaippt -i verses.json -t "God's Promises"

Example 4: Python Script

from praisonaippt import create_presentation, load_verses_from_file

# Load and create
data = load_verses_from_file("my_verses.json")
if data:
    create_presentation(data, output_file="output.pptx")

Example 5: With Text Highlighting

# Use the highlights example
praisonaippt --use-example highlights_example

# Or create your own
praisonaippt -i my_highlighted_verses.json

Example 6: Batch Processing

# Create multiple presentations with PDF
for file in *.json; do
  praisonaippt -i "$file" --convert-pdf
done

# Convert all PPTX files to PDF
for file in *.pptx; do
  praisonaippt convert-pdf "$file"
done

Example 7: Complete Workflow

# Create PPTX, convert to PDF, upload to Google Drive
praisonaippt -i verses.json \
  -t "Sunday Service - John 3:16" \
  --convert-pdf \
  --pdf-options '{"quality":"high"}' \
  --upload-gdrive \
  --gdrive-credentials ~/secrets/gdrive-credentials.json \
  --gdrive-folder-name "Bible Study"

๐Ÿ“Š Output

The package creates a PowerPoint presentation with:

  • Title Slide: Shows the presentation title and subtitle
  • Section Slides: One for each section in your JSON (skipped if using custom title)
  • Verse Slides: One slide per verse (or multiple if the verse is long)

Slide Formatting

  • Verse Text: 32pt, centered, black
  • Reference: 22pt, centered, gray, italic
  • Section Titles: 44pt, blue (#003366)
  • Layout: Professional blank layout with custom text boxes

Error Handling

  • โœ… Validates JSON file existence and format
  • โœ… Provides helpful error messages
  • โœ… Auto-generates output filename if not specified
  • โœ… Handles long verses by splitting them across multiple slides
  • โœ… Sanitizes filenames for cross-platform compatibility

๐Ÿ› Troubleshooting

Common Issues

1. "Command not found: praisonaippt"

Solution:

  • Make sure you installed the package: pip install praisonaippt
  • Check that your Python scripts directory is in PATH

2. "File not found" error

Solution:

  • Verify the JSON file exists
  • Use absolute path if needed: praisonaippt -i /full/path/to/verses.json

3. "Invalid JSON" error

Solution:

  • Validate your JSON syntax using a JSON validator
  • Ensure all quotes are properly closed
  • Check that commas are in the right places

4. Empty presentation

Solution:

  • Verify your JSON has a "sections" array
  • Check that verses array is not empty

5. Import errors

Solution:

  • Reinstall the package: pip install --force-reinstall praisonaippt
  • Check that python-pptx is installed: pip install python-pptx

6. PDF conversion fails

Solution:

  • For Aspose: pip install praisonaippt[pdf-aspose]
  • For LibreOffice: Install LibreOffice from libreoffice.org
  • Check backend with: praisonaippt convert-pdf --help

7. Google Drive upload not available

Solution:


๐Ÿ”ง Development

Project Structure

praisonaippt/
โ”œโ”€โ”€ praisonaippt/                 # Main package
โ”‚   โ”œโ”€โ”€ __init__.py              # Package initialization
โ”‚   โ”œโ”€โ”€ cli.py                   # Command-line interface
โ”‚   โ”œโ”€โ”€ core.py                  # Core presentation creation logic
โ”‚   โ”œโ”€โ”€ loader.py                # JSON/YAML loading utilities
โ”‚   โ”œโ”€โ”€ pdf_converter.py         # PDF conversion functionality
โ”‚   โ”œโ”€โ”€ gdrive_uploader.py       # Google Drive upload
โ”‚   โ”œโ”€โ”€ lazy_loader.py           # Lazy loading utilities
โ”‚   โ””โ”€โ”€ utils.py                 # Helper functions
โ”œโ”€โ”€ tests/                       # Test suite
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ test_pdf_conversion.py
โ”‚   โ””โ”€โ”€ test_lazy_loading.py
โ”œโ”€โ”€ examples/                    # Example files
โ”œโ”€โ”€ docs/                        # Documentation
โ”œโ”€โ”€ setup.py                     # Package setup
โ”œโ”€โ”€ pyproject.toml              # Modern Python config
โ”œโ”€โ”€ requirements.txt            # Dependencies
โ””โ”€โ”€ README.md                   # This file

Running Tests

# Install development dependencies
pip install -e .[dev]

# Run tests
pytest tests/

# Run specific test file
pytest tests/test_lazy_loading.py -v

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Test thoroughly
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

๐Ÿ’ก Tips

  • Keep verse text concise for better readability
  • Use consistent reference formatting (e.g., "Book Chapter:Verse (Version)")
  • Organize verses into logical sections
  • Test with a small JSON file first
  • Use the template file as a starting point
  • Check available examples with --list-examples
  • Long verses are automatically split across multiple slides
  • For PDF conversion, ensure Aspose.Slides or LibreOffice is installed
  • Use --pdf-backend auto for automatic backend detection
  • High quality PDFs create larger files but better visual quality
  • For Google Drive upload, set up service account credentials first
  • Use lazy loading to keep your installation lightweight

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments

  • Built with python-pptx
  • Inspired by the need for easy Bible verse presentation creation
  • Google Drive integration powered by Google Drive API
  • PDF conversion powered by Aspose.Slides and LibreOffice

๐Ÿ“ž Support

If you encounter any issues or have questions:

  1. Check the Troubleshooting section
  2. Review the documentation
  3. Check existing GitHub Issues
  4. Open a new issue with:
    • Clear description of the problem
    • Steps to reproduce
    • Expected vs actual behavior
    • System information (OS, Python version)

๐Ÿš€ Quick Reference Card

# Installation
pip install praisonaippt                    # Basic
pip install praisonaippt[gdrive]           # With Google Drive
pip install praisonaippt[all]              # Everything

# Basic Usage
praisonaippt                               # Use default verses.json
praisonaippt -i my_verses.json             # Custom input
praisonaippt -t "My Title"                 # Custom title
praisonaippt --use-example verses          # Use example

# PDF Conversion
praisonaippt -i verses.json --convert-pdf  # Create + convert
praisonaippt convert-pdf file.pptx         # Convert existing

# Google Drive Upload
praisonaippt -i verses.json \
  --upload-gdrive \
  --gdrive-credentials creds.json \
  --gdrive-folder-name "Folder"

# Help
praisonaippt --help                        # Show help
praisonaippt --version                     # Show version
praisonaippt --list-examples               # List examples

Made with โค๏ธ for creating beautiful Bible verse presentations

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

praisonaippt-1.4.1.tar.gz (187.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

praisonaippt-1.4.1-py3-none-any.whl (36.1 kB view details)

Uploaded Python 3

File details

Details for the file praisonaippt-1.4.1.tar.gz.

File metadata

  • Download URL: praisonaippt-1.4.1.tar.gz
  • Upload date:
  • Size: 187.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.22

File hashes

Hashes for praisonaippt-1.4.1.tar.gz
Algorithm Hash digest
SHA256 b054494793fa8c8cf9ac4d649e8c65609c08452b50f5721c86fd5e453c41c633
MD5 aaf90f15ca43306d44514bcdd41e1f7b
BLAKE2b-256 f69dc64be8475b1c88a56bec8bd06529353c33a5fe24e190b9a839fc436eb9b4

See more details on using hashes here.

File details

Details for the file praisonaippt-1.4.1-py3-none-any.whl.

File metadata

File hashes

Hashes for praisonaippt-1.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e5ad98c8496514bd50956647c07c6293f24a35b1b6f2694a92e08eb10938e99c
MD5 1af56820cd18667e59dfdd99281ca109
BLAKE2b-256 d32d1dd0f11848522a6490493ddf6d8dd0449a600a9cfa3216d59b83de095ff5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page