最新消息:20210917 已从crifan.com换到crifan.org

【基本解决】用WLW(Windows Live Writer)通过帖子的固定链接,打开网站上某个已经存在的帖子

WLW crifan 1485浏览 0评论

【问题】

WLW在配置好之后,想要打开你的网站上面的某个帖子的话,目前只能通过两种办法:

(办法1)如果该帖子之前在你当前WLW中发布过,是可以通过 “打开最近使用过的日志”,然后找到该帖子,打开,编辑/更新,再发布的:

打开最近使用过的日志

(办法2)如果之前该帖子不是通过你当前的WLW发布的,那么只有通过:

打开 –>选择你的网站,WLW会一次性地区检索(你所设置的)20/50/100/500/…个你的网站上面的帖子:

点击你的网站 然后下载对应的文章

检索完毕后,再去找对应的帖子。期间也可以输入关键字,以筛选出对应帖子:

可以筛选

但是,对于我所遇到的情况是,想要更新某个帖子,此帖:

A。不是通过当前WLW发布的。

B。帖子是之前发布的 –> 即不是通过检索最近20,50,100个的就可以找到的

C。本身网站上面帖子太多,有4000+。

因此只能用上述第二种办法,但是如果要让WLW去检索500+个帖子:

选择500

A。非常耗时;

B。网络即使很好,也会出现这个错误的:

服务器响应无效

从日志服务器接收的对

metaWeblog.getRecentPosts方法的响应无效:

Invalid response document returned from XmlRpc server

服务器响应无效

之前试了过N此,从来没有一次成功的,都是出现上述错误。

所以想要获得更多的1000,3000的帖子,就更不用试了。

 

C。即使能检索出500+的帖子,然后也可以筛选,但由于帖子太多,也未必能很方便的找到所要的帖子。

 

而对于想要打开的帖子,其实登陆自己的网站,可以很方便的搜到,并且可以找到对应的固定链接(或?p=xxx样式的非固定链接)的。

此处希望可以通过给定WLW一个自己网站的固定链接,然后其可以直接打开对应的帖子,然后就可以正常的,编辑,修改,再发布最新内容了。

 

【解决过程】

1.网上搜了下,关于用wlw,给定帖子固定链接,打开网站上已存在的帖子,但是没有找到相关的讨论,更没有可借鉴的方法。

2. 想到了,实在不行的话,估计又是要靠自己写对应的WLW的插件了。

不过,网上先简单的看了看,根据微软的介绍:

Windows Live Writer SDK

好像,此处要实现打开某个已经存在的post,需要用

Windows Live Writer Application API

而不是之前的

Windows Live Writer Plugin API

的,因为后者只能只提供了接口,供你修改文章内容,在文章发布前后做一些事情,而无法打开文章内容。

 

3.后来对于上述的writer的api中,找了半天,也没有找到所需要的可以使用的api。

找到的最接近的也只是,可以调用wlw,打开open post,但是还是没有提供对应的网站的url链接,打开对应的post并编辑的功能。所以,暂时放弃此办法。

4. 因为wlw也是通过wordpress的XM-PRC协议进行获得网站上的帖子并编辑发布的,所以就去搜了关于XML-RPC方面的资料。

进过找寻,找到了一些相关的帖子:

C# XML-RPC协议实现百度和Google的Ping功能

介绍了如何在C#中利用XML-RPC。

C#下xmlrpc的调用

介绍了,如何使用C#去写代码,实现调用XML-RPC来发布帖子。

其中提到的两个帖子:

xml-rpc API的中文文档与说明

xml-rpc wp 相关API

都去看了,但是貌似没有找到哪里解释说,为何用metaweblog的API而不是用

http://codex.wordpress.org/XML-RPC_Support

中介绍的其他的,比如Blogger APIMovable Type API,以及WordPress API

目前的理解是,WordPress API是针对Movable Type API的扩展。

而本身Blogger APIMovable Type APIMovable Type API三者是并列关系。

其中

http://xmlrpc.scripting.com/metaWeblogApi.html

也解释了:MetaWeblog API是Blogger API 更高一级的功能扩展。

关于C#所用到的XML-PRC,去这里下载:

http://xml-rpc.net/download.html

关于XML-PRC的参考文档:

XML RPC API详细说明文档(WordPress,CNblogs,CSDN,新浪)

 

5.最近的折腾,已经可以通过metaWeblog去getPost和getRecentPosts等,因此,也就可以获得帖子内容了。

其中blogId是参考:

用XML-RPC协议读写WordPress上的文章

去访问:

https://www.crifan.org/xmlrpc.php?rsd

而获得的:blogID=”1″

接下来,看看是否可以通过

Windows Live Writer Application API

去调用OpenPost,以启动WLW并且给对应的帖子设置各个参数,包括帖子内容,固定链接,标题,时间等等。

 

6.试了一下,用:

using WindowsLiveWriterApplicationLib;

WindowsLiveWriterApplicationClass wlw = new WindowsLiveWriterApplicationClass();
wlw.OpenPost();

果然只是打开WLW中的那个“打开”的对话框:

wlw 打开

而不是打开某个单独的帖子(很明显,因为该函数也没有参数可输入)。

所看起来,还是需要通过写WLW插件的形式,去实现对应的功能。

 

到目前为止,所能够想到的,为了实现通过帖子的固定链接而打开对应的帖子,在wlw中编辑后再发布的这个功能,

可以通过上面的办法,自己用C#写插件,然后自己调用XML-RPC,获得对应的帖子的内容,然后返回给WLW,但是对于其他相关的信息,包括帖子的分类,发布时间,是否允许评论,数据域等等信息,如何从插件中,赋值给WLW,还需要进一步探索。如果可以实现插件中将对应的帖子的所有相关信息都赋值给wlw中,那么就可以实现此处要的功能了。

有待以后有空继续折腾。

7.后来,已经实现了对应的,调用CookComputing.XmlRpc去获得对应帖子内容的,但是在添加了此功能后,由于未知原因,生成的dll插件却无法被wlw所识别了,搞得没办法编写对应wlw插件了。

即使可以编写wlw插件,结果也只是获得帖子相关信息,可以将帖子内容返回到wlw的编辑页面中,但是对于其他内容,比如标题,固定链接,分类等等内容,wlw中却没提供可以修改的接口,所以也无法修改,还是无法实现更新已有帖子的目的。

8.其他,也想过其他办法,比如在wlw中新建一个空的日志,然后在wordpress后台打开该贴,将帖子内容等信息全部复制过来,这样再重新发布一篇,内容就可以实现再次在wlw中编辑的效果了,但是后来才想起来,此种做法,会丢失帖子的已阅读次数和评论等数据,所以还是不可行的。

9.最后,突然想到另外一个妥协的办法,那就是,把原先帖子,在wordpress后台中改一下发布时间,改为最新的时间,新到wlw中打开最近的100个日志,可以找得到该贴,即可。

这样,就可以通过wlw打开该贴进行编辑了,并且保留了帖子的所有的相关数据,包括已读次数,评论等,唯一的一点小缺点是,更改了帖子的最原始发布时间。而对于此发布时间,其实也无所谓的,毕竟,当前最新更新该贴的话,发布时间更新为当前时间(或者其他更新时间)也是可以理解的。

另外,突然想到的,真的想要保留原先发布时间,那么也可以等wlw更新完了,把那个时间在wlw中重新设置为原先旧的发布时间,这样就完美了,就实现了,可以通过wlw更新帖子,而保留帖子的所有的信息。

转载请注明:在路上 » 【基本解决】用WLW(Windows Live Writer)通过帖子的固定链接,打开网站上某个已经存在的帖子

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
92 queries in 0.189 seconds, using 23.36MB memory