DevPlace XML-RPC examples

Runnable Python examples for the DevPlace XML-RPC bridge (/xmlrpc). They use only the standard library (xmlrpc.client); no dependencies to install. Full reference: /docs/xmlrpc.html.

Files

File What it does
client.py Reusable DevPlace wrapper: credential injection, all three auth styles, dotted-name calls, introspection helpers. Imported by the others.
introspect.py Prints every available method with its help text. Needs no credentials.
recipes.py Post, reply, vote, react, follow, message, and paginate the feed.
mention_bot.py A bot that polls notifications and replies once to every @mention.
chatbot.py An interactive chat bot over direct messages: polls the inbox, answers commands (help, feed, echo, whoami), and replies.
ai_chatbot.py An AI-powered DM bot: message I/O over XML-RPC, replies generated by the DevPlace AI gateway, with per-user history.
dm_client.py A two-way terminal chat client: send and receive direct messages with one user live.
feed_watch.py Live feed ticker: prints new posts as they appear, optionally auto-upvotes posts matching keywords.
digest.py Builds a digest of the latest posts, top members, and developer news; prints it or posts it.
gist_backup.py Downloads all your gists to local files named by language.
deploy_project.py Pushes a local directory into a new DevPlace project's virtual filesystem.
rss_to_posts.py Polls an RSS/Atom feed and creates a post for each new entry.
export_data.py Exports your profile, posts, gists, projects, bookmarks, and notifications to one JSON file.

Configuration

The scripts read their settings from environment variables:

Variable Default Purpose
DEVPLACE_URL https://devplace.net Full base URL of the DevPlace instance (scheme + host, no path)
DEVPLACE_API_KEY YOUR_API_KEY Your API key (from your profile page)
DEVPLACE_POLL_SECONDS varies Poll interval for the bots/watchers
DEVPLACE_REPLY (a default) Mention bot reply text

DEVPLACE_URL defaults to https://devplace.net, so you only need to set DEVPLACE_API_KEY to run the authenticated examples against the public instance.

Run

# discover the API (no credentials needed)
python introspect.py

# run the automation recipes
DEVPLACE_API_KEY=xxxx python recipes.py

# run the mention bot (loops forever)
DEVPLACE_API_KEY=xxxx python mention_bot.py

# run the direct-message chat bot (loops forever, answers commands)
DEVPLACE_API_KEY=xxxx python chatbot.py

# open a two-way terminal chat with one user
DEVPLACE_API_KEY=xxxx python dm_client.py alice

# AI-powered DM bot (replies via the DevPlace AI gateway)
DEVPLACE_API_KEY=xxxx python ai_chatbot.py

# watch the feed live and auto-upvote posts mentioning "rust" or "python"
DEVPLACE_API_KEY=xxxx DEVPLACE_UPVOTE_KEYWORDS=rust,python python feed_watch.py

# build a digest and post it to the feed
DEVPLACE_API_KEY=xxxx DEVPLACE_DIGEST_POST=1 python digest.py

# back up every gist to ./gists_backup/
DEVPLACE_API_KEY=xxxx python gist_backup.py

# deploy a local folder as a new project
DEVPLACE_API_KEY=xxxx python deploy_project.py ./my-app "My App"

# mirror an RSS feed into posts
DEVPLACE_API_KEY=xxxx DEVPLACE_RSS_URL=https://example.com/feed.xml python rss_to_posts.py

# export all your data to JSON
DEVPLACE_API_KEY=xxxx python export_data.py alice

To run against a local dev server, point DEVPLACE_URL at it:

DEVPLACE_URL=http://localhost:10500 DEVPLACE_API_KEY=xxxx python recipes.py

Authentication

client.py supports all three methods documented at /docs/xmlrpc.html:

from client import DevPlace

# 1. API key (sent inside each call's parameter struct)
dp = DevPlace("https://devplace.net", api_key="YOUR_API_KEY")

# 2. Username and password (HTTP Basic via a credentialed URL)
dp = DevPlace("https://devplace.net", username="alice", password="secret123")

To authenticate with the API key as an HTTP header instead, see the ApiKeyTransport example in /docs/xmlrpc.html.

..
ai_chatbot.py
chatbot.py
client.py
deploy_project.py
digest.py
dm_client.py
export_data.py
feed_watch.py
gist_backup.py
introspect.py
mention_bot.py
README.md
recipes.py
rss_to_posts.py