forked from github/pelican
85 lines
2.3 KiB
Python
85 lines
2.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Copyright (c) Marco Milanesi <kpanic@gnufunk.org>
|
|
|
|
A plugin to list your Github Activity
|
|
To enable it set in your pelican config file the GITHUB_ACTIVITY_FEED
|
|
parameter pointing to your github activity feed.
|
|
|
|
for example my personal activity feed is:
|
|
|
|
https://github.com/kpanic.atom
|
|
|
|
in your template just write a for in jinja2 syntax against the
|
|
github_activity variable.
|
|
|
|
i.e.
|
|
|
|
<div class="social">
|
|
<h2>Github Activity</h2>
|
|
<ul>
|
|
|
|
{% for entry in github_activity %}
|
|
<li><b>{{ entry[0] }}</b><br /> {{ entry[1] }}</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div><!-- /.github_activity -->
|
|
|
|
github_activity is a list containing a list. The first element is the title
|
|
and the second element is the raw html from github
|
|
"""
|
|
|
|
from pelican import signals
|
|
|
|
|
|
class GitHubActivity():
|
|
"""
|
|
A class created to fetch github activity with feedparser
|
|
"""
|
|
def __init__(self, generator):
|
|
try:
|
|
import feedparser
|
|
self.activities = feedparser.parse(
|
|
generator.settings['GITHUB_ACTIVITY_FEED'])
|
|
except ImportError:
|
|
raise Exception("Unable to find feedparser")
|
|
|
|
def fetch(self):
|
|
"""
|
|
returns a list of html snippets fetched from github actitivy feed
|
|
"""
|
|
|
|
entries = []
|
|
for activity in self.activities['entries']:
|
|
entries.append(
|
|
[element for element in [activity['title'],
|
|
activity['content'][0]['value']]])
|
|
|
|
return entries
|
|
|
|
|
|
def fetch_github_activity(gen, metadata):
|
|
"""
|
|
registered handler for the github activity plugin
|
|
it puts in generator.context the html needed to be displayed on a
|
|
template
|
|
"""
|
|
|
|
if 'GITHUB_ACTIVITY_FEED' in gen.settings.keys():
|
|
gen.context['github_activity'] = gen.plugin_instance.fetch()
|
|
|
|
|
|
def feed_parser_initialization(generator):
|
|
"""
|
|
Initialization of feed parser
|
|
"""
|
|
|
|
generator.plugin_instance = GitHubActivity(generator)
|
|
|
|
|
|
def register():
|
|
"""
|
|
Plugin registration
|
|
"""
|
|
signals.article_generator_init.connect(feed_parser_initialization)
|
|
signals.article_generate_context.connect(fetch_github_activity)
|