Python で Google Chrome のブックマークを確認する方法をご紹介します。
この記事を書いている時点で私の macOS では Chrome のブックマークのデータは次の場所に格納されています。
/Users/{ユーザ名}/Library/Application Support/Google/Chrome/Default/Bookmarks
尚、確認したときの Chrome のバージョンは 67.0.3396.87 です。
拡張子は付いていませんが中身は JSON テキストなので、 JSON ファイルとして普通に読み込めます。
データを読み込む
import json
import getpass
# `getpass.getuser()` でカレントユーザの名前を取得する
CHROME_BOOKMARK_PATH = (
'/Users/{username}/Library/Application Support/'
'Google/Chrome/Default/Bookmarks'
).format(username=getpass.getuser())
def get_chrome_bookmark_data() -> dict:
'''Get the json of user's Chrome bookmark.'''
with open(CHROME_BOOKMARK_PATH) as f:
return json.load(f)
# JSON 内のデータを取得する
bookmark_data = get_chrome_bookmark_data()
print(type(bookmark_data))
# => <class 'dict'>
# ルートには 3 つの要素が入っている
print(bookmark_data.keys())
# => dict_keys(['checksum', 'roots', 'version'])
# checksum と version はメタ情報なので使わない
print(bookmark_data['checksum'])
# => 2f4a0ccbaba3f63a811870efbeff5dbb
print(bookmark_data['version'])
# => 1
# 実際のブックマークデータは `roots` の下に分かれて入っている
print(bookmark_data['roots'].keys())
# => dict_keys(['bookmark_bar', 'other', 'sync_transaction_version', 'synced'])
# 試しにブックマークバーのデータを表示する
bookmark_bar = bookmark_data['roots']['bookmark_bar']
print(bookmark_bar.keys())
print(bookmark_bar['name'])
for entry in bookmark_bar['children']:
if entry['type'] == 'folder':
print('{type}: {name}'.format(**entry))
else:
print('{type}: {name} - {url}'.format(**entry))
# =>
# url: ブックマーク1 - https://example1.com
# url: ブックマーク2 - https://example2.com
# folder: フォルダA
# folder: フォルダB
# folder: フォルダC
# ...
ルートにある辞書の下に roots
というキーがあり、その下に bookmark_bar
/ other
等のグループに分かれて実際のブックマークデータが格納されています。 bookmark_bar
は名前のとおりそのままブックマークバーのことで、 other
はその他のブックマークを表すようです(公式のドキュメントが無いので、中身を見て判断しています)。
ブックマークの要素は type
というキーを必ず持ち、これが folder
か url
のどちらかの値を持ちます。 folder
と url
のどちらかによって存在するその他のキーは異なります。私が見たかぎりそれぞれが持つキーは次のとおりになっていました。
folder
:
id
ブックマーク IDtype
タイプ(folder
)name
ブックマークの名前children
含まれるブックマークのリストdate_added
作成日時を表す独自のタイムスタンプ?date_modified
更新日時を表す独自のタイムスタンプ?
url
:
id
ブックマーク IDtype
タイプ(url
)name
ブックマークの名前url
URLdate_added
作成日時を表す独自のタイムスタンプ?
id
/ type
/ name
/ date_added
の 4 つについては共通しているようです。
私自身は大量のブックマークを手作業で確認したくなかったので、この方法で確認しました。同じようにブックマークをデータとして確認したい方の参考になれば幸いです。
CSV その他の形式に出力するもう少し本格的なスクリプトを GitHub に置いたので、興味のある方はよろしければ参考にしてください。
注意点として、間違って Bookmarks
ファイルを上書きしてしまうと大変なことになる可能性があるので、参考にする際は 1) バックアップを取ってから触る、 2) 書き込みモードでは絶対にファイルを開かない、等の対策をするようにしてください。