CHARM - A cross-platform blogging client for Python
Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007,2008, 2009, 2010, 2011, 2012, 2013
Lydia Leong (evilhat @ livejournal.com)
Open Source: GNU Public License
Charm is a cross-platform blogging client for:
Download Charm now!
(Version 1.9.2: March 27th, 2013)
You can also download old versions:
Release notes (and a changelog) are also available.
More information can be found on Charm's
News, updates, and support can be obtained through the
Why should you use Charm?
- Charm is an entirely text-based client. Consequently, its system and
hardware requirements are negligible; you just need something that
supports the Python interpreter.
- Charm has equal facility across a broad spectrum of blogging platforms.
It has full-fledged support for LiveJournal-based sites, but it also
supports the Atom API (for Blogger) and the MetaWeb API (for Wordpress,
Movable Type, and so on). Atom support requires that you have the
Feedparse module from http://feedparser.org/ installed.
- Charm contains four major utilities in a single client: menu-driven
posting/editing, "quick" command-line posting, archival, and
- Normal, menu-driven mode. Charm uses menus of single-letter commands,
and is thus easy to use. There's a full array of post and edit options.
- "Quick" mode. Command-line-only, reading the body of the post from
stdin. This allows very fast posting for casual use. But it also
allows input to be piped to a post or taken from an arbitrary file,
for filter-like uses. Thus, you could take some text, pipe it to the
Enchefferizer (the "Swedish chef" text converter), or to a text-to-HTML
converter like Markdown or Textile, and that pipe that to Charm for
posting to your journal.
- Friends-checking tool. Background polling mode for friend updates,
displayed like the Unix 'newmail' utility. It can check all friends,
or just specific friend groups. Even if you don't use Charm for
anything else, you might find this useful.
- Mass archiving. This is part of Charm's menu-driven mode. You can
download and save part or all of your journal or a community. This
is another useful standalone feature, particularly since you can set
up your computer to automatically synchronize your offline archive
with your online journal on a nightly basis.
- Charm handles multiple usernames and shared journal access, including
handling profiles for non-LiveJournal accounts (like DeadJournal).
Passwords can optionally be stored/sent as a MD5 hash. It also has the
ability to quickly cross-post between multiple journals/blogs.
- Charm has a full set of features for editing and posting. Anything you
can do from the LiveJournal posting and editing Web pages, you can do
from Charm. Charm can also use an external spellchecker, and it can
invoke external filters to modify the message body.
- You can select moods, journals, picture keywords, friend groups, tags,
etc. from menus. Unlike other console-based clients, you don't have to
type these in; you just pick an option number from a menu.
- Charm supports XMMS-based music detection, if you have the PyXMMS
module from http://www.via.ecp.fr/~flo/ installed.
- You can save, and later resume working on, an entry-in-progress.
You can also save an entry while your computer is offline, and then
quickly post it when you get back online.
- You can set up templates, with default data in each of the fields, along
with a default message body.
- You can select online entries to edit in a flexible manner: most
recent, last N entries, and by date. Choosing entries by date brings up
a calendar of the chosen month, showing the number of posts each day.
- When you post something, there's an option to archive it; you can also
optionally archive edits made to posts already online. The archive
organization is configurable; you can put all posts in one directory,
use subdirectories for each year, and use subdirectories for each
month (under subdirectories for each year).
- Charm fully supports listing, adding, removing, and editing friends and
- Charm supports the LiveJournal administrative console commands, so
you can use it to manage community membership, manage posting access
to shared journals, and manage user bans.
- Charm respects Unix environment variables for default programs.
- Charm has proxy support. Python supports proxies transparently; just set
your HTTP_PROXY environment variable to proxyhost:portnumber.
Charm was written for Python 2.3 on a Unix system.
It should work with later versions of Python as well, and is intended to
work with Python 1.5 and 1.6 as well. (If you encounter problems that
seem version-specific, please email the author.)
Because Charm is written in Python, it should be reasonably cross-platform.
It should work on any Unix-based system (including Linux). It is likely to
work on Windows, and it will probably work on the Macintosh. (Again,
please email the author with portability problems.)
Of course, you will need to have Python installed on your machine.
See the Python home page to
download a copy of Python. (Linux users will probably have Python
Read the release notes for a
detailed historical change log.
- 1.0.0: November 24th, 2001
- 1.0.1: November 25th, 2001
Fixed some bugs related to editing in journals.
- 1.1.0: December 23rd, 2001
Support for checkfriends mode, multiple usernames, minor bugfixes, and more.
- 1.2.0: January 2nd, 2003
New checkfriends (friend updates) polling mode, friend group security,
- 1.2.1: January 27th, 2003
Charm is now Python 1.5.2-compatible as well.
- 1.3.0: January 29th, 2003
Charm now has command-line quick-posting capabilities, as well as archival
capabilities, as well as a number of other new features and improvements.
- 1.4.0: December 22nd, 2003
Charm now supports all posting options form the command line.
- 1.5.0: November 9th, 2004
New administrative console capabilities (friends management, community
management, shared journal management, ban management). XMMS music
detection. Support of newer LJ client protocol enhancements, such as
protocol version 1 (Unicode) and challenge/response authentication.
- 1.6.0: June 13th, 2005
Synchronization support (automatically download and archive entries),
friends group management, per-login journal site selection, comments
screening, spellchecking, manual and man pages.
evilhat @ livejournal.com // Created 11.25.2001 // Last Updated