ID Managerがいつまで使えるかっていうのもあって移行先としてとりあえずBitwardenを試してみることに。
ID Managerからエクスポートしたcsvをそのまま突っ込めないですが、手作業でチマチマ整形なんてやってられっか。
ということで整形するスクリプトの出番です。
import csv input_file = 'idm_export.csv' output_file = 'bitwarden_import.csv' bitwarden_headers = [ 'folder', 'favorite', 'type', 'name', 'notes', 'fields', 'login_uri', 'login_username', 'login_password', 'login_totp' ] with open(input_file, 'r', encoding='shift_jis') as infile, \ open(output_file, 'w', newline='', encoding='utf-8') as outfile: reader = csv.DictReader(infile) writer = csv.DictWriter(outfile, fieldnames=bitwarden_headers) writer.writeheader() current_folder = '' for row in reader: item_type = row.get('Folder or Item', '').strip().lower() if item_type == 'f': current_folder = row.get('Title', '').strip() elif item_type == 'i': name = row.get('Title', '').strip() username = (row.get('Account ID') or row.get('e-mail') or '').strip() password = (row.get('Password') or '').strip() url = (row.get('URL') or '').strip() notes = (row.get('Comment') or '').strip() bw_row = { 'folder': current_folder, 'favorite': '0', 'type': 'login', 'name': name, 'notes': notes, 'fields': '', 'login_uri': url, 'login_username': username, 'login_password': password, 'login_totp': '' } writer.writerow(bw_row) print(f'変換完了: {output_file}')
という感じで変換したら上手く取り込めたようです。