Проверка баланса sape.ru через api и узнаем сколько заработали на сапе

Автор: Igor Kirsanov

Программы на python достаточно легко писать, особенно просто когда есть небольшие начальные заготовки.

Первым кирпичиком для программы управления sape.ru является установление подключения через api

В качестве примера приведен скрипт для проверки баланса sape.ru через api. Для этого используем стандартную версию протокола для подключения.


#!/usr/bin/env python
# encoding: utf-8
# автор исправленного кода karguine.ru
 
 
import xmlrpclib
 
class CookieTransport(xmlrpclib.Transport):
    def __init__(self, SESSION_ID_STRING='SAPE'):
        xmlrpclib.Transport.__init__(self)
        self.mycookies=None
        self.mysessid=None
        self.SESSION_ID_STRING = SESSION_ID_STRING
 
    def parseCookies(self,s):
        if s is None: return {self.SESSION_ID_STRING:None}
        ret = {}
        tmp = s.split(';')
        for t in tmp:
            coppia = t.split('=')
            k = coppia[0].strip()
            v = coppia[1].strip()
            ret[k]=v
        return ret
 
    def request(self, host, handler, request_body, verbose=0):
        h = self.make_connection(host)
        if verbose:
            h.set_debuglevel(1)
 
        self.send_request(h, handler, request_body)
        self.send_host(h, host)
 
        if self.mysessid is not None:
            h.putheader("Cookie", "%s=%s" % (self.SESSION_ID_STRING,self.mysessid) )
 
        self.send_user_agent(h)
        self.send_content(h, request_body)
 
        response = h.getresponse(buffering=True)
        errcode = response.status
        errmsg = response.reason
        headers = response.getheaders()
 
        if self.mysessid is None:
            self.mycookies = self.parseCookies( response.getheader('set-cookie') )
            if self.mycookies.has_key(self.SESSION_ID_STRING):
                self.mysessid = self.mycookies[self.SESSION_ID_STRING]
 
        if errcode != 200:
            raise xmlrpclib.ProtocolError(
                host + handler,
                errcode, errmsg,
                headers
                )
 
        self.verbose = verbose
        return self.parse_response(response)
 
server = xmlrpclib.ServerProxy('http://api.sape.ru/xmlrpc/', transport=CookieTransport())
print server.sape.login('логин', 'пароль')
print server.sape.get_user()['balance']

Вот так фактически тремя строчками кода узнаем сколько мы заработали на sape.ru или потратили, если работаем как оптимизаторы.
Класс выше используется только для передачи куки в каждом запросе, т.к. стандартная версия xmlrpclib не поддерживает данную функцию.
Все достаточно просто, мы узнали наш баланс, если хотим получить баланс сразу с нескольких аккаунтов, просто пишем


print server.sape.login('логин', 'пароль')
print server.sape.get_user()['balance']
 
print server.sape.login('другой логин', 'и пароль')
print server.sape.get_user()['balance']

соответственно вместо логинов и паролей пишем свои данные.

Фундамент для sape.ru готов, осталось сделать серьезные проекты.