index.js 1.4 KB

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