スポンサーサイト

Tags :
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

AppleScriptでMovableType互換APIを使う

以前のエントリでFC2ブログ用の画像アップロードスクリプトを書いたんですが、FC2から受け取るcookieの中身が変わったらしく動かなくなっていたので、その部分を修整しておきました。まあ管理画面をスクレイピングしてるので、またいつ動かなくなるか判りませんけど。

そんなことしなくても良い様に、FC2ブログでもMovableType互換APIが使えるようになってるので(あまり積極的にはサポートしてないようですが)、アップロードの機能をちょこっと使ってみました。

MovableType APIの仕様は、こちらがまとまってて分かりやすいです。
『Movable Type で使える XML-RPC API』

画像ファイルをアップロードするには、Base64でエンコードする必要がありますが、OS Xにはopensslが入ってるのでdo shell script で呼び出せば簡単にエンコード済み文字列が得られます。
データを渡す際の項目名に『name』や『url』が指定されてますが、これらはAppleScriptではレコードの項目名(ラベル)として定義されてる予約語なので、『|name|』のようにエスケープする必要があります。

あと、XML-RPCを扱うAppleScriptを書く時に使える『AEXMLTutor』ってツールがあるんですが、上のペインがスクリプトエディタになってて、実行すると下のペインにXML-RPCでの送受信の内容が表示されるようになってるので便利です。



FC2ブログでは、画像をアップロードする時サムネイルを勝手に生成する機能もあって、このAPIではそれが生かせないので結局はフォームの内容をPOSTするしかないんですが。

property BlogID : "0"----FC2ブログでの扱いは不明
property myID : "<ユーザ名>"----FC2ブログではメールアドレス
property myPass : "<パスワード>"

on open drop
   repeat with theFile in drop
      tell application "Finder"
         set fName to name of theFile
         set fPath to quoted form of POSIX path of theFile
         ----画像をBase64でエンコード
         set encodedFile to (do shell script "openssl base64 < " & fPath)
         ----ファイルタイプを判別
         set fType to (do shell script "sips -g format " & fPath)
      end tell
      --------データ構造体
      set dataStruct to {bits:encodedFile, |name|:fName, type:"image/" & fType}
      --------メソッド呼び出し
      tell application "http://blog.fc2.com/xmlrpc.php"
         set ret to call xmlrpc {method name:"metaWeblog.newMediaObject", parameters:{BlogID, uname, pword, dataStruct}}
      end tell
   end repeat
end open
関連記事
スポンサーサイト

コメント

非公開コメント

大変参考になりました。ありがとうございます。(^ー^)
Profile
choco
Author : choco

印刷・製版の現場を経て、広告制作会社でPhotoshopを使ったビジュアル制作を担当。

→現在は車載機器開発ベンダにて、組み込み3Dデータ作成やUIデザインなどを行っています。

Categories
Favorites


Search
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。