スポンサーサイト

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
スポンサーサイト

イラレで画像を並べて配置するAppleScript

色補正の終わった画像なんかをイラレに適当に貼り込んで、DDCPや大判インクジェットで出力してバラ校チェックをする事がよくあるんですが、そんな時に使えるイラレ用AppleScript。

ドロップレットとして保存したスクリプトに、配置したい画像をまとめてドラッグ&ドロップするとイラレのドキュメントが作成され画像を並べて配置していき、ついでにファイル名と変更日時も表示します。



端まで行ったら折り返して次の列に配置していきますが、インテリジェンスな事はやってないので位置決めは大雑把です。ドキュメントからはみ出してもお構いなし。
実際の仕事だと1枚に思いっきり詰め込むと思うので、後で並べ直し易いように画像とファイル名はグループ化してあります。



デフォルトのサイズは某社のDDCP用になってます。あと、画像以外のものをドロップするとエラーで止まります。

■動作確認
MacOS X 10.3.9
Illustrator CS2
--------Illustratorのドキュメントサイズを設定(pointで指定)
property docWidth : 1870
property docHeight : 1470

--------画像間の空白(pointで指定)
property spaceX : 25
property spaceY : 30

on open drop
   tell application "Adobe Illustrator"
      activate
      make document with properties {width:docWidth, height:docHeight, ruler origin:{0, 0}}
      set thisDoc to current document
      
      --------テキストのスタイルを設定※auto leading をfalseにしないと行間を設定できない
      set styleRef to make new character style in thisDoc with properties {name:"style1", size:9, auto leading:false, leading:13}
      
      --------マージンを付けてスタート(左上から)
      set locateX to docWidth * 0.05
      set locateY to docHeight * 0.95
      set stepWidth to 0
      set stepHeight to 0
      
      repeat with theFile in drop
         
         tell application "Finder"
            set myPath to theFile as alias
            set fileInfo to (name of myPath as string) & return & modification date of myPath
         end tell
         
         --------文字と画像を配置してグループ化
         set groupRef to make new group item in thisDoc
         set textFrameRef to make new text frame at beginning of groupRef with properties {contents:fileInfo, position:{locateX, locateY + 28}}
         apply character style styleRef to text range of textFrameRef
         set imageRef to make new placed item at end of groupRef with properties {file path:myPath, position:{locateX, locateY}}
         
         set stepWidth to width of textFrameRef
         if width of imageRef > width of textFrameRef then
            set stepWidth to width of imageRef
         end if
         set curHeight to height of imageRef
         if curHeight > stepHeight then
            set stepHeight to curHeight
         end if
         set locateX to locateX + stepWidth + spaceX
         if locateX > docWidth * 0.9 then --------配置画像の原点がドキュメント幅の90%を超えたら折り返し
            set locateX to docWidth * 0.05
            set locateY to locateY - (stepHeight + spaceY)
            set stepHeight to 0
         end if
      end repeat
   end tell
end open
Profile
choco
Author : choco

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

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

Categories
Favorites


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