Blog post xml-rpc via vim + python + markdown

by dik @ 11.01.2007

Выкладываю несколько модернизированный скрипт для постинга из 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
  • Первая строка - название поста
  • Вторая строка - Категория из уже имеющихся
  • Третья строка - тэги через запятую
  • Четвёртая строка и всё нижеследующее собственно сам пост с разметкой markdown

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

:py post();

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