【Mac】溜まった safari のタブのリンクを書き出す

Safariのタブのリンクを書き出す

Safari でネットを閲覧していると、いつの間にタブだらけになっている、というのはよくあると思う。

タブが溜まりきった様子

このタブを閉じられない、という問題に直面するのは筆者だけだろうか。
 閉じようと思えばもちろん閉じられる。しかし閉じたら最後、二度とこのページにたどり着けない気がして、閉じられないのである。これはなんだろう。心の病だろうか。

タブのタイトルと URL を書き出す

重要なページならブックマークすればいい。
 でもやたらとブックマークすると、ブックマーク欄が散らかってしまう。
 そもそも、本当にそんな大事なページなのかも、もはや自分では判断できない。
 タブばかりが増えていく。

いっそう、タブで開いたページの URL をすべて書き出してしまえば良いのではないか、と考えた。
 ちょいとググったら、すっげーいいスクリプトを発見した。

🔗 tkの備忘録 — [AppleScript]Safariの全タブのタイトルとURLを取得

素晴らしいじゃない。
 ということで、上記のスクリプトをお借りして、シェルスクリプトにしてみた。
 なんでシェルスクリプトかっていうと、筆者は AppleScript、ほとんどわかんないからである。

シェルスクリプト

📝 tabs.sh

#!/bin/sh

fname=$(echo 'tabs'$(date +%Y-%m-%d-%H%M%S)'.html')
echo '<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<title></title>
<body>' > ~/Desktop/$fname

osascript <<EOF
set thePath to ("/Users/USERNAME/Desktop/tabs.txt")
set outputFile to (POSIX file thePath)
property cr : ASCII character (10)
tell application "Safari"
    set fd to (open for access outputFile with write permission)
    repeat with theTab in (tab of every window)
        set theContents to ("● <a href=\"" & (URL of theTab) & "\" target=\"_blank\">" & (name of theTab as string) & "</a><br>" & cr)
        write theContents to fd
    end repeat
    close access fd
end tell
EOF

cat ~/Desktop/tabs.txt | nkf -w >> ~/Desktop/$fname

echo '</body>
</html>' >> ~/Desktop/$fname

mv ~/Desktop/tabs.txt ~/.Trash/tabs$(date +%Y-%m-%d-%H%M%S).txt
open -a 'Safari' ~/Desktop/$fname

実行すると、Safari の全タブのページタイトルと URL を取得して、リンクを作成し、デスクトップに html ファイルとして出力する。
 set thePath toにあるUSERNAMEは適宜書き直して使用する。
 また、nkf が必要だ。
 nkf は Homebrew で簡単にインストールできる。

brew install nkf

頑張ってタブを閉じる

ここまでやったら、さすがにタブを閉じられるはず。
 閉じられるよな、と自らの心に問いかけ、頑張って閉じてみた。
 だいぶすっきりした。

スクリプトの動作の様子

っていうか AppleScript 勉強しよう、いつか。