Импорт контактов из yahoo в python

#python #django #yahoo #yahoo-api

#python #django #yahoo #yahoo-api

Вопрос:

Есть ли официальный способ импортировать контакты из адресной книги пользователя из yahoo?

Для Google это действительно просто, как:

 import gdata
contacts_service = gdata.contacts.service.ContactsService()
contacts_service.email = email
contacts_service.password = password
contacts_service.ProgrammaticLogin()
query = gdata.contacts.service.ContactsQuery()
query.max_results = GOOGLE_CONTACTS_MAX_RESULTS
entries = contacts_service.GetContactsFeed(query.ToUri())
  

Есть ли такой простой способ для yahoo?

Я нашел несколько решений, которые не используют api и выглядят странно для серьезной игры — например, ContactGrabber. Я нашел решения, для которых требуется токен BBAuth в приложении django-friends.

Но я хочу официальный, понятный способ получения пользовательских контактов из yahoo. Существует ли он?

UPD: Наконец, я избегаю использования api yahoo и использую django-openinviter для своих целей.

Но я все еще ищу примеры импорта пользовательских контактов с использованием api.

Ответ №1:

Интерфейс Contacts REST API довольно прост. Нужный вам URL-адрес

 http://social.yahooapis.com/v1/user/{guid}/contacts.json
  

Вот скрипт, который будет извлекать данные для вас. Вы можете расширить это, чтобы включить аутентификацию.

 import urllib2
import json

def get_contacts(guid):
    url = 'http://social.yahooapis.com/v1/user/{}/contacts.json'.format(guid)
    page = urllib2.urlopen(url)
    return json.load(page)['contacts']['contact']
  

Комментарии:

1. Спасибо! Можете ли вы улучшить свое решение и рассказать, как получить guid?

2. Вы можете получить guid пользователя, отправив HTTP-запрос GET в social. yahooapis.com/v1/me/guid когда пользователь войдет в систему. См. раздел Разработчик. yahoo.com/social/rest_api_guide /…

3. Это было большим подспорьем! Спасибо. Я не знал, что у них есть этот API и API YQL (который было намного сложнее использовать). Я думаю, вам нужно оставить «.json» в конце и заменить его на «?format= json».

Ответ №2:

У Yahoo есть приличная документация о том, как получить доступ к своим API с помощью Python здесь . Информация там расскажет вам, как получить доступ к API-интерфейсам Yahoo с помощью YQL с помощью HTTP-запросов. Это означает прямое выполнение http-запросов и сообщений и самостоятельный анализ результатов. Тем не менее, у них также есть библиотека python, которая переносит эти вызовы сюда, но она не обновлялась с 13.10.2009, поэтому ваш пробег может отличаться.