Adds GoodReads activity plugin
This commit is contained in:
committed by
Justin Mayer
parent
5ec7de70e2
commit
1958343053
80
pelicanext/goodreads_activity/README.md
Normal file
80
pelicanext/goodreads_activity/README.md
Normal file
@@ -0,0 +1,80 @@
|
||||
Goodreads Activity
|
||||
==================
|
||||
|
||||
A Pelican plugin to lists books from your Goodreads shelves.
|
||||
|
||||
Copyright (c) Talha Mansoor
|
||||
|
||||
Author | Talha Mansoor
|
||||
----------------|-----
|
||||
Author Email | talha131@gmail.com
|
||||
Author Homepage | http://onCrashReboot.com
|
||||
Github Account | https://github.com/talha131
|
||||
|
||||
### Credits
|
||||
|
||||
This plugin is inspired by Marco Milanesi <kpanic@gnufunk.org> Github activity plugin.
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
`goodreads_activity` requires feedparser.
|
||||
|
||||
```bash
|
||||
pip install feedparser
|
||||
```
|
||||
|
||||
How to Use
|
||||
==========
|
||||
|
||||
**Important** Unlike Marco's Github activity plugin, this plugin returns
|
||||
a dictionary composed of the books in your Goodreads shelf and their
|
||||
details.
|
||||
|
||||
To enable it, set `GOODREADS_ACTIVITY_FEED` in your pelican config file. It should point to the activity feed of your bookshelf.
|
||||
|
||||
To find your self's activity feed,
|
||||
|
||||
1. Open Goodreads homepage and login
|
||||
2. Click on My Books in the top navigational bar
|
||||
3. Select the bookshelf you are interested in from the left hand column
|
||||
4. Look for RSS link in the footer. Copy it's link.
|
||||
|
||||
Here is an example feed of currently-reading shelf,
|
||||
|
||||
```python
|
||||
GOODREADS_ACTIVITY_FEED='http://www.goodreads.com/review/list_rss/8028663?key=b025l3000336epw1pix047e853agggannc9932ed&shelf=currently-reading'
|
||||
```
|
||||
|
||||
You can access the `goodreads_activity` in your Jinja2 template. `goodreads_activity` is a dictionary. Its valid keys are
|
||||
|
||||
1. `shelf_title` it has the title of your shelf
|
||||
2. `books` it is an array of book dictionary
|
||||
|
||||
Valid keys for `book` dictionary are
|
||||
|
||||
1. `title`
|
||||
2. `author`
|
||||
3. `link` link to your book review
|
||||
4. `l_cover` large cover
|
||||
5. `m_cover` medium cover
|
||||
6. `s_cover` small cover
|
||||
7. `description`
|
||||
8. `rating`
|
||||
9. `review`
|
||||
10. `tags`
|
||||
|
||||
Template Example
|
||||
================
|
||||
|
||||
```python
|
||||
{% if GOODREADS_ACTIVITY_FEED %}
|
||||
<h2>{{ goodreads_activity.shelf_title }}</h2>
|
||||
{% for book in goodreads_activity.books %}
|
||||
<img src="{{book.s_cover}}"/>
|
||||
<header>{{book.title}}<small> by {{book.author}}</small></header>
|
||||
<article>{{book.description|truncate(end='')}}
|
||||
<a href={{book.link}} target="_blank">...more</a></article>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
```
|
||||
0
pelicanext/goodreads_activity/__init__.py
Normal file
0
pelicanext/goodreads_activity/__init__.py
Normal file
46
pelicanext/goodreads_activity/goodreads_activity.py
Normal file
46
pelicanext/goodreads_activity/goodreads_activity.py
Normal file
@@ -0,0 +1,46 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
from pelican import signals
|
||||
import feedparser
|
||||
|
||||
|
||||
class GoodreadsActivity():
|
||||
def __init__(self, generator):
|
||||
self.activities = feedparser.parse(
|
||||
generator.settings['GOODREADS_ACTIVITY_FEED'])
|
||||
|
||||
def fetch(self):
|
||||
goodreads_activity = {
|
||||
'shelf_title': self.activities.feed.title,
|
||||
'books': []
|
||||
}
|
||||
for entry in self.activities['entries']:
|
||||
book = {
|
||||
'title': entry.title,
|
||||
'author': entry.author_name,
|
||||
'link': entry.link,
|
||||
'l_cover': entry.book_large_image_url,
|
||||
'm_cover': entry.book_medium_image_url,
|
||||
's_cover': entry.book_small_image_url,
|
||||
'description': entry.book_description,
|
||||
'rating': entry.user_rating,
|
||||
'review': entry.user_review,
|
||||
'tags': entry.user_shelves
|
||||
}
|
||||
goodreads_activity['books'].append(book)
|
||||
|
||||
return goodreads_activity
|
||||
|
||||
|
||||
def fetch_goodreads_activity(gen, metadata):
|
||||
if 'GOODREADS_ACTIVITY_FEED' in gen.settings:
|
||||
gen.context['goodreads_activity'] = gen.goodreads.fetch()
|
||||
|
||||
|
||||
def initialize_feedparser(generator):
|
||||
generator.goodreads = GoodreadsActivity(generator)
|
||||
|
||||
|
||||
def register():
|
||||
signals.article_generator_init.connect(initialize_feedparser)
|
||||
signals.article_generate_context.connect(fetch_goodreads_activity)
|
||||
Reference in New Issue
Block a user