Last active
January 18, 2016 22:51
-
-
Save Ricky-Wilson/9244363 to your computer and use it in GitHub Desktop.
Blogger Automatic Content Generation and Publication
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from gdata import service | |
import gdata | |
import atom | |
import feedparser | |
from time import * | |
banner = """ | |
Blogger Automatic Content Generation and Publication | |
Coded by Ricky L. Wilson | |
Post entries from RSS feeds to a blogger blog using Googles Blogger API. | |
Don't go to crazy Blogger only alows 50 post's a day | |
""" | |
print banner | |
blog_id = '' | |
email = '' | |
password = '' | |
source = 'My blog' | |
feeds = ["http://stackoverflow.com/feeds/"] | |
limit = 2 | |
# Programmatically log in to blogger | |
blogger_service = service.GDataService(email,password) | |
blogger_service.source = source | |
blogger_service.service = 'blogger' | |
blogger_service.account_type = 'GOOGLE' | |
blogger_service.server = 'www.blogger.com' | |
blogger_service.ProgrammaticLogin() | |
def CreatePublicPost(blogger_service, blog_id, title, content): | |
entry = gdata.GDataEntry() | |
entry.title = atom.Title('xhtml', title) | |
entry.content = atom.Content(content_type='html', text=content) | |
return blogger_service.Post(entry, '/feeds/%s/posts/default' % blog_id) | |
def publishFeed(url,limit=0): | |
d = feedparser.parse(url) | |
feed_title = d.feed.title | |
feed_description = d.feed.description | |
feed_entries = d.entries | |
n_entries = len(feed_entries) | |
n_posted = 0 | |
for i in feed_entries: | |
if n_posted <= limit: | |
title = i.title | |
link = i.link | |
description = i.description | |
if title and link and description and title not in titles_posted: | |
try: | |
print "Posting %s" % (title) | |
print "%d posts posted" % (n_posted) | |
post = CreatePublicPost(blogger_service, blog_id,title,description) | |
n_posted = n_posted + 1 | |
except gdata.service.RequestError: | |
print "Blog has exceeded rate limit of 50 or otherwise\nrequires word verification for new posts" | |
print "Should be back in action tomorow" | |
quit() | |
else: pass | |
def main(feeds,limit,delay): | |
while True: | |
for feed in feeds: | |
publishFeed(feed,limit) | |
sleep(delay) | |
main(feeds,limit,delay) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment