[python] seolib.ru API

Discussion in 'PHP' started by mironich, 10 Oct 2012.

  1. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Ктонибудь работал с ихним апи на питоне?
    Описание функций тут, конечно описание ох*ное, либо это формат такой описания функц. который ни где не найдешь, либо это хз что.
    http://www.seolib.ru/script/xmlrpc/
    Пример
    Каким боком тут массив непонятно....
    Вот есть код:
    Code:
    cl = xmlrpclib.ServerProxy('http://www.seolib.ru/script/xmlrpc/server.php')
    Шлем через клиент пустой массив идет исключение.
    Code:
     <Fault 3: 'Incorrect parameters passed to method: Wanted string, got array at param 1'>
    
    Так значит хочет строку, в каком формате?
    Как я не пытался но ответ один и тоже:
    Code:
    {'isIndexed': 'a:1:{s:5:&quot;error&quot;;s:17:&quot;Not enought money&quot;;}'}
    
    Отлично, вместо того чтоб сказать о неправильном пароле и.т.д Просто выдает что нет денег...
    И как я только не слал данные всеравно ошибки...
    Саппорт по техн. вопросам хз. за что ему платят:
    В общем помогите, кто работал с ними на python, подкиньте пример,
    .
     
  2. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Array - массив величин, без ключей, почитай про XML-RPC на той же wiki, сразу станет все понятно.
     
  3. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Я читал вчера, даже сниферром смотрел что передаеться:
    Code:
     <Fault 3: 'Incorrect parameters passed to method: Wanted string, got array at param 1'>
    
     
  4. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    А <methodCall><methodName> указываешь? Покажи проснифаные данные, так не скажешь что не так, похоже вместо имени метода передаешь аrray, хотя хз.
     
  5. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Code:
    <?xml version='1.0'?>
    <methodCall>
    <methodName>extlinks.checkYandexIndexedPage</methodName>
    <params>
    <param>
    <value><array><data>
    <value><string>mironich</string></value>
    <value><string>ef85</string></value>
    <value><string>vk.com</string></value>
    </data></array></value>
    </param>
    </params>
    </methodCall>
     
  6. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Да там по своему понимают array, нужна php сериализация array:
     
  7. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    seosimf, спасибо 2 мин. назад сам к этому пришел....
    Но я пробовал вчера серилизовать питоном список не прокатило, буду разбираться.
    Помогла эта стр.: http://www.seolib.ru/script/webinterface/#ParamsStringYandexRegions
    Хз, как серилизовать аналогично php список в питоне, но бл. как так криво можно реализовывать API!!!!!!
    Зачем вообще сериализация если протокол держит передачу структур\обьектов.
    В общем если через pickle серилизовывать то получаеться другой вид и ессно он его не ест...
     
    #7 mironich, 10 Oct 2012
    Last edited: 10 Oct 2012
  8. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Ну тут ручками, там довольно простая сериализация, насчет зачем они так делают и тем более пишут что используют стандартный XML-RPC вводя в заблуждения - This Is Russia умом ее не понять:).
     
  9. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    А есть где-нибудь описание реализации сериализации в php?
    А то я на github поискомищу по сорцам еще долго буду искать.
    Реализацию вкурил.
    Всем спасибо позже функцию кину.
    Вот функц. серилизует список, держит только str\int типы, остальное мне не надо было.
    Code:
    from StringIO import StringIO
    
    def serialize(array):
    	tmp_data = StringIO()
    	tmp_data.write('a:%i:{' % len(array))
    	sch = 0
    	for item in array:
    		tmp_data.write('i:%i;' % sch)
    		if isinstance(item, str):
    			tmp_data.write('s:%i:"%s";' % (len(item), item))
    		elif isinstance(item, int):
    			tmp_data.write('i:%i;' % item)
    		sch += 1
    	tmp_data.write('}')
    	res_str = tmp_data.getvalue()
    	tmp_data.close()
    	return res_str
    
    
    Тему можно закрывать, всем спасибо кто поучаствовал в обсуждении.
    Есть оказываеться готовая либа phpserialize.
     
    #9 mironich, 10 Oct 2012
    Last edited: 11 Oct 2012