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

--/--|スポンサー広告||TOP↑

追記: 2006年4月4日
下記のものよりもうちょっとマシなものが書けました。こちら
追記終わり。


AppleScript の do JavaScript 命令を使って Safari 様にポストしてもらう方法です。

まず、del.icio.us とはてなブックマークのブックマークレットをセミコロンでつなぎます。
以下は一例です。(お前様のusername)となっている部分は各自 del.icio.us のユーザ名に書き換えます。

上記のブックマークレットを実行すると、現在のウインドウに del.icio.us が、別窓ではてブが開くので、両方のページが読み込み完了するのを待ちます。
読み込み完了する順番によりますがはてブの別窓が背面に隠れてしまうことが多いため、大きなウインドウで開くようにブックマークレットを書き換えておいた方がいいかもしれません。
たとえばこんな感じ。

どちらか好きな方(どちらでもいいです)の編集画面でタグとコメントを入力したら、そのウインドウを前面に出したままで以下のスクリプトを実行。もう一方の編集画面に内容をコピーして送信するところまで自動で行われます。(コピーするのはタグとコメントのみです。)

--スクリプトここから--(\はすべてバックスラッシュ)
--Mac OS X 10.4.5、Safari 2.0.3 で動作確認

tell application "System Events"
if not (exists application process "Safari") then return
end tell

tell application "Safari"

if (number of every document) < 2 then return
set firstDocument to document 1

if URL of firstDocument starts with "http://del.icio.us/" then
set getURL1 to "document.delForm.url.value"
set getURL2 to "document.add.url.value"
set secondDocument to my getURL(getURL1, getURL2, firstDocument)
if secondDocument is "" then
my noMatchURL()
return
end if
set notes to (do JavaScript "document.delForm.notes.value" in firstDocument)
set tempTags to (do JavaScript "document.delForm.tags.value" in firstDocument)
set tags to (do shell script "echo " & quoted form of tempTags & " | sed 's/^/\\[/;s/$/\\]/;s/ /\\]\\[/g;s/\\[\\]$//'")
set comment to tags & notes
do JavaScript "document.add.comment.value='" & comment & "'" in secondDocument
do JavaScript "document.add.submit()" in secondDocument
do JavaScript "document.delForm.submit()" in firstDocument
else if URL of firstDocument starts with "http://b.hatena.ne.jp/" then
set getURL1 to "document.add.url.value"
set getURL2 to "document.delForm.url.value"
set secondDocument to my getURL(getURL1, getURL2, firstDocument)
if secondDocument is "" then
my noMatchURL()
return
end if
set theString to (do JavaScript "document.add.comment.value" in firstDocument)
set tempTags to (do shell script "echo " & quoted form of theString & " | sed -E 's/^\\[[^]\\[]+\\](\\[[^]\\[]+\\])*/&\\" & (ASCII character 10) & "/g'")
--「-E」をつけて拡張正規表現とかいうやつを有効にしないと「+」は正規表現演算子ではなく文字列として扱われる模様。ようわからん。
if (number of paragraphs of tempTags) is 1 then
set notes to (paragraph 1 of tempTags)
set tags to ""
else
set notes to (paragraph 2 of tempTags)
set tags to (do shell script "echo " & quoted form of (paragraph 1 of tempTags) & " | sed 's/^\\[//;s/\\]\\[/ /g;s/\\]$/ /'")
end if
do JavaScript "document.delForm.notes.value='" & notes & "'" in secondDocument
do JavaScript "document.delForm.tags.value='" & tags & "'" in secondDocument
do JavaScript "document.add.submit()" in firstDocument
do JavaScript "document.delForm.submit()" in secondDocument
else
return
end if

end tell

on getURL(script1, script2, theDocument)
tell application "Safari"
set firstURL to (do JavaScript script1 in theDocument)
set everyDocument to (every document)
set secondDocument to ""
repeat with i from 1 to (number of items of everyDocument)
try
set secURL to (do JavaScript script2 in (item i of everyDocument))
if secURL is firstURL then
set secondDocument to (item i of everyDocument)
exit repeat
end if
end try
end repeat
end tell
return secondDocument
end getURL

on noMatchURL()
tell application "Safari" to display dialog "はてなと del.icio.us の編集画面が開かれていて、かつブックマーク先の URL が一致している必要があります。" & return & "両方の編集画面が間違いなく開かれているなら、del.icio.us 側の url テキストボックスを編集して URL をはてなと一致させることで実行可能になるかもしれません。" buttons {"キャンセル"} default button 1 with icon path to resource "compass.icns" in bundle (path to application "Safari")
end noMatchURL
--スクリプトここまで

本当は user.js みたいなことをしたいんですが、それにはもっと勉強が必要なようです。(そもそも可能かどうかすらわからん。Creammonkey とか?)

スポンサーサイト

04/02|AppleScriptコメント(0)トラックバック(0)TOP↑
この記事にコメント
名前:
コメントタイトル:
メールアドレス:
URL:
コメント:

パスワード:
管理人だけに表示:
管理者にだけ表示を許可
この記事にトラックバック
プロフィール

AquaBowler

  • Author:AquaBowler
  • 現在の Mac 環境:
    iBook Late2001
    Mac OS X 10.4.11
フリーエリア
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブログ内検索
RSSフィード
リンク
del.icio.us
feed meter

RSS feed meter for http://kotoerisan.blog16.fc2.com/

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