Guest User

export chrome history to firefox

a guest
Apr 25th, 2022
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.34 KB | None | 0 0
  1. import sys
  2. import os
  3. import sqlite3
  4. import base64
  5.  
  6. # 32bit
  7. golden_ratio = 0x9e3779b9
  8.  
  9. # 32bit
  10. def rotate_left_5(val):
  11.     return ( (val << 5) % (1 << 32) ) | (val >> 27)
  12.  
  13. # 32bit
  14. def add_to_hash(hashVal, val):
  15.     return (golden_ratio * (rotate_left_5(hashVal) ^ val)) % (1 << 32)
  16.  
  17. # 64bit
  18. def hash_simple(url, len):
  19.     hashVal = 0
  20.     for i in range(len):
  21.         hashVal = add_to_hash(hashVal, ord(url[i]))
  22.     return hashVal
  23.  
  24. # 64bit
  25. def url_hash(url, len):
  26.     prefix = -1
  27.     for i in range(len):
  28.         if url[i] == ':':
  29.             prefix = i
  30.             break
  31.     return ((((hash_simple(url, prefix) & 0x0000ffff) << 32) % (1 << 64)) + hash_simple(url, len)) % (1 << 64)
  32.  
  33. def gen_guid():
  34.     urlB64 = base64.urlsafe_b64encode(os.urandom(9))
  35.     # omit padding
  36.     return urlB64.replace(b'=', b'')
  37.  
  38. # convert chrome timestamp
  39. def chrome_epoch(time):
  40.     time = time // 1000000
  41.     return time - 11644473600
  42.  
  43. def ms_time(time):
  44.     return time * 1000000
  45.  
  46. if len(sys.argv) < 3:
  47.     print(f'{sys.argv[0]}: from.sqlite to.sqlite')
  48.     exit()
  49.  
  50. edgeHist = sys.argv[1]
  51. # librewolf
  52. lwHist = sys.argv[2]
  53.  
  54. lw = sqlite3.connect(lwHist)
  55. lwDb = lw.cursor()
  56.  
  57. # fetch last id
  58. lastId = lwDb.execute("SELECT id FROM moz_places ORDER BY id DESC LIMIT 1").fetchone()[0]
  59. # fetch last origin_id
  60. lastOriginId = lwDb.execute("SELECT origin_id FROM moz_places ORDER BY origin_id DESC LIMIT 1").fetchone()[0]
  61. # fetch last visit id
  62. lastVisitId = lwDb.execute("SELECT id FROM moz_historyvisits ORDER BY id DESC LIMIT 1").fetchone()[0]
  63.  
  64. edge = sqlite3.connect(edgeHist)
  65. edgeDb = edge.cursor()
  66.  
  67. # fetch rows from edge history
  68. edgeRows = edgeDb.execute("SELECT url, title, visit_count, last_visit_time FROM urls ORDER BY id")
  69.  
  70. # insert them into places.sqlite
  71. for row in edgeRows:
  72.     lastId += 1
  73.     lastOriginId += 1
  74.     lastVisitId += 1
  75.     urlHash = url_hash(row[0], len(row[0]))
  76.     guid = gen_guid()
  77.     unixTime = ms_time(chrome_epoch(row[3]))
  78.     lwDb.execute("INSERT INTO moz_places (id, url, title, visit_count, last_visit_date, url_hash, guid, origin_id) \
  79.    VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (lastId, row[0], row[1], row[2], unixTime, urlHash, guid, lastOriginId))
  80.     lwDb.execute("INSERT INTO moz_historyvisits VALUES (?, ?, ?, ?, ?, ?)", (lastVisitId, 0, lastId, unixTime, 1, 0))
  81.  
  82. lw.commit()
  83. lw.close()
  84. edge.close()
  85.  
Add Comment
Please, Sign In to add comment