Skip to main content

A toolkit for interacting with the Google Blogger API

Project description

Bloggerkit

A Python toolkit for interacting with the Google Blogger API with simplified authentication and enhanced features.

โœจ What's New in v0.7.0

๐Ÿ”ง Environment Variable Support - No more manual credentials.json management!
๐Ÿš€ Auto-generated Credentials - Automatically creates credentials from environment variables
๐Ÿ”„ Full Backward Compatibility - All existing code continues to work unchanged
๐Ÿ“ Enhanced Post Features - Added labels and is_draft parameters
๐Ÿ’ฌ Improved User Experience - Better error messages and helpful logging

๐Ÿ“ฆ Installation

pip install bloggerkit

๐Ÿš€ Quick Start

Method 1: Environment Variables (Recommended)

  1. Set up Google Cloud Console:

    • Go to Google Cloud Console
    • Create a new project or select existing one
    • Enable the Blogger API
    • Go to APIs & Services โ†’ Credentials
    • Create OAuth 2.0 Client ID (Desktop Application)
    • Copy the Client ID and Client Secret
  2. Set environment variables:

    # Add to your .env file or export directly
    export GOOGLE_CLIENT_ID="your_client_id_here"
    export GOOGLE_CLIENT_SECRET="your_client_secret_here"
    export BLOG_ID="your_blog_id_here"
    
  3. Use bloggerkit:

    from bloggerkit.client import BloggerClient
    
    # Simple initialization - uses environment variables automatically
    client = BloggerClient("your_blog_id")
    
    # Create a post
    post = client.create_post(
        title="My First Post",
        content="<p>Hello World!</p>",
        labels=["python", "blogging"],
        is_draft=False
    )
    print(f"โœ… Post created: {post['url']}")
    

Method 2: Traditional credentials.json (Still Supported)

from bloggerkit.client import BloggerClient

client = BloggerClient(
    blog_id="your_blog_id",
    client_secrets_file="path/to/credentials.json"
)

Method 3: Direct Parameters

from bloggerkit.client import BloggerClient

client = BloggerClient(
    blog_id="your_blog_id",
    client_id="your_client_id",
    client_secret="your_client_secret"
)

๐Ÿ“– Usage Examples

List Posts

posts = client.list_posts()
if posts:
    for post in posts.items:
        print(f"๐Ÿ“„ {post.title}: {post.url}")

Create a Post

# Basic post
new_post = client.create_post(
    title="My New Post",
    content="<p>This is my new blog post content.</p>"
)

# Advanced post with labels and draft mode
draft_post = client.create_post(
    title="Draft Post",
    content="<p>This is a draft post.</p>",
    labels=["draft", "work-in-progress"],
    is_draft=True
)

Get a Specific Post

post = client.get_post("POST_ID")
if post:
    print(f"๐Ÿ“– Title: {post.title}")
    print(f"๐Ÿ”— URL: {post.url}")
    print(f"๐Ÿท๏ธ Labels: {post.labels}")

Update a Post

updated_post = client.update_post(
    post_id="POST_ID",
    title="Updated Title",
    content="<p>Updated content goes here.</p>",
    labels=["updated", "python"]
)

Delete a Post

client.delete_post("POST_ID")
print("๐Ÿ—‘๏ธ Post deleted successfully!")

๐Ÿ” Authentication Flow

  1. First Run: Browser opens for Google OAuth authentication
  2. Token Storage: Creates token.json for future automatic authentication
  3. Auto-refresh: Automatically refreshes expired tokens
  4. Seamless Experience: No manual intervention needed after initial setup

๐Ÿ”ง Configuration Priority

bloggerkit uses the following priority order for authentication:

  1. Direct Parameters (client_id, client_secret)
  2. Environment Variables (GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET)
  3. Credentials File (client_secrets_file)

๐Ÿท๏ธ API Reference

BloggerClient

BloggerClient(
    blog_id: str,
    client_secrets_file: str = None,
    client_id: str = None,
    client_secret: str = None
)

Methods

Method Description Parameters
list_posts() Get all posts None
create_post() Create new post title, content, labels=None, is_draft=False
get_post() Get specific post post_id
update_post() Update existing post post_id, title, content, labels=None
delete_post() Delete post post_id

๐Ÿ”„ Migration Guide

From v0.6.x to v0.7.0

No changes required! Your existing code works exactly the same:

# This still works perfectly
client = BloggerClient(blog_id, client_secrets_file)

Optional enhancement - Simplify with environment variables:

# Before (v0.6.x)
client = BloggerClient("blog_id", "credentials.json")

# After (v0.7.0) - Optional improvement
os.environ['GOOGLE_CLIENT_ID'] = 'your_id'
os.environ['GOOGLE_CLIENT_SECRET'] = 'your_secret'
client = BloggerClient("blog_id")  # Much cleaner!

๐Ÿ› ๏ธ Development Setup

git clone https://github.com/StatPan/bloggerkit.git
cd bloggerkit
pip install -e .

๐Ÿ“‹ Requirements

  • Python 3.10+
  • Google Blogger API access
  • OAuth 2.0 credentials

๐Ÿค Contributing

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

๐Ÿ“ Change Log

See changelog.md for detailed version history.

๐Ÿ“„ License

This project is licensed under the MIT License.

๐Ÿ†˜ Support


Happy Blogging! ๐Ÿš€๐Ÿ“

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

bloggerkit-0.7.0.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

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

bloggerkit-0.7.0-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file bloggerkit-0.7.0.tar.gz.

File metadata

  • Download URL: bloggerkit-0.7.0.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.2

File hashes

Hashes for bloggerkit-0.7.0.tar.gz
Algorithm Hash digest
SHA256 8dcfa38731644ad7584722f28cf8d5c570d4cd1ad3455433c4f352bb5c970410
MD5 9f130a7d995b2387a73aab0cbd05afa7
BLAKE2b-256 0879d274db5814922880526bcc6392b3399862ec6cd3cadbaa14cf4f88753a97

See more details on using hashes here.

File details

Details for the file bloggerkit-0.7.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bloggerkit-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1fcfbf23296f396634b97881727966a8f500ecb8a2ef2cdad36462c200179741
MD5 1d2b5d593e91c0c8917d4aa6ac66debf
BLAKE2b-256 db337f3c8089d7c09a3be8939f41681d3d61e9903cf3d2aa7ae77fe77ab08653

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