Blog post xml-rpc via vim + python + markdown

Выкладываю несколько модернизированный скрипт для постинга из 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 другим стилем выделить...

Похожие статьи:
Blog posting via vim, xmlrpc and python.
Эскимо должно быть эскимосским.
За спичками...
Всё о vim : в копилку *nix blogs
С Markdown по жизни и по textarea.
     Комментарии (9)  Permalink

Комментарии

Captain Flint @ 11.01.2007 08:43 EET
Практически готовый рецепт, большое спасибо! Буду смотреть %)
  Dik @ 11.01.2007 09:52 EET
Для вордпресса либа есть если что...
Captain Flint @ 11.01.2007 11:26 EET
Еще раз спасибо! %))) Это вообще хорошо!
  Dik @ 11.01.2007 11:59 EET
Для полного счастья позже я ещё хотел бы добавить multiple categories, то есть возможность указывать несколько категорий через запятую во второй строке, и возможность создавать новые если нет в наличии - и тогда мои потребности по постингу будут полностью удовлетворены :)
Captain Flint @ 15.01.2007 17:02 EET
Ага. Согласен.
А если вдруг дойдут у тебя руки до подсветки bash'а -- тоже маякни %) Но мож и у меня самого дойдут...
  Dik @ 15.01.2007 17:35 EET
Ой не скоро дойдут - бью себя по рукам чтобы забить на всё и заниматься только работой :)
darkk @ 12.03.2007 09:10 EET
Ух, спасибо, а я и не знал, что в vim уже питон есть.
Буду радоваться и изобретать blog-post велосипед.
  Dik @ 12.03.2007 10:48 EET
darkk : дак в нём вроде не только python, ещё куча языков завязана...
  l0rda @ 31.03.2007 12:08 EET
Спасибо, интересно.

Добавить комментарий



Имя*
E-Mail
For Spammers Only
URL
Коммент*
Подписка на комментарии
Запомнить меня (по Cookies)