open_tabs.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. const fileHash = require('../../util/backup_filehash')
  2. const TABS_DB = fileHash('Library/Safari/BrowserState.db', 'AppDomain-com.apple.mobilesafari')
  3. module.exports = {
  4. version: 4,
  5. name: 'safari.open_tabs',
  6. description: `List open Safari tabs when backup was made`,
  7. requiresBackup: true,
  8. // Run on a v3 lib / backup object
  9. run (lib, { backup }) {
  10. return openTabsReport(backup)
  11. },
  12. // Available fields.
  13. output: {
  14. title: el => el.title,
  15. url: el => el.url,
  16. lastViewedTime: el => (new Date((el.last_viewed_time + 978307200) * 1000).toDateString()) + ' ' + (new Date((el.last_viewed_time + 978307200) * 1000).toTimeString())
  17. }
  18. }
  19. const openTabsReport = (backup) => {
  20. return new Promise((resolve, reject) => {
  21. backup.openDatabase(TABS_DB)
  22. .then(db => {
  23. db.all(`
  24. select * from tabs
  25. order by last_viewed_time DESC
  26. `, function (err, rows) {
  27. if (err) reject(err)
  28. resolve(rows)
  29. })
  30. })
  31. .catch(reject)
  32. })
  33. }