Krait Nabo - typecho 客户端的使用说明, 确保照此就做

介绍/下载

https://krait.cn/nabo.html

开发环境

权那他开发Nabo的环境如下:

  • android studio 开发工具
  • android 虚机: android api 29/android Q
  • android 真机: OPPO R15X/android 8.1 ,OPPO R11/android 7.0

由于开发时使用的谷歌androidx支持库和其他库,按照新标准编写,而且开发环境比较高,所以Nabo允许的android最低版本为7.0,抱歉,由于权那他开发时用到的真机少难免出现一些不兼容的问题,请见谅。

根据要求

  • 首先,需要安装好 Krait Nabo App
  • 打开你博客后台:设置->基本->XMLRPC 接口 选中打开,然后保存。
  • 打开Krait Nabo App,对应域名,然后在输入账号和密码。
  • 然后点击登录,初次登录需要花数十秒,这是在请求你的博客进行缓存必要数据,这个要看你的博客反应了。

Markdown

由于那博(nabo)仅支持markdown编辑器,所以需要告知typecho我们用的markdown编辑
需要到 https://example.com/admin/profile.php 个人信息->撰写设置->在 XMLRPC 接口中使用 Markdown 语法->打开

注意 使用标题时,# 标题 #和标题中间需有空格。如缺少空格,就不是标准的markdown标题,无法解析为标题

评论管理

  • 若要使用评论回复,这需要关闭评论中的开启反垃圾保护
  • 在后台->设置->评论->评论提交->开启反垃圾保护 关闭它,它的上下几项在没有回复成功则也要关闭。

探索与发现

由于Typecho官方最后更新的XMLRPC接口在17年,而且基本没人反馈XMLRPC的错误.
根据我的发现需要修改一下 若不修改,则有些功能无法感受
位于typecho/var/Widget/XmlRpc.php

488.489行 若不修改则导致无法编辑独立页面

$content['type'] = 'page';
$this->mwEditPost($blogId, $pageId, $userName, $password, $content, $publish);

其改为

$content['post_type'] = 'page';
$this->mwEditPost($pageId, $userName, $password, $content, $publish);

1056行 如不修改则导致无法获取垃圾评论和待审核评论

$input['status'] = 'hold' == $input['status'] ? $input['status'] : $this->wordpressToTypechoStatus($struct['status']); 

其改为

$input['status'] = $this->wordpressToTypechoStatus($struct['status'], 'comment');

1608行 如不修改则导致无法判断该文章是否有草稿

$this->typechoToWordpressStatus($posts->status, 'post')

其改为

$this->typechoToWordpressStatus(($posts->hasSaved || 'post_draft' == $posts->type) ? 'draft' : $posts->status, 'post')

399行 如不修改则导致无法判断该独立页面是否有草稿

$this->typechoToWordpressStatus($pages->status, 'page')

其改为

$this->typechoToWordpressStatus(($pages->hasSaved || 'page_draft' == $pages->type) ? 'draft' : $pages->status, 'page')

1442行 如不修改则导致无法发布私密、草稿、等等状态的文章

$status = $this->wordpressToTypechoStatus($content["{$type}_status"], $type);

其后面增加一行

$input['visibility'] = isset($content["visibility"]) ? $content["visibility"] : $status;

附件

注意图片上传,上传的图片是经过压缩的图片,由于不知什么原因大于1M的文件无法上传,所以权那他考虑了在质量相对好的情况下压缩于1M内,Nabo已使用https://github.com/zetbaitsu/Compressor压缩文件于1M内,所以客官无需考虑压缩了。
如果你使用了其他的附件上传插件,则可能无法使用上传图片,应为都没有写byte流写入内容的考虑
对于插件OssForTypecho 阿里云OSS上传插件(Typecho)修改如下
https://github.com/jqjiang819/typecho-plugin-ossfile/blob/master/Plugin.php
152行

$result = $ossClient->uploadFile($options->bucket, substr($path,1), $uploadfile);

改为

if (isset($file['tmp_name'])) {
                $result = $ossClient->uploadFile($options->bucket, substr($path, 1), $uploadfile);
            } else {
                $result = $ossClient->putObject($options->bucket, substr($path, 1), $uploadfile);
            }

169行

'mime' => @Typecho_Common::mimeContentType($path)

其改为

'mime' => (isset($file['tmp_name']) ? Typecho_Common::mimeContentType($file['tmp_name']) : $file['mime'])

对于插件Qiniu File 将 Typecho 的附件上传至七牛云存储中 修改如下
https://github.com/licxisky/typecho-Plugin-QiniuFile/blob/master/Plugin.php
108行

$filename = $file['tmp_name'];
       if (!isset($filename)) return false;

将其删掉

116行到127行

if ($error == null)   .... else return false; 

将其改为

if (isset($file['bytes'])) {
            list($ret, $error) = $upManager->put($token, $option->savepath . $file['name'], $file['bytes']);
            if ($error == null) {
                return array(
                    'name' => $file['name'], 
                    'path' => $option->savepath . $file['name']  . ($option->imgstyle == '' ? '' : '-' . $option->imgstyle), 
                    'size' => $file['size'], 
                    'type' => $ext, 
                    'mime' => $file['mime']//Typecho_Common::mimeContentType($option->savepath . $file['name'])
                    );
                
            } else {
                return false;
            }
            
            
        } else {
    
        // 上传文件
        $filename = $file['tmp_name'];
        //if (!isset($filename)) return false;
        list($ret, $error) = $upManager->putFile($token, $option->savepath . $file['name'], $filename);
           if ($error == null) {
            return array(
                'name' => $file['name'], 
                'path' => $option->savepath . $file['name'] . ($option->imgstyle == '' ? '' : '-' . $option->imgstyle), 
                'size' => $file['size'], 
                'type' => $ext, 'mime' => Typecho_Common::mimeContentType($filename)
                );
                } else {
            return false;
        
           }
            
        }

标签: typecho客户端, typecho, nabo

*

  1. 小林同学

    安卓5.1 安装不了打开失败:-)
    手机问题还是博主的适配问题? :?:

  2. 已经在使用,赞个,什么时候出ios版呀 :lol:

  3. 用不了,提示说我的网站不是typecho的

  4. 文章没有分类
    app打开是空白的
    订阅rss空白的
    还有输入账号密码的时候贼卡