3 messages in com.googlegroups.bloggerdevStrange issues with editing all posts| From | Sent On | Attachments |
|---|---|---|
| Josh Simpson | 25 Mar 2008 09:21 | |
| Austin (Google) | 27 Mar 2008 11:48 | |
| Josh Simpson | 27 Mar 2008 23:12 |
| Subject: | Strange issues with editing all posts![]() |
|---|---|
| From: | Josh Simpson (std...@gmail.com) |
| Date: | 03/25/2008 09:21:40 AM |
| List: | com.googlegroups.bloggerdev |
I've been working on a solution to traverse the blogs and posts controlled by me and replace certain strings with new strings. It works fine in small test cases (~3 blogs, ~10 posts per blog), but then I'll start getting NoneTypes when attempting to access the 'content' instance variables (no error besides that is thrown), and then it'll go back to being fine (which is why, in the code below, I check to see if "entry.content" exists).
Is there some magic error handling that this API provides that I'm missing? Can I get the HTTP response per retrieval and post? Is there some definitive limit that Blogger puts on editing posts, not just adding posts?
Here's the code I've written, and any help would be appreciated:
from gdata import service import gdata import atom
OLD_STRING = 'www.somedomain.com' NEW_STRING = 'www.newdomain.com'
blogger_service = service.GDataService("user", "password") blogger_service.source = "RGJTextReplacementSolution" blogger_service.service = 'blogger' blogger_service.server = 'www.blogger.com' blogger_service.ProgrammaticLogin()
def GetBlogs(blogger_service): query = service.Query() query.feed = '/feeds/default/blogs' feed = blogger_service.Get(query.ToUri())
# reverse the blog feeds to preserve update times on posts feed.entry.reverse() print feed.title.text for entry in feed.entry: blog_id = entry.GetSelfLink().href.split("/")[-1] print "\t" + entry.title.text print "=" * 50 ReplacePosts(blogger_service, blog_id)
def ReplacePosts(blogger_service, blog_id): feed = blogger_service.GetFeed('/feeds/' + blog_id + '/posts/ default') new_entries = list() for entry in feed.entry: if entry.content: old_text = entry.content.text new_text = old_text.replace(OLD_STRING, 'NEW_STRING') entry.content = atom.Content(text=new_text) new_entries.append(entry)
# reverse entries list to preserve update times on posts new_entries.reverse() for e in new_entries: print blogger_service.Put(e, e.GetEditLink().href)
if __name__ == "__main__": GetBlogs(blogger_service)




