Проверка баланса sape.ru через api и узнаем сколько заработали на сапе
Программы на 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 готов, осталось сделать серьезные проекты.