Vimpress 0.9 plus

增加功能:

增加SLUG功能 :BlogList 默认列出前10条日志 :BlogList 0 列出全部日志

增加<!–more–>截断后继续读取日志功能

:BlogCate 列出Blog中的文章分类

:BlogSave 直接把文章保存到草稿,修改发布后的日志用BlogSave保存后,日志状态变为草稿保存,文章修改后用BlogSend发布。

:BlogDel id 删除指定日志后,重新列出新的日志列表(默认10篇)确认删除成功

修正 :BLogNew时categoryName显示不正确 修改more截断问题,打开日志后more标签代码会替换为wordpress能识别的more方式

使用方法:

复制代码命令为blog.vim,代替原来文件即可。需要原Vimpress已经设置成功。

以下代码为python注意格式。

" Copyright (C) 2007 Adrien Friggeri.
"
" This program is free software; you can redistribute it and/or modify
" it under the terms of the GNU General Public License as published by
" the Free Software Foundation; either version 2, or (at your option)
" any later version.
"
" This program is distributed in the hope that it will be useful,
" but WITHOUT ANY WARRANTY; without even the implied warranty of
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
" GNU General Public License for more details.
"
" You should have received a copy of the GNU General Public License
" along with this program; if not, write to the Free Software Foundation,
" Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
"
" Maintainer:    Adrien Friggeri <adrien@friggeri.net>
" URL:        http://www.friggeri.net/projets/vimpress/
" Version:    0.9
" Last Change:  2009 January 15
"
" Commands :
" ":BlogList [count]"
"   Lists recent <count> articles in the blog, default is 10, use 0 for all
" ":BlogCate"
"   Lists recent catetory in the blog
" ":BlogNew"
"   Opens page to write new article
" ":BlogOpen <id>"
"   Opens the article <id> for edition
" ":BlogDel <id>"
"   Del the article <id>
" ":BlogSend"
"   Publish the article to the blog
" ":BlogSave"
"   Draft the article to the blog
"
" Configuration :
"   Edit the "Settings" section (starts at line 63).
"
"   If you wish to use UTW tags, you should install the following plugin :
"   http://blog.circlesixdesign.com/download/utw-rpc-autotag/
"   and set "enable_tags" to 1 on line 50
"
" Usage :
"   Just fill in the blanks, do not modify the highlighted parts and everything
"   should be ok.
 
command! -nargs=* BlogList exec("py blog_list_posts(<args>)")
command! -nargs=* BlogCate exec("py blog_list_cates()")
command! -nargs=0 BlogNew exec("py blog_new_post()")
command! -nargs=0 BlogSend exec("py blog_send_post()")
command! -nargs=0 BlogSave exec("py blog_save_post()")
command! -nargs=1 BlogOpen exec('py blog_open_post(<f-args>)')
command! -nargs=1 BlogDel exec('py blog_del_post(<f-args>)')
python <<EOF
# -*- coding: utf-8 -*-
import urllib , urllib2 , vim , xml.dom.minidom , xmlrpclib , sys , string , re
 
#####################
#      Settings     #
#####################
 
enable_tags = 0
blog_username = '用户名'
blog_password = '密码'
blog_url = 'http://blog.yepn.net/xmlrpc.php'
more_mark = '&more;'
more_code = '<!--more-->'
 
#####################
# Do not edit below #
#####################
 
handler = xmlrpclib.ServerProxy(blog_url).metaWeblog
edit = 1
 
def blog_edit_off():
  global edit
  if edit:
    edit = 0
    for i in ["i","a","s","o","I","A","S","O"]:
      vim.command('map '+i+' <nop>')
 
def blog_edit_on():
  global edit
  if not edit:
    edit = 1
    for i in ["i","a","s","o","I","A","S","O"]:
      vim.command('unmap '+i)
 
def blog_send_post():
  def get_line(what):
    start = 0
    while not vim.current.buffer[start].startswith('"'+what):
      start +=1
    return start
  def get_meta(what):
    start = get_line(what)
    end = start + 1
    while not vim.current.buffer[end][0] == '"':
      end +=1
    return " ".join(vim.current.buffer[start:end]).split(":")[1].strip()
 
  strid = get_meta("StrID")
  title = get_meta("Title")
  slug = get_meta("Slug")
  cats = [i.strip() for i in get_meta("Cats").split(",")]
  if enable_tags:
    tags = get_meta("Tags")
 
  text_start = 0
  while not vim.current.buffer[text_start] == "\"========== Content ==========":
    text_start +=1
  text_start +=1
  text = '\n'.join(vim.current.buffer[text_start:])
 
  parts = text.split(more_mark)
  if len(parts) == 1:
      content = parts[0]
      content_more = ''
  else:
      content = parts[0]
      content_more = parts[1]
 
  if enable_tags:
    post = {
      'title': title,
      'mt_text_more': content_more,
      'wp_slug': slug,
      'description': content,
      'categories': cats,
      'mt_keywords': tags
    }
  else:
    post = {
      'title': title,
      'mt_text_more': content_more,
      'wp_slug': slug,
      'description': content,
      'categories': cats,
    }
 
  if strid == '':
    strid = handler.newPost('', blog_username, blog_password, post, 1)
 
    vim.current.buffer[get_line("StrID")] = "\"StrID : "+strid
  else:
    handler.editPost(strid, blog_username, blog_password, post, 1)
 
  vim.command('set nomodified')
 
 
def blog_new_post():
  def blog_get_cats():
    l = handler.getCategories('', blog_username, blog_password)
    s = ""
    for i in l:
        s = s + (i["categoryName"].encode("utf-8"))+", "
    if s != "":
      return s[:-2]
    else:
      return s
  del vim.current.buffer[:]
  blog_edit_on()
  vim.command("set syntax=blogsyntax")
  vim.current.buffer[0] =   "\"=========== Meta ============\n"
  vim.current.buffer.append("\"StrID : ")
  vim.current.buffer.append("\"Title : ")
  vim.current.buffer.append("\"Slug : ")
  vim.current.buffer.append("\"Cats  : "+blog_get_cats())
  if enable_tags:
    vim.current.buffer.append("\"Tags  : ")
  vim.current.buffer.append("\"========== Content ==========\n")
  vim.current.buffer.append("\n")
  vim.current.window.cursor = (len(vim.current.buffer), 0)
  vim.command('set nomodified')
  vim.command('set textwidth=0')
 
def blog_open_post(id):
  try:
    post = handler.getPost(id, blog_username, blog_password)
    blog_edit_on()
    vim.command("set syntax=blogsyntax")
    del vim.current.buffer[:]
    vim.current.buffer[0] =   "\"=========== Meta ============\n"
    vim.current.buffer.append("\"StrID : "+str(id))
    vim.current.buffer.append("\"Title : "+(post["title"]).encode("utf-8"))
    vim.current.buffer.append("\"Slug : "+(post["wp_slug"]).encode("utf-8"))
    vim.current.buffer.append("\"Cats  : "+",".join(post["categories"]).encode("utf-8"))
    if enable_tags:
      vim.current.buffer.append("\"Tags  : "+(post["mt_keywords"]).encode("utf-8"))
    vim.current.buffer.append("\"========== Content ==========\n")
    content = (post["description"]).encode("utf-8")
    content_more = (post["mt_text_more"]).encode("utf-8")
    if content_more !='':
        content = content + more_code + content_more
    for line in content.split('\n'):
      vim.current.buffer.append(line)
      vim.command('%s/\\n\('+more_code+'\)\\n/\\1/e')
    text_start = 0
    while not vim.current.buffer[text_start] == "\"========== Content ==========":
      text_start +=1
    text_start +=1
    vim.current.window.cursor = (text_start+1, 0)
    vim.command('set nomodified')
    vim.command('set textwidth=0')
  except:
    sys.stderr.write("An error has occured")
 
def blog_list_edit():
  try:
    row,col = vim.current.window.cursor
    id = vim.current.buffer[row-1].split()[0]
    blog_open_post(int(id))
  except:
    pass
 
def blog_list_posts(count=10):
  try:
    allposts = handler.getRecentPosts('',blog_username, blog_password, count)
    del vim.current.buffer[:]
    vim.command("set syntax=blogsyntax")
    vim.current.buffer[0] = "\"====== List of Posts ========="
    for p in allposts:
      vim.current.buffer.append(("%-7s\t" % p["postid"]) + (p["title"]).encode("utf-8"))
      vim.command('set nomodified')
    blog_edit_off()
    vim.current.window.cursor = (2, 0)
    vim.command('map <enter> :py blog_list_edit()<cr>')
  except:
    sys.stderr.write("An error has occured")
 
def blog_list_cates():
  try:
    l = handler.getCategories('', blog_username, blog_password)
    del vim.current.buffer[:]
    vim.command("set syntax=blogsyntax")
    vim.current.buffer[0] = "\"====== List of Category ========="
    for i in l:
        vim.current.buffer.append(i["categoryName"].encode("utf-8"))
        vim.command('set nomodified')
  except:
    pass
 
def blog_del_post(id):
  try:
    handler.deletePost('',id, blog_username, blog_password)
    allposts = handler.getRecentPosts('',blog_username, blog_password, 10)
    del vim.current.buffer[:]
    vim.command("set syntax=blogsyntax")
    vim.current.buffer[0] = "\"====== New List of Posts ========="
    for p in allposts:
      vim.current.buffer.append(("%-7s\t" % p["postid"]) + (p["title"]).encode("utf-8"))
      vim.command('set nomodified')
    blog_edit_off()
    vim.current.window.cursor = (2, 0)
    vim.command('map <enter> :py blog_list_edit()<cr>')
  except:
    pass
 
def blog_save_post():
  def get_line(what):
    start = 0
    while not vim.current.buffer[start].startswith('"'+what):
      start +=1
    return start
  def get_meta(what):
    start = get_line(what)
    end = start + 1
    while not vim.current.buffer[end][0] == '"':
      end +=1
    return " ".join(vim.current.buffer[start:end]).split(":")[1].strip()
 
  strid = get_meta("StrID")
  title = get_meta("Title")
  slug = get_meta("Slug")
  cats = [i.strip() for i in get_meta("Cats").split(",")]
  if enable_tags:
    tags = get_meta("Tags")
 
  text_start = 0
  while not vim.current.buffer[text_start] == "\"========== Content ==========":
    text_start +=1
  text_start +=1
  text = '\n'.join(vim.current.buffer[text_start:])
 
  parts = text.split(more_mark)
  if len(parts) == 1:
      content = parts[0]
      content_more = ''
  else:
      content = parts[0]
      content_more = parts[1]
 
  if enable_tags:
    post = {
      'title': title,
      'mt_text_more': content_more,
      'wp_slug': slug,
      'description': content,
      'categories': cats,
      'mt_keywords': tags
    }
  else:
    post = {
      'title': title,
      'mt_text_more': content_more,
      'wp_slug': slug,
      'description': content,
      'categories': cats,
    }
 
  if strid == '':
    strid = handler.newPost('', blog_username, blog_password, post, 0)
 
    vim.current.buffer[get_line("StrID")] = "\"StrID : "+strid
  else:
    handler.editPost(strid, blog_username, blog_password, post, 0)
 
  vim.command('set nomodified')
/var/lib/openshift/bccd8eac1968476490eaee9ced33c7bf/app-root/runtime/repo/php/data/pages/vimpress.txt · 最后更改: 2012/09/07 09:21 (外部编辑)
到顶部
CC Attribution-Noncommercial-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0