WLWのAPI

WLWにはAPIが用意されている。どうにかしてこれを呼べないかなぁと思った。ファイルは「C:\Program Files\Windows Live\Writer\WindowsLive.Writer.Api.dll」だということはわかっている。状況から考えて、たぶん.NETのライブラリなんじゃないかな。

まずはPythonに付属のctypesだが、ctypes自体は状況によっては異常に便利な、ものすごいものではあるが、、、

>>> import ctypes
>>> wlapi=ctypes.cdll.LoadLibrary(r"C:\Program Files\Windows Live\Writer\WindowsLive.Writer.Api.dll")

ここから先が続かないんだよね。何の関数を呼べばいいんだろう…そもそも.NETのdllってctypesから呼べるのかどうか…

.NETだからIronPythonだろう、ということでipyを入れてやってみると、当たりっぽいのが出てきた。

>>> import sys
>>> import clr
>>> sys.path.append(r"C:\Program Files\Windows Live\Writer")
>>> clr.AddReference("WindowsLive.Writer.Api.dll")
>>> import WindowsLive.Writer.Api as wlapi
>>> help(wlapi)
 :(大量のテキスト)
>>> dir(wlapi)
['AdaptiveHtmlObject', 'Alignment', 'ContentCreationException', 'ContentResizedEventHandler',
 'ContentSource', 'HtmlDocumentAvailableEventArgs', 'HtmlDocumentAvailableHandler',
 'HtmlScreenCapture', 'HtmlScreenCaptureAvailableEventArgs', 'HtmlScreenCaptureAvailableHandler',
 'HtmlServices', 'HtmlType', 'HttpRequestCacheLevel', 'ILayoutStyle', 'IProperties', 'IPublishingContext',
 'ISmartContent', 'ISmartContentEditorSite', 'ISupportingFiles', 'InsertableContentSourceAttribute',
 'LiveClipboardContentSourceAttribute', 'PluginDiagnostics', 'PluginHttpRequest', 'ResizeCapabilities',
 'ResizeOptions', 'SmartContentEditor', 'SmartContentSource', 'SupportsFeature',
 'UrlContentSourceAttribute', 'WriterApplication', 'WriterPlugin', 'WriterPluginAttribute',
 '__builtins__', '__dict__', '__name__']

なんかぐぐりながらやっていけば、少しは見当がつきそうな感じ。でもプラグインの呼び出しの口はDLLで作らなきゃいけないはずだから、Pythonで作るのは無理かなぁ。プラグインのDLLを別から呼んで遊ぶなんてことはできるかもしれない。WriterPluginではなくWriterApplicationクラスを使えば、自分のスクリプトからWLW経由で投稿、というのは可能か。

こんな感じ。一応動くはず。

import sys
import clr
sys.path.append(r"C:\Program Files\Windows Live\Writer")
clr.AddReference("WindowsLive.Writer.Api.dll")
import WindowsLive.Writer.Api as wlapi
wlapp=wlapi.WriterApplication()
wlapp.BlogThisLink("グーグル", "http://www.google.co.jp/", "Google")

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です