Metadata-Version: 2.1
Name: aura-api
Version: 1.0.2
Summary: Python API for Yandex.Aura
Home-page: https://github.com/skorpionikus/aura-api
Author: mickxolotl
Author-email: mickxolotl@yandex.ru
License: GPL3
Keywords: yandex aura api
Platform: UNKNOWN
Description-Content-Type: text/markdown
Requires-Dist: requests

# 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)


