Today we are going to dive into Pelican, and it's plugins :) We are going to make a plugin that will transform only a link into an HTML link with a description consisting of the page title.
S0-E23/E30 :)
Pelican Plugins
In this blog we have already created pelican-plugin, you can check pelican-plugin tag.
What type of signals pelican has to offer?
Well, that's the thing, they are not first-class documented things.
For making them a bit more available and easier to debug, I've created debug_pelican_signals repository at github that contains all signals which you can now connect to Pycharm or pdb and debug. The methods are visible at signalsdebugger.py of debug_pelican_signals repo.
Making a Pelican Link To Title
Now let's make a pelican link to title plugin that will convert all links into links with a title.
The plugin will be called 'Pelican Link to Title'. Its source code is available at github.
Code itself:
# -*- coding: utf-8 -*-
""" This is a main script for pelican_link_to_title """
from pelican import signals
from bs4 import BeautifulSoup
import urllib
def link_to_title_plugin(generator):
    "Link_to_Title plugin "
    article_ptags = {}
    for article in generator.articles:
        soup = BeautifulSoup(article._content, 'html.parser')
        p_tags = soup.find_all('ahref')
        for tag in p_tags:
            url_page = tag.string
            if url_page:
                if "http://" in url_page or "https://" in url_page:
                    tag.name = "a"
                    tag.string = read_page(url_page)
                    tag.attrs = {"href": url_page}
        article._content = str(soup).decode("utf-8")
def read_page(page):
    r = urllib.urlopen(page).read()
    soup = BeautifulSoup(r , "html.parser")
    return soup.find("title").string
def register():
    """ Registers Plugin """
    signals.article_generator_finalized.connect(link_to_title_plugin)
To use the plugin, all you need to do is add into your PLUGINS in pelicanconf a pelican-link-to-title and put in the article something like this:
<ahref>http://witkowskibartosz.com/blog</ahref>
and this "ahref" will be retransformed into:
<a href="http://witkowskibartosz.com/blog/">Anselmos Blog</a>
Which means, it goes into this page, takes the title of the page and puts into a-href string data.
Acknowledgements
Thanks!
That's it :) Comment, share or don't :)
If you have any suggestions what I should blog about in the next articles - please give me a hint :)
See you tomorrow! Cheers!
 
             
Comments
comments powered by Disqus