2010/07/01

safari.scpt

インターネットでなにかをみていると、これは!と思うことがあります。ふとみれば vim が立ち上がっている。今開いているファイルにこのURL をメモしておきたいと思ったらどうしたらいいんだろ...

昔(OS 9 の頃か?)今みているブラウザのURL とタイトルをクリップボードにコピーするAppleScript をどなたかが公開していた思うのですが、それに近いことを vim 内でできないかな?って試みです。

vim から osascript を呼び出せると最近知りましたので使ってみました。

# home に戻ります。
$ cd
# テキストファイルを作ります。
$ vim 01.txt
# .applescript でも .txt でもどっちでもいいみたい。

$ 01.txt

tell application "Safari"
  tell current tab of window 1
    set str to "-- 
" & name & "
" & URL
  end tell
  return str
end tell


# コンパイルしてみます。# この時 Safari が起動します。(起動していなかった場合)
$ osacompile -o ~/01.scpt 01.txt

$ vim memo.txt
# vim で memo などしています。と思いきやインターネットもみているとします。

# !!と思ったら
:r !osascript ~/01.scpt


--
Apple - Support - Discussions - Forum Home
http://discussions.apple.com/index.jspa


# ↑こんな感じに title とulr が書き込まれます。
# でも
# Safari の window を開いない時に誤って :r! osascript ... したとすると
... Can’t make name of «class cTab» of window 1 of application "Safari" ....
# ↑このようになっちゃいます。これを修正しつつあらたまった風情にしてみます。

$ cat 02.applescript

script get_title_url
  to main()
    set n to ASCII character (10)
    tell application "Safari"
      try
        tell current tab of window 1
          set str to "--" & n & name & n & URL & n & "<a href='" & URL & "'>" & name & "</a>"
          if URL is "" then return
          return str
        end tell
      end try
    end tell
  end main
end script

on run
  tell get_title_url
    return main()
  end tell
end run


$ osacompile -o ~/safari.scpt 02.applescript
# test
:r !osascript ~/safari.scpt


--
Mac OS X clipboard sharing - Vim Tips Wiki
http://vim.wikia.com/wiki/VimTip687
<a href='http://vim.wikia.com/wiki/VimTip687'>Mac OS X clipboard sharing - Vim Tips Wiki</a>


# うまくいきました。
# -- INSERT -- で \safari と打つとタイトルとURL とリンク形式文字列が埋め込まれるようにしてみる?
# inoremap <Leader>safari <ESC>:<C-u>read !osascript ~/safari.scpt<CR>kkkddjjA

osascript から受け取る文字列の行頭には \n が混入されている為(\n--\n になる)受け取った後にvim側で kkkdd とかしてます。osascript 側からこれを制御できればいいけどどうしてもわりませんでした。

+++

もっと他の方法(or 適切なのはこうだよ or coolなのあるよ or ふつうこうだよ or plug-in あるよ)などをご存知の方は教えてくださいませ。どのようなコメントも大歓迎です。

[2010-07-08]
fileencodings=utf-8 以外を設定しているとおかしなことになるかもしれません。 アマゾンの本のトップページをsafariで開き、上記の safari.scpt をvim 経由で動かすと下記のようになります。 こうならない場合は :set fileencodings? あたりをみてみてください。

# アマゾンの本トップページ
--
Amazon.co.jp: 本 (和書) 
http://www.amazon.co.jp/%E6%9C%AC-%E5%92%8C%E6%9B%B8/b/ref=sa_menu_jb0/377-9481435-0601213?ie=UTF8&node=465392
109 
<a href='http://www.amazon.co.jp/%E6%9C%AC-%E5%92%8C%E6%9B%B8/b/ref=sa_menu_jb0/377-9481435-0601213?ie=UTF8&node=465392'>Amazon.co.jp : 本 (和書)</a>

# 日本語の本を一冊選んだ場合
--
Amazon.co.jp: 床下の小人たち (岩波少年文庫): メアリー ノートン, ダイアナ・スタンレー, Mary Norton, 林 容吉: 本
http://www.amazon.co.jp/%E5%BA%8A%E4%B8%8B%E3%81%AE%E5%B0%8F%E4%BA%BA%E3%81%9F%E3%81%A1-%E5%B2%A9%E6%B3%A2%E5%B0%91%E5%B9%B4%E6%96%87%E5%BA%AB-%E3%83%A1%E3%82%A2%E3%83%AA%E3%83%BC-%E3%83%8E%E3%83%BC%E3%83%88%E3%83%B3/dp/4001140624/ref=pd_ts_zgc_b_526266_1/377-9481435-0601213?_encoding=UTF8&s=books&pf_rd_m=AN1VRQENFRJN5&pf_rd_s=right-4&pf_rd_r=0EK1B90C9XBKZFDFK6AT&pf_rd_t=1401&pf_rd_p=95969149&pf_rd_i=3077031496
<a href='http://www.amazon.co.jp/%E5%BA%8A%E4%B8%8B%E3%81%AE%E5%B0%8F%E4%BA%BA%E3%81%9F%E3%81%A1-%E5%B2%A9%E6%B3%A2%E5%B0%91%E5%B9%B4%E6%96%87%E5%BA%AB-%E3%83%A1%E3%82%A2%E3%83%AA%E3%83%BC-%E3%83%8E%E3%83%BC%E3%83%88%E3%83%B3/dp/4001140624/ref=pd_ts_zgc_b_526266_1/377-9481435-0601213?_encoding=UTF8&s=books&pf_rd_m=AN1VRQENFRJN5&pf_rd_s=right-4&pf_rd_r=0EK1B90C9XBKZFDFK6AT&pf_rd_t=1401&pf_rd_p=95969149&pf_rd_i=3077031496'>Amazon.co.jp: 床下の小人たち (岩波少年文庫): メアリー ノートン, ダイアナ・スタンレー, Mary Norton, 林 容吉: 本</a>

0 件のコメント: