• 用emacs(org2blog)发布cnblogs


    用emacs(org2blog)发布cnblogs,可以添加 删除 修改,但是tag 分类有问题

    经过修改了org2blog的部分代码之后,就可以再cnblog发布了.

    基本的思想是这样

    根据http://www.cnblogs.com/atskyline/services/metaweblog.aspx 提供的API,删除掉一些在org2blog代码中一些不可用的代码和参数,因为org2blog是为wordpress设计的. 按照我的方式修改之后,也许支持原来的BLOG可能会有一些问题,这个具体的我就没有测试了.

    1. 下载安装org-mode的最新版本

    具体参见:http://orgmode.org/

    1. 下载安装org2blog

    具体参见:https://github.com/punchagan/org2blog

    3.修改org2blog.el

    把320到333行的内容删去,因为这两个变量需要的方法cnblogs不支持

    org2blog/wp-tags-list
    (mapcar (lambda (tag) (cdr (assoc "slug" tag)))
              (wp-get-tags org2blog/wp-server-xmlrpc-url
                           org2blog/wp-server-userid
                         org2blog/wp-server-pass
                           org2blog/wp-server-blogid))
    org2blog/wp-pages-list
    (mapcar (lambda (pg)
              (cons (cdr (assoc "page_title" pg))
                    (cdr (assoc "page_id" pg))))
              (wp-get-pagelist org2blog/wp-server-xmlrpc-url
                               org2blog/wp-server-userid
                               org2blog/wp-server-pass
                               org2blog/wp-server-blogid)))
    

    这样之后就可以使用org2blog/wp-login了

    另外710行的 (org2blog/wp-create-categories (cdr (assoc "categories" post))) 也要删掉,也是因为cnblogs不支持 到这里还是不能使用org2blog/wp-post-buffer-and-publish 因为POST出去的信息结构式有问题的.还需要修改metaweblog.el

    4.修改metaweblog.el

    修改metaweblog-new-post函数 把95行到115行的内容删掉,因为里面的几个字段都不在cnblogsAPI的post结构中 这里值得一提的是那个dateCreated字段cnblogsAPI里面没有说这个字段是可选的, 但是用原本的方法又是不可用的,我神奇的发现把它删掉之后,cnblogs会自动使用当前时间. 请求高人指教这个什么用.另外在这段代码的下方有一段和catelogies有关的, 也许是这里的数组形式和cnblogs的不太一样,所以指定catelogies也是不可用的.暂时不清楚怎么修改

    (member nil
            (name nil "mt_excerpt")
            (value nil ,post-excerpt))
    (member nil
            (name nil "wp_slug")
            (value nil ,post-permalink))
    (member nil
            (name nil "dateCreated")
            (dateTime.iso8601 nil ,post-date))
    ,(when post-tags
       `(member nil
                (name nil "mt_keywords")
                (value nil
                       (array
                        nil
                        ,(append
                          '(data nil)
                          (mapcar
                           (lambda(f)
                             `(value nil (string nil ,f)))
                           post-tags))))))
    

    这样就可以完成org2blog/wp-post-buffer-and-publish操作了(要先登入)

    同样的修改也针对metaweblog-edit-post函数来一次,这样就可以进行文章的修改了. 把308行到332(原行数)内容删除掉就可以

    (member nil
            (name nil "mt_excerpt")
            (value nil ,post-excerpt))
    (member nil
            (name nil "wp_slug")
            (value nil ,post-permalink))
    (member nil
            (name nil "dateCreated")
            (dateTime.iso8601 nil ,post-date))
    ,(when post-tags
       `(member nil
                (name nil "mt_keywords")
                (value nil
                       (array
                        nil
                        ,(append
                          '(data nil)
                          (mapcar
                           (lambda(f)
                             `(value nil (string nil ,f)))
                           post-tags))))))
    

    最后还有一个和删除文章有关的东西 在metaweblog-delete-post函数内 把360行的nil修改为"",或者任意字符串后就可以进行删除操作了. cnblogs似乎字段都不允许为空值..

    5.配置org2blog

    一下给出我的配置文件,没有什么特别的,当中的一些参数要改成自己环境的, 我修改了一下template因为不能设置tag和categories,其实日期也是不能应用到网上的,但是…先留着吧. 另外关于options的东西,我不是很清楚具体是做什么的,就暂时没有进行修改

    (add-to-list 'load-path
                  "~/.emacs.d/mylisp/org2blog")
    
    (require 'org2blog-autoloads)
    
    (setq org2blog/wp-blog-alist
        '(("atskyline-cnblog"
           :url "http://www.cnblogs.com/atskyline/services/metaweblog.aspx"
           :username "atskyline"
          )))
    
     (setq org2blog/wp-buffer-template
     "#+DATE: %s
     #+OPTIONS: toc:nil num:nil todo:nil pri:nil tags:nil ^:nil TeX:nil
     #+TITLE: 
     \n")
    

    6.使用过程

    可以直接使用org2blog/wp-new-entry 新建一个文章(过程会提示你登入,不然手动用org2blog/wp-login登入也可以) 写完文章后最好在本地保存一份,方便以后修改删除. 写完后,使用org2blog/wp-post-buffer-and-publish就可以发布了. 以后需要修改,在本地修改后也是使用org2blog/wp-post-buffer-and-publish更新. (千万不要改PISTID) 如果想删除文章的话,就是用org2blog/wp-delete-entry (这个删除是指删除网上的文章,本地的文件不会被删除)

    7.已知的问题

    因为cnblogs没有提供createCategories,tag的方法所以就没办法新建分类和使用标签了 另外可能是因为我设置不好dateTime和array的原因,所以我暂时没办法自定义时间和目录,希望等高手修改 刚刚又发现一个坑爹的问题,就是正文里面千万不要出现 #+TITLE: 单独一行的而且在行首的情况,不然会被认为说标题为空,就算文章开头已经指定了标题也没用,加src包围也没有用, 解决方法是在行首加一个空格

    8.接下来的事

    说实话,我对org-mode还不是很熟悉,在接下去的几天会再研究看看

    我提供一个我已经修改好的代码下载,里面的具体代码可能和上面的说明不是完全一致,但是是可以使用的 https://files.cnblogs.com/atskyline/org2blog.7z

    最后,关于版权的问题,我还是不能把几个版权方式弄清楚,如果以上操作涉及到版权问题,我会立即改正 org2blog本身是循序GPLv3.具体可以参见 https://github.com/punchagan/org2blog

  • 相关阅读:
    MySQL学习(十二)
    MySQL学习(十一)
    MySQL学习(十)
    MySQL学习(九)
    MySQL学习(八)
    hlg1600线性代数中的矩阵问题【区间dp】
    HDU1556Color the ball【标号法||树状数组】
    hlg1481 Attack of the Giant n-pus【二分+二分图】
    0918
    20140913
  • 原文地址:https://www.cnblogs.com/atskyline/p/2550060.html
Copyright © 2020-2023  润新知