ready for try

This commit is contained in:
2025-07-29 20:16:11 -04:00
parent 29001b02a5
commit 18a82711cb
33 changed files with 7446 additions and 47 deletions

170
examples/basic_usage.py Normal file
View File

@@ -0,0 +1,170 @@
#!/usr/bin/env python3
"""
Basic usage examples for the Wiki.js Python SDK.
This script demonstrates fundamental operations like connecting,
listing pages, and basic CRUD operations.
"""
import os
from wikijs import WikiJSClient
from wikijs.models import PageCreate, PageUpdate
from wikijs.exceptions import APIError, AuthenticationError
def main():
"""Run basic usage examples."""
# Get configuration from environment variables
base_url = os.getenv("WIKIJS_URL", "https://wiki.example.com")
api_key = os.getenv("WIKIJS_API_KEY", "your-api-key-here")
print("🚀 Wiki.js Python SDK - Basic Usage Examples")
print("=" * 50)
# Initialize the client
print(f"📡 Connecting to {base_url}...")
try:
with WikiJSClient(base_url=base_url, auth=api_key) as client:
# Test connection
print("🔍 Testing connection...")
if client.test_connection():
print("✅ Connected successfully!")
else:
print("❌ Connection failed!")
return
# Example 1: List all pages
print("\n📚 Example 1: Listing Pages")
print("-" * 30)
pages = client.pages.list(limit=5)
print(f"Found {len(pages)} pages (showing first 5):")
for page in pages:
print(f"{page.title} (ID: {page.id}, Path: /{page.path})")
# Example 2: Search for pages
print("\n🔍 Example 2: Searching Pages")
print("-" * 30)
search_results = client.pages.search("guide", limit=3)
print(f"Found {len(search_results)} pages matching 'guide':")
for page in search_results:
print(f"{page.title}")
print(f" Words: {page.word_count}, Reading time: {page.reading_time}min")
# Example 3: Get a specific page
if pages:
print(f"\n📄 Example 3: Getting Page Details")
print("-" * 30)
first_page = pages[0]
page_details = client.pages.get(first_page.id)
print(f"Title: {page_details.title}")
print(f"Path: /{page_details.path}")
print(f"Published: {page_details.is_published}")
print(f"Tags: {', '.join(page_details.tags) if page_details.tags else 'None'}")
print(f"Content preview: {page_details.content[:100]}...")
# Show headings if available
headings = page_details.extract_headings()
if headings:
print(f"Headings: {', '.join(headings[:3])}")
# Example 4: Create a new page
print(f"\n✏️ Example 4: Creating a New Page")
print("-" * 30)
new_page_data = PageCreate(
title="SDK Example Page",
path="sdk-example-page",
content="""# SDK Example Page
This page was created using the Wiki.js Python SDK!
## Features Demonstrated
- Page creation via API
- Markdown content support
- Tag assignment
- Metadata handling
## Next Steps
Try updating this page using the SDK's update functionality.
""",
description="A demonstration page created by the Python SDK",
tags=["sdk", "example", "python", "demo"],
is_published=True,
editor="markdown"
)
try:
created_page = client.pages.create(new_page_data)
print(f"✅ Created page: {created_page.title} (ID: {created_page.id})")
# Example 5: Update the created page
print(f"\n🔄 Example 5: Updating the Page")
print("-" * 30)
update_data = PageUpdate(
content=created_page.content + "\n\n## Update Log\n\n- Page updated via SDK!",
tags=created_page.tags + ["updated"]
)
updated_page = client.pages.update(created_page.id, update_data)
print(f"✅ Updated page: {updated_page.title}")
print(f" New tag count: {len(updated_page.tags)}")
# Example 6: Get page by path
print(f"\n🔍 Example 6: Getting Page by Path")
print("-" * 30)
page_by_path = client.pages.get_by_path("sdk-example-page")
print(f"Retrieved page: {page_by_path.title}")
print(f"Same page? {page_by_path.id == created_page.id}")
# Cleanup: Delete the created page
print(f"\n🗑️ Cleaning up: Deleting the example page")
print("-" * 30)
if client.pages.delete(created_page.id):
print("✅ Example page deleted successfully")
else:
print("❌ Failed to delete example page")
except APIError as e:
print(f"❌ Failed to create page: {e}")
# Example 7: Working with tags
print(f"\n🏷️ Example 7: Working with Tags")
print("-" * 30)
# Find pages with specific tags
tagged_pages = client.pages.get_by_tags(["tutorial"], limit=3)
print(f"Found {len(tagged_pages)} pages with 'tutorial' tag:")
for page in tagged_pages:
print(f"{page.title}")
print(f" All tags: {', '.join(page.tags)}")
print(f"\n✨ All examples completed successfully!")
except AuthenticationError:
print("❌ Authentication failed!")
print("💡 Please check your API key and permissions")
except Exception as e:
print(f"❌ Unexpected error: {e}")
if __name__ == "__main__":
print("💡 Before running this example:")
print(" export WIKIJS_URL='https://your-wiki.example.com'")
print(" export WIKIJS_API_KEY='your-api-key'")
print()
main()