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")