Skip to content

Instantly share code, notes, and snippets.

@v9n
Last active February 16, 2021 23:44
Show Gist options
  • Save v9n/ae05edd9dba16df503b5b2c0b11e8c04 to your computer and use it in GitHub Desktop.
Save v9n/ae05edd9dba16df503b5b2c0b11e8c04 to your computer and use it in GitHub Desktop.
require 'csv'
require "base64"
require 'json'
table = CSV.read("lastpass_export.csv", headers: true)
# export BW_SESSION="Run `bw login` to get this"
folders = []
table.each do |row|
item = {
type: 1,
name: row["name"],
notes: "",
favorite: false,
fields: [],
login: {
uris: [
{
uri: row["url"].split("?").first,
}
],
username: row["username"],
password: row["password"],
},
}
row.each do |k, v|
ignore = %w(name username password grouping url fav)
if ignore.include? k
next
end
if v.nil?
next
end
if v.length < 200
item[:fields] << {name: k, value: v}
else
item[:notes] += "--->#{k}:\n#{v}\n\n"
end
end
puts item.to_json
encode = Base64.strict_encode64(item.to_json)
puts encode
puts "\n\n\n\n"
`bw create item '#{encode}'`
next
if row["grouping"] && row["grouping"] != "" && row["grouping"] != "(none)"
if !folders.include? row["grouping"]
fdjson = {name: row["grouping"]}.to_json
puts fdjson
r = Base64.strict_encode64(fdjson)
puts "Createfolder"
`bw delete folder #{r}`
folders << row["grouping"]
end
next
end
if row["url"] == "http://sn"
p "Secure note"
end
# username
# password
# groupin
row.each do |k, v|
puts "*****\n #{k} = #{v}"
end
puts "=======================\n"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment