aura-api

Python API for Yandex.Aura


Keywords
yandex, aura, api, python, python3
License
GPL-3.0
Install
pip install aura-api==1.0.1

Documentation

aura-api

Python API для ЯндСкс.Аура

Π’ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅

Установка

ВрСбуСтся Python 3, Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ Π½Π° Python 3.7

  • Установка с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pip
pip3 install aura-api
  • Установка ΠΈΠ· исходников
git clone https://github.com/mickxolotl/aura-api.git
cd aura-api
python3 setup.py install

ИспользованиС

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ examples

import aura

api = aura.API(aura.AuthSession('LOGIN', 'PASSWORD'))

Π—Π°ΠΌΠ΅Π½ΠΈΠ² строки Π½Π° свои Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ АПИ Π°ΡƒΡ€Ρ‹. НапримСр, обращСния ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ /api/user/interests/ ΠΈΠ»ΠΈ /api/post/info/<post_id>/ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ соотвСтствСнно

api.user.interests()
# ΠΈ
api.post.info[post_id]()

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…

api.post.edit[post_id](text='ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ тСкст', background=19)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния запроса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ:

  • "OK" ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…;
  • id сущности ΠΏΡ€ΠΈ Π΅Π΅ создании;
  • ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Dummy ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Dummy ΠΌΠΎΠΆΠ½ΠΎ нСсколькими способами:

obj.text
obj['text']
obj.get('text', 'DEFAULT')

if 'text' in obj: pass
# для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ наличия значСния 'text' Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅

ΠΡŽΠ°Π½ΡΡ‹

ΠœΠ΅Ρ‚ΠΎΠ΄ HTTP запроса

Для запросов с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄ GET, Π° ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° сСрвСрС POST. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° API Π½Π° основС названия ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² автоматичСски выбираСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄.

Π’ случаС, Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ Π½Π΅Π²Π΅Ρ€Π½ΠΎ, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° повторится с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Π° Π² Π»ΠΎΠ³Π΅ Π±ΡƒΠ΄Π΅Ρ‚ сообщСниС Invalid HTTP method... с ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ. Π’ этом случаС, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ:

api.some.method('GET')
# ΠΈΠ»ΠΈ
api.some.method(_http_method='GET')

Бпособ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° AuthSession ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· отправляСтся нСсколько запросов Π½Π° passport.yandex.ru для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, частыС Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠΎΠ²Π»Π΅Ρ‡ΡŒ Π·Π° собой Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚.

Π”Π°Π½Π½Ρ‹Π΅ для использования CookieSession ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, Π²Ρ‹Π·Π²Π°Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ get_cookie_session_args ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса AuthSession:

session = aura.AuthSession('LOGIN', 'PASSWORD')
cookies = session.get_cookie_session_args()
print(cookies)  # ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования
cookie_session = aura.CookieSession(**cookies)

Настройка

Настройки содСрТатся Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ aura.config.config ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ aura.configure Π΄ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

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 (для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ USER AGENT)