Microblogging for Pelican
Project description
A Pelican plugin providing “microblogging” capabilities.
Quickstart
Install the plugin via pip: pip install minchin.pelican.readers.microblogging
Generally, the plugin should be loaded and configured automatically without further effort on your part.
Create a micro folder in your content folder (to hold your micro blog posts!).
Create a new post in your micro folder. This can be generally be just the text (body) of your post. In terms of metadata, title is unneeded (and ignored), slug will be auto-generated (based on the post date), and date will determined from the file creation datetime of the post file. If you provide the date, it must be on the first line, in key: value format. The text body will be read as Markdown (so plain text effectively works too)!
Regenerate your Pelican site!
Sample (Micro) Post File
<!-- ./content/micro/202307091701.md -->
date: 2023-07-09 17:01
I'm microblogging with Pelican!
https://blog.minchin.ca/label/microblogging-pelican
Or a post with an image:
<!-- ./content/micro/202307112138.md -->
date: 2023-07-11 21:38
image: images/birger-strahl-olI66vtMgNo-unsplash.jpg
Microblog posts can have "feature" images too! (URL of photo should
automatically be added.)
The image path is relative to your content folder. A URL of the photo is added to the end of the post as well.
Or with tags (or hashtags):
<!-- ./content/micro/202307131456.md -->
date: 2023-07-13 14:56
tags: Python, Pelican, Microblogging
I'm now Microblogging with Pelican!
This will add links at the end of your post to the tags to the tag page for your (Pelican) site.
For now, it does not pull tags out of the body of your post.
Background Notes (on Micro Blogging)
Microblogging is here considered to be blog posts, but very short in length.
The most common example is Twitter, with an original limit of 140 characters (to be less than the SMS max of 160 characters). Twitter has since doubled their limit to 280 characters. The default on Mastodon is 500 characters, the same as (newly released) Threads. (Note that on Twitter, all links are run through a shortener and so are considered 23 characters long.) Here, the default soft limit is 140 characters. You can choose to ignore that, or set a higher limit (via MICROBLOG_MAX_LENGTH), but there are certain assumptions about presentation that start to fail as the posts get longer….
Installation
The easiest way to installed Microblogging is through pip:
pip install minchin.pelican.reader.microblog
Requirements
Microblogging relies on Pelican, and the autoloader plugin (for autoloading). If this plugin is installed from PyPI, these should automatically be installed.
if you need to insrall them manually:
pip install pelican
pip install minchin.pelican.plugins.autoloader
Pelican Settings
These settings can be set in your pelicanconf.py file (your Pelican settings file) to alter the behavior of the plugin.
If a value is given below, this represents the effective default value. If no value is given, the effective default value is None.
Microblogging also auto-configures itself when possible. If you need to manually create the default configuration, you would need the following:
# pelicanconf.py
# if PLUGINS is not defined on Pelican 4.5+, these plugins will autoload
PLUGINS = [
"minchin.pelican.readers.microblog",
# others, as desired...
]
# the rest of the your configuration file...
This documentation has to be manually updated. If the settings no longer match the plugin’s behavior, or a setting is missing from here, please open a ticket on GitHub.
- ARTICLE_ORDER_BY = “reverse-date”
Sorting order for micro blog posts (also used for sorting posts generally); micro posts will be sorted among all posts. (Regular Pelican setting)
- AUTHOR
Default author for micro blog posts. Can be overwritten by the metadata at the top of individual posts. (Regular Pelican setting; you don’t have to supply an author.)
- MICROBLOG_APPEND_HASHTAGS = True
Tags gets appended at the end of the micro blog post as hashtags. #taggedyou Tags have the CSS class .microblog-post-tag applied, if you want to conditionally control their display or formatting.
- MICROBLOG_CATEGORY = “µ”
Default category for your micro blog posts. It could be overwritten by the metadata on top of individual posts.
Note that Pelican will render the slug (used in URLs) for this default as m.
- MICROBLOG_FOLDER = “micro”
Folder containing your micro blog posts, relative to your content root folder.
- MICROBLOG_MAX_LENGTH = 140
How long should your micro blog posts be limited to. Pelican will emit a warning if you exceed this.
- MICROBLOG_SAVE_AS = ARTICLE_SAVE_AS
What to save the micro blog posts output file as. Defaults to using the same file structure as you are using for articles (aka “regular” posts). c.f. MICROBLOG_URL.
- MICROBLOG_SLUG = “u{date:%Y%m%d%H%M}”
The slug that will be used for micro blog posts. Eg. u202307091701.
Note that Pelican expects slugs to be universally unique.
- MICROBLOG_URL = ARTICLE_URL
What URL to post the micro blog posts to. Defaults to using the same URL structure as you are using for articles (aka “regular” posts). c.f. MICROBLOG_SAVE_AS.
Integration with Themes
For best support, you will need to modify your theme, or select a theme that already supports Microblogging, like my seafoam.
Some helpful notes:
Microblog posts are considered Articles by Pelican, and will be included in the articles and dates “lists” provided by the templating engine.
Microblog posts all have article.micro = True.
Microblog posts are added to the µ category (by default).
Generally, you’ll want to disregard and not show the title of the microblog post. The title is set to the slug.
Because of their short length, it may make sense to display the whole body (article.content) in places that a link via the title of the article is typically shown.
Appended tags have the CSS class .microblog-post-tag applied.
Appended links to featured images have the CSS class .microblog-post-image applied.
Changelog
Roadmap
These are features that I would like to eventually add to the plugin (and the issues I’m using to track their progress):
Issue 1 – count links as 23 characters (Ã la Twitter)
Issue 2 – process ReST microblog posts
Issue 3 – CLI command to create microposts
Issue 4 – add link previews
Issue 5 – show (if applicable) that this is a reply to something (or a “re-tweet”)
Issue 6 – show replies to each post (borrow the comment setup?)
Issue 7 – automatically add hashtags as (Pelican) tags
Pull Requests to implement any of these are welcomed!
Known Issues
Processing relies on Pelican’s built-in Markdown reader.
The length of links to featured images will change if the SITE_URL changes. This can mean that the microblog post is “short” enough when reviewing your site locally, but not when the site is generated for publication.
microposts seem to mess up the ordering of the articles list passed to the templating engine. Use dates instead (which is sorted by date)? – Issue 8
linking to internal content from microposts (i.e. {filename}../regular-post.md) crashes Pelican – Issue 9
relies on str.removesuffix(), which means this only supports Python 3.9 or better.
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
Built Distribution
File details
Details for the file minchin_pelican_readers_microblog-1.3.0.tar.gz
.
File metadata
- Download URL: minchin_pelican_readers_microblog-1.3.0.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2bdb29ea0583d92da03747507621e11a325d566144b8fd1533b331f43db9531c |
|
MD5 | b7545e1d76f2af54f3e6f7315c235109 |
|
BLAKE2b-256 | 156f3551d3ee60332304d6246863edc948e76c4ef8194704fd098fe9e826f916 |
File details
Details for the file minchin.pelican.readers.microblog-1.3.0-py3-none-any.whl
.
File metadata
- Download URL: minchin.pelican.readers.microblog-1.3.0-py3-none-any.whl
- Upload date:
- Size: 47.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 998513c042c8e850a3065b66b9a020203bc8beb18a2cc2abbac3b83fd52b0fd6 |
|
MD5 | eafe5ff6ba57ccf3dffaaa8e18c81197 |
|
BLAKE2b-256 | 02652b624546774883702357336405455248c66421bba4e57707884b620aeb05 |