# aura-api
Python API для Яндекс.Аура
**В разработке**
## Установка
Требуется Python 3, тестировалось на Python 3.7
* Установка с помощью pip
```bash
pip3 install aura-api
```
* Установка из исходников
```bash
git clone https://github.com/mickxolotl/aura-api.git
cd aura-api
python3 setup.py install
```
## Использование
Примеры использования можно найти в каталоге [examples](https://github.com/mickxolotl/aura-api/tree/master/examples)
```python
import aura
api = aura.API(aura.AuthSession('LOGIN', 'PASSWORD'))
```
Заменив строки на свои логин и пароль, выполните код.
Теперь можно обращаться к методам АПИ ауры.
Например, обращения к методу `/api/user/interests/` или `/api/post/info/<post_id>/` выполняются соответственно
```python
api.user.interests()
# и
api.post.info[post_id]()
```
Параметры запроса можно указать в аргументах
```python
api.post.edit[post_id](text='Отредактированный текст', background=19)
```
Результатом выполнения запроса может быть:
* "OK" при изменении данных;
* id сущности при ее создании;
* объект `Dummy` при получении данных.
Работать с `Dummy` можно несколькими способами:
```python
obj.text
obj['text']
obj.get('text', 'DEFAULT')
if 'text' in obj: pass
# для проверки наличия значения 'text' в объекте
```
## Нюансы
#### Метод HTTP запроса
Для запросов с получением данных используется HTTP метод `GET`, а при изменении данных на сервере `POST`.
В случае, если метод был выбран неверно, попытка повторится с другим методом,
а в логе будет сообщение `Invalid HTTP method...` с корректным методом.
Его можно указать при обращении к методу:
```python
api.some.method('GET')
# или
api.some.method(_http_method='GET')
```
#### Способ авторизации
При инициализации объекта `AuthSession` каждый раз отправляется несколько запросов
на `passport.yandex.ru` для авторизации.
Возможно, частые авторизации могут показаться подозрительными и повлечь за собой
наложение ограничений на аккаунт.
Данные для использования `CookieSession` можно получить, вызвав метод `get_cookie_session_args`
объекта класса `AuthSession`:
```python
session = aura.AuthSession('LOGIN', 'PASSWORD')
cookies = session.get_cookie_session_args()
print(cookies) # сохранить для последующего использования
cookie_session = aura.CookieSession(**cookies)
```
## Настройка
Настройки содержатся в объекте `aura.config.config` и могут быть
изменены напрямую или с помощью `aura.configure` до инициализации прочих объектов
```python
aura.config.config.USER_AGENT = 'Mozilla/5.0 ...'
aura.configure(USER_AGENT='Mozilla/5.0 ...', API_DELAY=0)
```
* USER_AGENT - отправляемый в каждом запросе заголовок, должен соответствовать USER_AGENT
мобильного устройства и отвечать некоторым другим условиям
* DEFAULT_APP_VERSION - отправляемая в каждом запросе версия используемого приложения
* HTTP_TIMEOUT - лимит ожидания ответа
* API_DELAY - задержка между повторными запросами
* HTTP_METHOD_CORRECTION - при ошибке Invalid action пробовать с альтернативным HTTP методом,
за исключением случаев, когда метод указан вручную
## Доступные методы
В открытом доступе нет всех доступных методов и их аргументов.
Здесь со временем будут появляться основные методы и аргументы с описанием
(но особо на это рассчитывать не стоит).
Изучать необходимые вам методы можно выполняя действия и наблюдая за тем, какие HTTP запросы
отправляются.
Возможные варианты:
1. Заменяя USER AGENT в браузере отслеживать пакеты при работе с аурой во вкладке "Network" инструментов разработчика
(F12 на многих браузерах)
2. Перенаправляя пакеты с мобильного устройства на ПК используя для их анализа Charles или Fiddler или используя
аналогичные инструменты на мобильном устройстве
Так же возможно выудить что-то из [main.js](https://yandex.ru/aura/static/js/main.8863655d.js) (для перехода
необходим мобильный USER AGENT)