omglol
Python client and CLI for the omg.lol API — weblog, pastebin, statuslog, PURLs, DNS, /now page, and more.
Setup
uv sync
cp .env.example .env # add your API key and address
Get your API key at home.omg.lol/account.
CLI
After uv sync, the omglol command is available:
# Publish markdown files to your weblog
omglol post article.md draft.md
# List weblog posts
omglol posts list
# Get a specific post
omglol posts get my-post-slug
# Delete a post
omglol posts delete my-post-slug
# Manage pastes
omglol paste list
omglol paste create my-note "Some content here"
omglol paste get my-note
omglol paste delete my-note
# Post and list statuses
omglol status post "Working on something cool"
omglol status post "Celebrating!" --emoji "🎉"
omglol status list
# Manage PURLs (persistent redirects)
omglol purl list
omglol purl create gh https://github.com/you
omglol purl delete gh
# /now page
omglol now get
omglol now update "Currently learning Rust"
# DNS records
omglol dns list
omglol dns create CNAME www example.com
omglol dns delete <record-id>
# Web page / profile
omglol web get
omglol web update "<h1>Hello</h1>"
omglol web update - < page.html # read from stdin
# Email forwarding
omglol email get
omglol email set me@example.com
# Profile picture
omglol pfp avatar.png
# Account info
omglol info
Dry run
Preview what would be sent without making changes:
omglol --dry-run post article.md
omglol --dry-run status post "Test"
omglol --dry-run dns create A @ 1.2.3.4
Library
from omglol import OmgLol
client = OmgLol(api_key="your_key", address="yourname")
# Weblog
client.post_markdown("my-post.md")
client.create_post(title="Hello World", content="This is my post.")
for post in client.list_posts():
print(post.title, post.location)
client.delete_post("my-post-slug")
# Pastebin
client.create_paste("notes", "Some text")
for paste in client.list_pastes():
print(paste.title)
# Statuslog
client.post_status("Hello from the API!", emoji="🎉")
for status in client.list_statuses():
print(status.emoji, status.content)
# PURLs
client.create_purl("gh", "https://github.com/you")
for purl in client.list_purls():
print(f"{purl.name} → {purl.url}")
# /now page
now = client.get_now()
print(now.content)
client.update_now("Currently building things")
# DNS
for rec in client.list_dns_records():
print(f"{rec.record_type} {rec.name} → {rec.data}")
client.create_dns_record("CNAME", "www", "example.com")
# Web page / profile
client.update_web("<h1>My page</h1>")
# Email forwarding
client.set_email_forwarding("me@example.com")
# Profile picture
client.upload_pfp("avatar.png")
# Account
info = client.get_address_info()
All list/get methods return typed dataclasses (Post, Paste, Status, Purl, DnsRecord, NowPage) instead of raw dicts.
Markdown frontmatter
Weblog posts can include optional frontmatter:
---
title: My Post Title
date: 2026-03-14 12:00
slug: custom-slug
---
Body content here...
If no frontmatter is present, the first # Heading is used as the title.
Environment variables
| Variable | Description |
|---|---|
OMGLOL_API_KEY |
Your omg.lol API key |
OMGLOL_ADDRESS |
Your omg.lol address (e.g. olivier) |
Development
uv sync
uv run pytest -v
License
MIT
Metadata
Release files for omglol-api 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| omglol_api-0.1.0.tar.gz | 36.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| omglol_api-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 46.7 kB
Release files / omglol_api-0.1.0.tar.gz
| Download URL | omglol_api-0.1.0.tar.gz |
|---|---|
| Size | 36.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
391a905d2bd265605ecd2cf51de1251f48642d15cc01897dea1c47fd0fe1b3b0
|
|
BLAKE2b-256 checksum How to use checksums |
70c723b769afdd1fd245c167a0e130e8090cc9da02036b42ce94972490a2b9c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.1
|
Release files / omglol_api-0.1.0-py3-none-any.whl
| Download URL | omglol_api-0.1.0-py3-none-any.whl |
|---|---|
| Size | 10.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
29e51723d4deec478392f5f0a020a8fd130eb0f0e20538564c5e9e93e9b128cd
|
|
BLAKE2b-256 checksum How to use checksums |
0e4ec74237352080d89f23b903512d79fd3607d4320dcf3013064538c109fe87
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.1
|