mirror of
https://github.com/gryf/.vim.git
synced 2025-12-17 11:30:29 +01:00
131 lines
3.5 KiB
Python
131 lines
3.5 KiB
Python
# vim: fileencoding=utf8
|
|
#
|
|
# Blogger interface to make easy way to create/update articles for specified
|
|
# blog.
|
|
#
|
|
# It is assumed one way communication only, so you may create or update an
|
|
# article from reST source files. There is no way to recreate article from
|
|
# html to reST format.
|
|
#
|
|
# requirements:
|
|
#
|
|
# - Vim compiled with +python
|
|
# - python 2.x (tested with 2.6)
|
|
# - modules
|
|
# - gdata (http://code.google.com/p/gdata-python-client)
|
|
# - docutils (http://docutils.sourceforge.net)
|
|
# - pytz (http://pytz.sourceforge.net)
|
|
#
|
|
# USE CASES:
|
|
# 1. Create new post
|
|
#
|
|
# use reST template:
|
|
# ===8<---
|
|
# :Title: Blog post title
|
|
# :Date: optional publish date (for example: 2010-11-28 18:47:05),
|
|
# default: now()
|
|
# :Modified: optional, default: None
|
|
# :Tags: comma separated blog tags
|
|
#
|
|
# .. more
|
|
#
|
|
# --->8===
|
|
#
|
|
# All four docinfo are optional, however it is nice to give at least a title
|
|
# to the article :)
|
|
#
|
|
#
|
|
#
|
|
# which is provided under templates directory or as a
|
|
# snipMate shoortcut (see .vim/snippets/rst.snippets)
|
|
#
|
|
|
|
# vim.eval('inputsecret("Password: ")')
|
|
# echomsg expand("%:p")
|
|
#-----------------------------------------------------------------------------
|
|
#
|
|
import getpass # TODO: remove
|
|
import time
|
|
import datetime
|
|
|
|
import pytz
|
|
import atom
|
|
from gdata.blogger.client import BloggerClient
|
|
|
|
|
|
class VimBlogger(object):
|
|
"""
|
|
"""
|
|
|
|
def __init__(self, blogname, login, password):
|
|
"""
|
|
"""
|
|
self.blog = None
|
|
self.client = BloggerClient()
|
|
self._authorize(login, password)
|
|
|
|
self.feed = self.client.get_blogs()
|
|
self._set_blog(blogname)
|
|
#self._get_arts(blogname)
|
|
|
|
def _set_blog(self, blogname):
|
|
"""
|
|
"""
|
|
for blog in self.feed.entry:
|
|
if blog.get_blog_name() == blogname:
|
|
self.blog = blog
|
|
break
|
|
|
|
|
|
def _get_arts(self, blogname):
|
|
"""
|
|
"""
|
|
feed = self.client.get_posts(self.blog.get_blog_id())
|
|
for entry in feed.entry:
|
|
print entry.title.text
|
|
#
|
|
import ipdb; ipdb.set_trace()
|
|
#
|
|
# entry.content obiekt zawiera ciało artykułu (entry.content.text
|
|
# posiada czystą formę która mnie interesuje najbardziej, do której
|
|
# można pisać
|
|
#
|
|
# entry.category - lista wszystkich kategorii (blogowych tagów), które
|
|
# post posiada. Są to elementy klasy atom.data.Category, które
|
|
# łatwiutko stworzyć i dodać do posta:
|
|
# import atom
|
|
# cat1 = atom.data.Category()
|
|
# cat1.term = "nowy tag dla bloggera"
|
|
# entry.category.append(cat1)
|
|
#
|
|
# entry.title przechowuje tytuł posta
|
|
|
|
def _authorize(self, login, password):
|
|
"""
|
|
"""
|
|
source = 'Blogger_Python_Sample-2.0'
|
|
service = 'blogger'
|
|
|
|
self.client.client_login(login,
|
|
password,
|
|
source=source,
|
|
service=service)
|
|
def create_article(self, title, html_doc, tags=None):
|
|
"""
|
|
"""
|
|
|
|
blog_id = self.blog.get_blog_id()
|
|
if tags is None:
|
|
tags = []
|
|
return self.client.add_post(blog_id, title, html_doc, labels=tags,
|
|
draft=True)
|
|
|
|
def update_article(self, title, html_doc, tags=None):
|
|
"""
|
|
"""
|
|
pass
|
|
|
|
if __name__ == "__main__":
|
|
p = getpass.getpass("Password: ")
|
|
b = VimBlogger("rdobosz", "gryf73@gmail.com", p)
|