phoenix-powerMacで使うブラウザはSafariが快適なのでしばらく使ってみます。

しかし、ブラウザにプラグイン入れるのもあまり好きではないし、プラグインなしで操作するのはキーマップが辛いので、端末上から操作する例のアレを作ってみました。実用性は皆無ですが、iTerm2から操作できます。

基本操作は大体できるようにしています。zsh-vi-mode-normalから入ります。key:a

jq, lynxなどを使いますが、特定の機能を使いたければ、インストール。

ブックマークは、~/Library/Safari/Bookmarks.plistにあるので、それをzsh -c "plutil -convert json ~/Library/Safari/Bookmarks.plist -o ~/output.json"みたいな感じで使ってください。

json構造もフォルダ構造によって異なるので、独自に対応していただく感じで。コードは以下なのですが、構造に関わらず値をとる良い方法があれば教えてください。jqの検索機能を使えばいいのかなあ…。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/zsh

mkdir -p ${0:a:h:h}/txt
safari="~/Library/Safari/Bookmarks.plist"
bookmark="${0:a:h:h}/txt/bookmark.json"
${0:a:h}/iterm_window_trans_off.zsh

if [ ! -f $bookmark ];then
  zsh -c "plutil -convert json $safari -o $bookmark"
fi

u=`cat $bookmark | jq -r ".Children|.[]" | jq -r '.Children|.[].URLString' | grep -v 'jq: error' | grep -v null`
t=`cat $bookmark | jq -r ".Children|.[]" | jq -r '.Children|.[].URIDictionary|.title' | grep -v 'jq: error' | grep -v null`
l=`echo "$t"|wc -l|tr -d ' '`

for (( i=1;i<=$l;i++ ))
do
  tu=`echo "$u" | awk "NR==$i"`
  tt=`echo "$t" | awk "NR==$i"`
  echo "$tt,$tu"
done | peco | cut -d , -f 2