Blog post xml-rpc via vim + python + markdown

2007-01-11

Выкладываю несколько модернизированный скрипт для постинга из vim :

Прелюдия :

Нам понадобится vim с поддержкой python

Python markdown

Подсветка синтаксиса markdown для vim

Примерно такой кусок кода в .vimrc

python << EOF

import vim import xmlrpclib import markdown

blog_username = ‘user’ blog_password = ‘pass’ blog_url = ‘http://dikiy.com/blog/xmlrpc.xml’

def post(): strid = ‘’ offsetline = 0

if vim.current.buffer[0].find('InfoLine:') != -1:
    strid = vim.current.buffer[0].split(':')[1]
    offsetline = 1

title = vim.current.buffer[offsetline + 0]
tema = vim.current.buffer[offsetline + 1]
keywords = vim.current.buffer[offsetline + 2]
text ='n'.join(vim.current.buffer[offsetline + 3:])    
#extended = 'n'.join(vim.current.buffer[offsetline + 4:])
content = markdown.markdown(text)
wp = xmlrpclib.ServerProxy(blog_url)
post = {
    'title': title,
    'mt_keywords':keywords,
    'description':content
    #'mt_text_more':content

}
if strid == '':
    strid = wp.metaWeblog.newPost(1, blog_username, blog_password, post, 1)
    categories = []
    blogcatlist = wp.mt.getCategoryList(1, blog_username,blog_password)
    for c in range(len(blogcatlist)):
        if blogcatlist[c]['categoryName'] == tema:
            znak = blogcatlist[c]
            categories.append(znak)

    wp.mt.setPostCategories(strid, blog_username, blog_password, categories)

    vim.current.buffer.append('n')
    vim.current.buffer[:] = ['StrID=' + strid] + [i for i in vim.current.buffer[:]]

else:
    wp.metaWeblog.editPost('1', blog_username, blog_password, post, 1)

    vim.command('set nomodified')

EOF

Работает с bxcms но с небольшой переделкой того что касается категорий должно зашуршать и для wordpress.

Как это работает

создаём новый файл с расширением .mkd / например

$vim blog/new-post.mkd

После написания сохраняем, а постим командой

:py post();

Недавно прикрутил к блогу подсветку синтаксиса от Ивана Сагалаева

Ничего особо не настраивал. Надо бы bash другим стилем выделить…