index.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. const backup = require('./util/iphone_backup')
  2. const inquirer = require('inquirer')
  3. const chalk = require('chalk')
  4. async function main() {
  5. try {
  6. var backups = await backup.availableBackups()
  7. var result = await inquirer.prompt({
  8. type: 'list',
  9. name: 'backupid',
  10. message: 'Select Backup:',
  11. choices: backups.map(el => {
  12. console.log(el)
  13. return {
  14. name: el.manifest ?
  15. `${el.manifest.Lockdown.DeviceName} <${el.id}> ${el.status ? new Date(el.status.Date).toLocaleString() : ''}` :
  16. `Unknown Device ${el.id} ${el.status ? new Date(el.status.Date).toLocaleString() : ''}`,
  17. value: el.id
  18. }
  19. })
  20. })
  21. const selectedBackup = backup.iPhoneBackup.fromID(result.backupid)
  22. const conversations = await selectedBackup.getConversations()
  23. var conversation = await inquirer.prompt({
  24. type: 'list',
  25. name: 'chat_id',
  26. message: 'Select Conversation:',
  27. choices: conversations.map(el => {
  28. return {
  29. name: chalk.gray(el.date ? el.date.toLocaleString() : '??') + ' ' + el.display_name + ' ' + el.chat_identifier,
  30. value: el.ROWID
  31. }
  32. })
  33. })
  34. //console.log(conversation)
  35. const messages = await selectedBackup.getMessages(conversation.chat_id)
  36. console.log(
  37. messages.map(el => chalk.gray(el.date ? el.date.toLocaleString() : '') + ' ' + chalk.blue(el.sender + ': ') + el.text)
  38. .join('\n')
  39. )
  40. } catch(e) {
  41. console.log(e)
  42. }
  43. }
  44. process.on('unhandledRejection', (reason, p) => {
  45. console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
  46. // application specific logging, throwing an error, or other logic here
  47. })
  48. try {
  49. main()
  50. } catch (e) {
  51. console.log(e)
  52. }