起因

Confluence对于企业来说是一个非常有用的文档管理工具,但是每次我在使用的时候,我都要去进行一遍文档空间的目录查找。
虽然提供了搜索功能,但是搜索的延时,使用便捷度,都存在一定的问题。(哦,对了我们的Confluence是比较低版本的,太老了,一次搜索50条)
那么,想了一下如何去解决这个问题呢,Mac中万能的Alfred Workflow就是用来解决一系列的工作效率的问题的。
所以我在尝试能不能用Alfred Workflow来进行文档标题的搜索。
OK做这个事情之前,先找下目前有没有已经存在的包拿来直接使用。
找到了这个Alfred Workflow,但是按照他的设置却发现搜索不了结果。

解决

OK,我们都知道Alfred Workflow是用python写的,- -好吧,Python早忘光了,反正语言嘛,80%都一样的,就随便改改好了。
OK,在Debug信息中我们发现,大神写的脚本的链接直接报了404

1
2
14:28:40 alfred-confluence.py:99 DEBUG Quick Search URL: http://host/json/contentnamesearch.action/rest/quicknav/1/search?os_authType=basic&query=ios
14:28:40 workflow.py:2243 ERROR HTTP Error 404: Not Found

那么我们来找下公司的搜索按钮的URL来试试?
http://host/dosearchsite.action?spaceSearch=false&queryString=
好像也有问题,因为他输出的是Html内容,我并不能去解析Html的东西,哇贼烦,看看有没有Rest API可以直接调用。
既然是Confluence,应该有API文档的吧,找到公司的Confluence版本,然后Google了一番,找到了这个链接看到了图片中的这个,哇这个不就是我们想要的么。
IMAGE
IMAGE
OK,我们直接把链接给复制进去,改了下host。然后进行DEBUG,哇爆炸,还是不行。拿到的参数不是JSON,大神写的无法解析。

1
2
14:36:21 alfred-confluence.py:99 DEBUG Quick Search URL: http://hots/rest/prototype/1/search?os_authType=basic&query=ios&spaceKey=xxxx&pageSize=10
14:36:25 workflow.py:2243 ERROR No JSON object could be decoded

OK,我们去直接用阅览器访问链接(因为阅览器有登录Cookie,所以可以直接进行访问),得到的数据是XML,哇爆炸,贼不想搞这东西。
但是没办法,还是要用的。
那么问题处在XML没办法解析,得不到最终的数据。那么就来解析XML吧,- -我个人喜欢JSON,直接去Google了一个XML转JSON的库,来做(主要是,试了好几个自己写的转换莫名其妙的有问题)。OK,安装上xml2Json库,很快我们就可以得到了Json串,然后Json转字典。OK我们就可以直接用KVC的方式把pageId和title给拿出来。然后把数据添加到Alfred的FeedBack之中。
OK,我们想要的数据就出来的。

优化

受限于公司Confluence的渣渣访问速度,只能针对于搜索条数和访问空间进行限制。
设置完之后的访问速度大概是1.5S左右,达到了个人理想的访问速度,还是比较能够接受的。