Уведомления

Группа в Telegram: @pythonsu

#1 Март 28, 2013 11:52:36

paradigm
Зарегистрирован: 2013-03-28
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужны примеры формирования запросов к API Unisender

Добрый день!

Пока ещё не освоился со структурами в Питоне.

Потому не получается понять - как надо сформировать запрос к функции API на питоне, например, при добавлении нового пользователя в Юнисендер.
Описание функции API: http://www.unisender.com/ru/help/api/importContacts.html

Знакомые, сами не пишущие на Питоне- дали подсказку, как её, якобы, использовать:
api.importContacts(field_names='email', field_names='Name',data='1@1.com',data='Kir')

Однако этот вариант не работает, ругается на неправильное использование ключевого слова:
SyntaxError: keyword can't be an expression

Нужна Ваша помощь!


Также желателен пример как грамотно раскодировать ответ запроса.

Я сейчас делаю это топорно:

answer = api.importContacts('field_names=“email”, field_names=“Name”','data=“1@1.com”,data=“Kir”')

for lines in answer:
print ‘===’,lines,'==='
print ‘###1: ’, answer

Офлайн

#2 Март 28, 2013 19:17:22

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Нужны примеры формирования запросов к API Unisender

По указанной вами ссылке - описание http api. Вы используете некую сущность ‘api’ у которой дергаете методы, логично предположить что ваше ‘api’ - это некая обвязка к апи из описания, вот в доках этой обвязки и смотрите.

Офлайн

#3 Март 28, 2013 19:27:56

paradigm
Зарегистрирован: 2013-03-28
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужны примеры формирования запросов к API Unisender

s0rg
По указанной вами ссылке - описание http api. Вы используете некую сущность ‘api’ у которой дергаете методы, логично предположить что ваше ‘api’ - это некая обвязка к апи из описания, вот в доках этой обвязки и смотрите.

Документации для Питона нет. Есть примеры-обёртки для Рельсов и Сишарпа..

По Питону я только нашёл пару малоинформативных сырцов в архиве на их сайте.

Например есть вот такой тестовый запрос внутри класса:

    def testMethodGetLists(self):
        title = u'Рассылка'
        lists = self.api.getLists()
        self.assertTrue(title in lists['result'][0]['title'])
Ок.
А как мне сформировать самому структуру вида
lists['result'][0]['title']
чтобы передать её потом в функцию?

Вот таких азов я не знаю.
Знал - экспериментировал-бы скармливанием разных данных в API..

Отредактировано paradigm (Март 28, 2013 19:28:36)

Офлайн

#4 Март 28, 2013 20:21:36

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Нужны примеры формирования запросов к API Unisender

Если я все правильно понял из кода модуля, то вам нужно что-то такое:

api.importContacts({
    'field_names': ['email', 'Name'],
    'data': ['1@1.com', 'Kir']
})
Обратите внимание, что порядок полей в field_names должен _точно_ совпадать с порядком данных для них в ‘data’, но api жуткий конечно ))

Офлайн

#5 Март 29, 2013 11:21:05

paradigm
Зарегистрирован: 2013-03-28
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужны примеры формирования запросов к API Unisender

Итак, у меня всё заработало после некислого пути и труда.

Пишу “формулу счастья”.

Сначала надо найти файл pyunisend.py и в нём поменять строку

self.default_params = {'api_key':api_key, 'format':format, 'test_mode':test_mode}
на
self.default_params = {'api_key':api_key, 'format':format}

Если этого не сделать - наши запросы к АПИ Юнисендера будут утыкаться в ошибку вида
code: invalid_arg
error: Некорректный параметр 'test_mode'


Затем уже правильное обращение к API для добавления пользователей в указанные номера подписочных листов и парсинг ответа:
(код дико корявый, вы точно сможете написать лучше
    ## Заливаем новых пользователей в базу Юнисендера в разные списки по их полу
    api = PyUniSend('ВАШ АПИ-КЛЮЧ')
    # Добавление новых пользователей в базу Юнисендера
    # http://www.unisender.com/ru/help/api/importContacts.html
    print 'Добавляем новых пользователей в Юнисендер..'
    answer = api.importContacts({'field_names': ['email', 'Name', 'email_list_ids'], 'data': [ ['Kir', '1@1.com', '1705282'], ['Andrew', '2@1.com', '1705282'] ]})
    for lines in answer: 
        print '===',lines,'==='
        print '###1: ', answer[lines], '\n'
        if lines=='result':
                for st in answer[lines]:
                    if st in ['updated','deleted', 'new_emails', 'total', 'inserted'] : 
                          print '  = '+st+':',answer[lines][st]
                    else:
                          if st=='log':
                              # Разбираем лог..
                              print '  = '+st+':'
                              for log_line in answer[lines][st]:
                                  print 'index',log_line['index'], '\nmessage', log_line['message'], '\ncode', log_line['code'],'\n'
                              
                          else:
                              # Неизвестный параметр, просто выводим его на печать
                              print '  = ',st,':',answer[lines][st]
            
  
    # Активация новых пользователей в Юнисендере
    # http://www.unisender.com/ru/help/api/activateContacts.html
    print '\nАктивируем новых пользователей..'
    answer = api.activateContacts({'contact_type': 'email', 'contacts': [ '1@1.com', '2@1.com']})
    for lines in answer: 
        print '===',lines,'==='
        print '###1: ', answer[lines]

Офлайн

#6 Авг. 23, 2018 18:12:16

Marina
Зарегистрирован: 2018-08-23
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужны примеры формирования запросов к API Unisender

Добрый день, подскажите с чем может быть связана ошибка для этого модуля?

 from pyunisend import PyUniSend
ImportError Traceback (most recent call last)
<ipython-input-6-0fe251b8fe13> in <module>()
—-> 1 from pyunisend import PyUniSend

ImportError: cannot import name ‘PyUniSend’

Офлайн

#7 Авг. 24, 2018 01:55:50

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Нужны примеры формирования запросов к API Unisender

Marina
Добрый день, подскажите с чем может быть связана ошибка для этого модуля?
ImportError: cannot import name 'PyUniSend'
Версия модуля могла измениться и там имена могли переделать разработчики модуля. То есть код писали для одной версии, а ты его запускаешь на другой версии.



Отредактировано py.user.next (Авг. 24, 2018 01:56:45)

Офлайн

#8 Авг. 24, 2018 11:06:03

Marina
Зарегистрирован: 2018-08-23
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужны примеры формирования запросов к API Unisender

Да вроде то же имя используется class PyUniSend(object)

Офлайн

#9 Авг. 24, 2018 11:13:08

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Нужны примеры формирования запросов к API Unisender

Выполни

  
import pyunisend
print(pyunisend.PyUniSend)



Офлайн

#10 Авг. 24, 2018 13:17:57

Marina
Зарегистрирован: 2018-08-23
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужны примеры формирования запросов к API Unisender

Да, тоже самое тогда я вообще не понимаю как получить этот объект.
api = PyUniSend('ВАШ АПИ-КЛЮЧ')

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version