Evernote APIEvernote APIРазрабатываем с Разрабатываем с
Тарас СемененкоТарас Семененко
Что такое Evernote?Что такое Evernote?
Всё началось с блокнота...
...стало Вашей дополнительной памятью
Протоколирование совещаний
Хранилище файлов
Сохранение рецептов
Сканирование договоров
75 млн.всего зарегистрированных
пользователей
2,3 млн.пользователей в России и СНГ
Продукты Evernote
Penultimate Clearly Skitch Food Hello Web Clipper Peek
Evernote
Приложения, проверенные и работающие с Evernote
Продвигай своё приложение среди сообщества более75 млн. пользователей
Продвигай своё приложение среди сообщества более75 млн. пользователей
Пользователи Evernote хотят еще больше приложений
Пользователи Evernote хотят еще больше приложений
Создай своёприложение с Evernote
Создай своёприложение с Evernote
Два главных фактора перехода на Премиум:
• Когда пользователь использует Evernote на более чем одном устройстве• Когда пользователь использует стороннее приложение для синхронизации с Evernote
Evernote Премиум
Наша цель
Найти крутые приложения для наших пользователей, чтобы помочь максимально эффективно использовать Evernote
•Разработчики были успешны
•Продвигать крутые приложения
Мы хотим
•Галерея
•Промо-баннеры на сайте evernote.com
•промо-баннеры в приложениях для Mac OS и Windows Desktop
•русскоязычный блог, блог на Хабре
•почтовая рассылка, твиттер
•Продвигать крутые приложения
Каналы провижения
Evernote API
Ключевые моменты Evernote API
• Ядро нашего продукта: Evernote API используется более 30,000 внешними разработчиками и нашими собственными приложениями одинаково. (12 млрд. вызовов API делается каждый месяц!)
• Apache Thrift, не Rest API: Мы сами заботимся о соединении, просто вызывайте методы нашего SDK из вашего приложения
• Одинаковая функции: Доступна вся функциональность Evernote (OCR, Files, Audio, etc)
• Все платформы: SDK для всех доступных платформ находится на github.
Архитектура Evernote
Note StoreNote StoreUser StoreUser Store
Note StoreNote StoreNote StoreNote StoreNote StoreNote StoreNote StoreNote StoreNote StoreNote StoreNote StoreNote Store
ThriftThrift
Evernote API: основные функции
•Доступ к пользовательскому или бизнес аккаунту Evernote
•Чтение/Создание/Поиск заметок
•Поиск связанных заметок (FindRelated)
•Напоминания (Reminders)
•Sharing и Business
Evernote API: авторизация
•OAuth
•По специальному токену (для разработчиков)
Evernote API: ENML
•<en-note>
•<en-media>
•<en-crypt>
•<en-todo>
Evernote API: особые заметки
•Привязаны к конретному приложению
•Доступны только для чтения (из основного клиентского приложения)
•Атрибуты: applicationData (4 Кб), contentClass
Evernote API: эскизы
•На нашем сервере для каждой заметки создается эскиз (изображение размером 300x300)
•Эти эскизы можно использовать в вашем приложении
•Для получения POST-запрос на URL:
https://[sandbox|www].evernote.com/shard/shardID/thm/note/GUID[?size=75]
•Загрузить SDK
•Начать использовать API
•Создать аккаунт на sandbox.evernote.com
•Получить ключ
Личный опыт
Evernote API - обработка скриншотов
QuickTime™ and aPhoto - JPEG decompressor
are needed to see this picture.
Evernote API: получение заметок
my $user_store_url = 'https://' . $evernote_host . '/edam/user'; my $user_store_client = Thrift::HttpClient->new($user_store_url);my $user_store_prot = Thrift::BinaryProtocol->new( $user_store_client );my $user_store = EDAMUserStore::UserStoreClient->new( $user_store_prot, $user_store_prot );my $note_store_url = $user_store->getNoteStoreUrl( $auth_token );my $note_store_client = Thrift::HttpClient->new( $note_store_url );my $note_store_prot = Thrift::BinaryProtocol->new( $note_store_client );my $note_store = EDAMNoteStore::NoteStoreClient->new( $note_store_prot, $note_store_prot );my $notebook = $note_store->getNotebook( $auth_token, $nb_guid );my $filter = new EDAMNoteStore::NoteFilter({notebookGuid => $nb_guid});my $spec = new EDAMNoteStore::NotesMetadataResultSpec({includeTitle => 1, includeAttributes => 1});my $note_metadata_list = $note_store->findNotesMetadata( $auth_token, $filter, $read_notes, 1000, $spec);
Evernote API: создание заметки
my $note = EDAMTypes::Note->new();$note->title($hash_hex);$note->notebookGuid($nb_guid); my $data = EDAMTypes::Data->new();$data->size(length $image_binary);$data->bodyHash($gd_md5);$data->body($gd_data); my $resource = EDAMTypes::Resource->new();$resource->mime("image/$image_ext");$resource->data($data);$resource->attributes(EDAMTypes::ResourceAttributes->new());$resource->attributes->fileName($filepath);
Evernote API: создание заметки
$note->content( '<?xml version="1.0" encoding="UTF-8"?>' . '<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">' . '<en-note><br/><en-media type="image/'.$image_ext.'" hash="' . $gd_hash_hex . '"/></en-note>' );
my $created_note = $note_store->createNote($auth_token, $note);
$note_store->deleteNote($auth_token, $note_guid);
Новые ресурсы и средства для сообщества разработчиков EvernoteНовые ресурсы и средства для сообщества разработчиков Evernote
Для разработкиДля разработки
• Переформирован и часто обновляется нашими командами редакторов и технических специалистов
• Документация, примеры и пошаговые руководства для лучшего понимания Evernote API
• Первый шаг в поиске ответов на вопросы и поддержке от сообщества разработчиков Evernote
• Представляет самые новые особенности и функции, доступные для разработчиков
dev.evernote.com
• Репозиторий, поддерживаемый нашим сообществом разработчиков
• Документация, примеры и пошаговые руководства для лучшего понимания Evernote API
• Первый шаг в поиске ответов на вопросы и поддержке от сообщества разработчиков Evernote
• Представляет самые новые особенности и функции, доступные для разработчиков
SDKs & Samplesgithub.com/evernote
• Место, где вы можете получить отзыв и оценку относительно использования Evernote API
• Наши команды поддержки активно отвечают и отслеживают изменения в текущих обсуждениях
• Разработчики Evernote и ключевые инженеры также просматривают и отвечают на вопросы.
• В нашем сообществе на форумах более 150 бета тестеров, которым можно предложить протестировать новые интеграции Evernote
EVERNOTEФорумы разработчиков
Обновления с прошлого года...
• Новые SDK: Ruby, Python, JS (Node/Phonegap/Windows Metro), Android rebuilt, iOS rebuilt
• Обновление документации: dev.evernote.com полностью перестроен и курируется нашим техническим редактором
• Безопасность / Аутентификация: Улучшена реализация механизма oAuth, добавлена обработка прав доступа
• Evernote Business API: Предоставлена более полная информация о нашем новом Business API
• Рост нашей команды: Наша команда опять увеличилась в 3 раза, новые инженеры, дизайнеры и эксперты!
• Руководства для быстрого старта: Полные пошаговые инструкции для iOS, Ruby, Javascript и Python
Мастер-классы API доступны в Интернете
Вы можете скачать слайды, посмотреть видео и послушать обсуждения на http://bit.ly/144MDjN
Тарас Семененко
dev.evernote.com
Тарас Семененко
dev.evernote.com
Спасибо!Спасибо!
Recommended