node.js 获取所有 mac 联系人
node.js get all mac contacts
我想在不使用节点包 "osa-contacts" 的情况下获取联系人应用程序中我所有 mac 联系人的数组列表,因为它不能像我想要的那样工作,但事实并非如此快速地。有没有办法做到这一点?目前我正在使用 OSX El Capitan 10.11.4.
这是一个 electron.atom.io 应用程序。
您可以使用类似 nodobjc
的东西,它提供了 Node 和 Objective-C 运行时之间的桥梁(尽管如果您想使用它,您可能应该已经有一些 Objective-C/Cocoa 经验广泛)。
这是一个打印出 first/last 姓名的联系人列表的示例:
var $ = require('nodobjc');
// Load the AddressBook framework.
$.framework('AddressBook');
// Get an instance of the address book for the current user.
var addressBook = $.ABAddressBook('addressBook');
// Retrieve all contacts.
var people = addressBook('people');
// Run through the list of contacts and print their first/last name.
var count = people('count');
for (var i = 0; i < count; i++) {
var person = people('objectAtIndex', i);
var firstName = person('valueForProperty', $.kABFirstNameProperty);
var lastName = person('valueForProperty', $.kABLastNameProperty);
console.log(i, firstName, lastName);
}
我不知道这比 osa-contacts
快多少(或慢多少),或者它是否像您想要的那样工作。它使用的 AddressBook
框架记录在案 here。
我想在不使用节点包 "osa-contacts" 的情况下获取联系人应用程序中我所有 mac 联系人的数组列表,因为它不能像我想要的那样工作,但事实并非如此快速地。有没有办法做到这一点?目前我正在使用 OSX El Capitan 10.11.4.
这是一个 electron.atom.io 应用程序。
您可以使用类似 nodobjc
的东西,它提供了 Node 和 Objective-C 运行时之间的桥梁(尽管如果您想使用它,您可能应该已经有一些 Objective-C/Cocoa 经验广泛)。
这是一个打印出 first/last 姓名的联系人列表的示例:
var $ = require('nodobjc');
// Load the AddressBook framework.
$.framework('AddressBook');
// Get an instance of the address book for the current user.
var addressBook = $.ABAddressBook('addressBook');
// Retrieve all contacts.
var people = addressBook('people');
// Run through the list of contacts and print their first/last name.
var count = people('count');
for (var i = 0; i < count; i++) {
var person = people('objectAtIndex', i);
var firstName = person('valueForProperty', $.kABFirstNameProperty);
var lastName = person('valueForProperty', $.kABLastNameProperty);
console.log(i, firstName, lastName);
}
我不知道这比 osa-contacts
快多少(或慢多少),或者它是否像您想要的那样工作。它使用的 AddressBook
框架记录在案 here。