本文整理汇总了Python中request.Request.request方法的典型用法代码示例。如果您正苦于以下问题:Python Request.request方法的具体用法?Python Request.request怎么用?Python Request.request使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类request.Request
的用法示例。
在下文中一共展示了Request.request方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: FormationThread
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
class FormationThread(threading.Thread):
'''
formationid:
120: 八卦阵
160: 雁行阵
'''
def __init__(self,include,serverid,formationid):
threading.Thread.__init__(self)
self.request = Request(include)
self.serverid = serverid
self.formationId = formationid
def run(self):
# 获得所有阵型
'''
url = "http://s%d.as.yaowan.com/root/general!formation.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.request.request(url)
res = zlib.decompress(reqinfo.read())
print 'general format:',res
'''
# 调整阵型
url = "http://s%d.as.yaowan.com/root/general!saveDefaultFormation.action?%d" %(self.serverid,int(time.time()*1000))
data = {"formationId":self.formationId}
reqinfo = self.request.request(url,data)
res = zlib.decompress(reqinfo.read())
if res:
res = res[res.find("<?xml"):]
infoXML = etree.XML(res)
for child in infoXML.getchildren():
if child.tag=="message":
print child.text
break
示例2: Chat
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
class Chat():
def __init__(self,include):
self.request = Request(include)
'''
请求聊天URL,解析得到ChatInfo对象
'''
def getChatInfo(self,url):
data = {'length' :30,
'channel' :"1,2,3,4,5,6,7,8,9",
'time' :0}
reqinfo = self.request.request(url,data,jsonFormat=False)
res = zlib.decompress(reqinfo.read())
if res:
res = res[res.find("<?xml"):]
# 解析成ChatInfo对象
chatinfo = ChatInfo()
try:
chatXML = etree.XML(res)
except:
print u"[error]读取聊天信息失败"
return None
for child in chatXML.getchildren():
if child.tag=="state":
chatinfo.state = child.text
elif child.tag=="message":
chatinfo.message = child.text
elif child.tag=="chats":
# 聊天主信息
for chattype in child.getchildren():
if chattype.tag=="nationchatlog":
# 国家聊天
nationchatloglist = []
for childlog in chattype.getchildren():
chatlog = self.getChatLog(childlog)
nationchatloglist.append(chatlog)
chatinfo.nationchatloglist = nationchatloglist
if chattype.tag=="serverchatlog":
# 服务器消息
serverchatloglist = []
# DOTO
for childlog in chattype.getchildren():
chatlog = self.getChatLog(childlog)
serverchatloglist.append(chatlog)
chatinfo.serverchatloglist = serverchatloglist
return chatinfo
return None
def getChatLog(self,child):
chatlog = ChatLog()
chatlog.playerid = child.find("playerid").text
chatlog.name = child.find("name").text
chatlog.content = child.find("content").text
chatlog.time = child.find("time").text
return chatlog
示例3: _request
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
def _request(self, **kw):
self._set_options(**kw)
if self._is_param_missing(**kw):
return
method = self.method
cookie = self._cookie
data = self._data
r = Request()
url = ''.join((self.base_url, self.path))
if method != 'GET':
if data:
return r.request(method, url, cookies=cookie, data=data)
else:
return r.request(self.method, url, cookies=cookie)
else:
return r.request(self.method, url, cookies=cookie)
示例4: ChatSendThread
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
class ChatSendThread(threading.Thread):
def __init__(self,include,serverid,msg,chattype):
threading.Thread.__init__(self)
self.serverid = serverid
self.request = Request(include)
self.msg = msg
self.chattype=chattype
def run(self):
url = "http://s%d.as.yaowan.com/root/chat!send.action?%d" %(self.serverid,long(time.time()*1000))
channel = self.request.include.channel.get(self.chattype)[0]
data = {"channel":channel,
"contant":self.msg,
"recver":self.request.include.channel.get(self.chattype)[1]}
reqinfo = self.request.request(url,data)
res = zlib.decompress(reqinfo.read())
print 'chat send res:',res
示例5: DraughtThread
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
class DraughtThread(threading.Thread):
def __init__(self,include,serverid,playerinfo):
threading.Thread.__init__(self)
self.request = Request(include)
self.serverid = serverid
self.playerinfo = playerinfo
def run(self):
self.request.include.logger.info(u"兵力不足10000")
'''
# 请求征兵操作
url = "http://s%d.as.yaowan.com/root/mainCity!preDraught.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.request.request(url)
res = zlib.decompress(reqinfo.read())
print 'preDraught res:',res
'''
'''
补充兵力
'''
url = "http://s%d.as.yaowan.com/root/mainCity!draught.action?%d" %(self.serverid,int(time.time()*1000))
data = {"forceNum":10000}
reqinfo = self.request.request(url,data)
res = zlib.decompress(reqinfo.read())
if res:
res = res[res.find("<?xml"):]
infoXML = etree.XML(res)
updateinfo = PlayerUpdateInfo()
for child in infoXML.getchildren():
if child.tag=="playerupdateinfo":
food = child.find("food").text
forces = child.find("forces").text
kfzonestate = child.find("kfzonestate").text
updateinfo.food = food
updateinfo.forces = forces
updateinfo.kfzonestate =kfzonestate
if updateinfo.forces:
self.request.include.logger.info(u"补充10000兵力成功")
else:
self.request.include.logger.info(u"补充10000兵力失败")
示例6: RefineThread
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
class RefineThread(threading.Thread):
def __init__(self,include,serverid,playerinfo):
threading.Thread.__init__(self)
self.request = Request(include)
self.serverid = serverid
self.playerinfo = playerinfo
self.stoped = False
def stop(self):
self.request.include.logger.info(u"精炼线程停止")
self.stoped = True
def isStoped(self):
return self.stoped
'''
获取精炼信息
'''
def getRefineInfo(self):
url = "http://s%d.as.yaowan.com/root/refine!getRefineInfo.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.request.request(url)
res = zlib.decompress(reqinfo.read())
if res:
if res.find("<?xml")<0:
self.request.include.logger.warning(u"获取精炼信息失败,重新请求...")
time.sleep(2)
return self.getRefineInfo()
res = res[res.find("<?xml"):]
print 'refine res:',res
infoXML = etree.XML(res)
refineInfo = RefineInfo()
refinergrouplist = []
refinerlist = []
for child in infoXML.getchildren():
if child.tag=="state":
refineInfo.state = child.text
if child.tag=="refinenum":
refineInfo.refinenum = int(child.text)
if child.tag=="maxrefinenum":
refineInfo.maxrefinenum = child.text
if child.tag=="surplursleft":
refineInfo.surplursleft = child.text
if child.tag=="copper":
refineInfo.copper = child.text
if child.tag=="percost":
refineInfo.percost = child.text
if child.tag=="allcost":
refineInfo.allcost = child.text
if child.tag=="refinergroup":
refinergroup = RefinerGroup()
refinergroup.time = int(child.findtext("time"))
refinergroup.id = child.findtext("id")
refinergroup.cdflag = int(child.findtext("cdflag"))
refinergrouplist.append(refinergroup)
if child.tag=="refiner":
refiner = Refiner()
refiner.id = child.findtext("id")
refiner.color = child.findtext("color")
refiner.name = child.findtext("name")
refiner.stone = child.findtext("stone")
refiner.order = child.findtext("order")
refiner.desc = child.findtext("desc")
refinerlist.append(refiner)
if child.tag=="playerupdateinfo":
updateinfo = PlayerUpdateInfo()
updateinfo.kfzonestate = child.findtext("kfzonestate")
refineInfo.playerupdateinfo = updateinfo
refineInfo.refinergrouplist = refinergrouplist
refineInfo.refinerList = refinerlist
return refineInfo
return None
def run(self):
if self.stoped:
return
refineInfo = self.getRefineInfo()
if not refineInfo:
self.request.include.logger.error(u"获取精炼信息失败")
self.stop()
return
# 判断精炼次数是否为0,是则停止线程
if refineInfo.refinenum==0:
self.request.include.logger.warning(u"精炼次数为0")
self.stop()
return
# 开启精炼队列
refinergroup = refineInfo.refinergrouplist
for refiner in refinergroup:
if refiner.time==0 and refiner.cdflag==0:
# 开启精炼
url = "http://s%d.as.yaowan.com/root/refine!refine.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.request.request(url)
res = zlib.decompress(reqinfo.read())
if not res or res.find("<?xml")<0:
self.request.include.logger.warning(u"开始精炼失败,没有空闲的工人")
self.stop()
return
self.request.include.logger.info(u"精炼成功,返回:%s" %res)
示例7: FoodBandCThread
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
class FoodBandCThread(threading.Thread):
def __init__(self,include,serverid,playerinfo):
threading.Thread.__init__(self)
self.stoped = False
self.request = Request(include)
self.serverid = serverid
self.playerinfo = playerinfo
'''
获取粮市信息
'''
def getPreFoodBandC(self):
url = "http://s%d.as.yaowan.com/root/mainCity!preFoodBandC.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.request.request(url)
res = zlib.decompress(reqinfo.read())
#print 'preFoodBandC res:',res
if res:
if res.find("<?xml")<0:
self.request.include.logger.warning(u"获取粮食买卖信息失败,重新请求...")
time.sleep(2)
return self.getPreFoodBandC()
res = res[res.find("<?xml"):]
infoXML = etree.XML(res)
foodbandc = FoodBandC()
for child in infoXML.getchildren():
if child.tag=="state":
foodbandc.state = child.text
if child.tag=="buyprice":
foodbandc.buyprice = float(child.text)
if child.tag=="price":
foodbandc.price = float(child.text)
if child.tag=="isup":
foodbandc.isup = bool(child.text)
if child.tag=="bsmax":
foodbandc.bsmax = int(child.text)
if child.tag=="crutrade":
foodbandc.crutrade = int(child.text)
if child.tag=="maxtrade":
foodbandc.maxtrade = int(child.text)
if child.tag=="playerupdateinfo":
updateinfo = PlayerUpdateInfo()
updateinfo.food = child.findtext("food")
updateinfo.kfzonestate = child.findtext("kfzonestate")
foodbandc.playerupdateinfo = updateinfo
return foodbandc
return None
def stop(self):
self.stoped = True
def isStoped(self):
return self.stoped
'''
卖出粮食
'''
def sellFood(self,foodbandc):
url = "http://s%d.as.yaowan.com/root/mainCity!foodBandC.action?%d" %(self.serverid,int(time.time()*1000))
data = {"sell":foodbandc.maxtrade-foodbandc.crutrade}
reqinfo = self.request.request(url,data)
res = zlib.decompress(reqinfo.read())
if res:
res = res[res.find("<?xml"):]
self.request.include.logger.info(u"卖出粮食%d,返回:%s" %(foodbandc.maxtrade-foodbandc.crutrade,res))
'''
买入粮食
'''
def buyFood(self,foodbandc):
url = "http://s%d.as.yaowan.com/root/mainCity!foodBandC.action?%d" %(self.serverid,int(time.time()*1000))
if foodbandc.bsmax==0:
print "粮仓已满,不能买入"
return
data = {"buy":foodbandc.maxtrade-foodbandc.crutrade}
reqinfo = self.request.request(url,data)
res = zlib.decompress(reqinfo.read())
if res:
res = res[res.find("<?xml"):]
self.request.include.logger.info(u"买入粮食%d,返回:%s" %(foodbandc.maxtrade-foodbandc.crutrade,res))
def run(self):
while True:
if self.stoped:
return
# 获取粮市信息
foodbandc = self.getPreFoodBandC()
if foodbandc.crutrade==foodbandc.maxtrade:
self.request.include.logger.info(u"今日粮食交易量用完,线程停止")
self.stop()
return
# 偶数天卖出,奇数天买入
if time.localtime().tm_mday%2==0:
# 卖出
if foodbandc.buyprice>1.9:
self.sellFood(foodbandc)
else:
# 买入
if foodbandc.buyprice<0.6:
self.buyFood(foodbandc)
#.........这里部分代码省略.........
示例8: BattleThread
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
class BattleThread(threading.Thread):
def __init__(self,include,serverid,playerinfo,config):
threading.Thread.__init__(self)
self.stoped = False
self.request = Request(include)
self.serverid = serverid
self.playerinfo = playerinfo
self.config = config
self.timehelp = TimeHelp()
self.armiesId = self.request.include.legion_battle.get(self.config._defaultConfig.get("battle-legion"))
def stop(self):
self.request.include.logger.info(u"自动刷军团线程停止")
if self.config._defaultConfig.get("battle-autoformat"):
# 调整阵型为雁行阵
formatThread = FormationThread(self.request.include,self.serverid,160)
formatThread.start()
self.stoped = True
def isStoped(self):
return self.stoped
def run(self):
self.request.include.logger.info(u"自动刷%s军团功能启动" %(self.config._defaultConfig.get("battle-legion")))
# 调整阵型为:八卦阵
if self.config._defaultConfig.get("battle-autoformat"):
formatThread = FormationThread(self.request.include,self.serverid,120)
formatThread.start()
while True:
if self.stoped:
return
if self.playerinfo.forces<=10000:
draughtThread = DraughtThread(self.request.include,self.serverid,self.playerinfo)
draughtThread.start()
if self.playerinfo.token==0:
self.request.include.logger.info(u"军令数量为0")
self.stop()
return
if self.playerinfo.tokencdflag==1:
if self.playerinfo.tokencd>0:
chatSendThread = ChatSendThread(self.request.include,self.serverid,u"征战CD中,剩余:%s" %(self.timehelp.getDownTime(self.playerinfo.tokencd)),u"国家")
chatSendThread.start()
self.request.include.logger.info(u"征战CD中,剩余 %s" %(self.timehelp.getDownTime(self.playerinfo.tokencd)))
self.stop()
return
# 获得征战队伍信息
battleTeamInfo = self.getTeamInfo()
role = None
if len(battleTeamInfo.memberlist)>0:
for member in battleTeamInfo.memberlist:
if member.playerid == int(self.playerinfo.playerid):
if member.role=="CREATER":
# 解散队伍
self.dismissTeam()
elif member.role=="COMMON":
# 退出队伍
self.quitTeam()
break
# 重新获得队伍信息
battleTeamInfo = self.getTeamInfo()
# 判断是否存在合适的征战队伍,返回合适的队伍
team = self.isExistsTeam(battleTeamInfo)
if team:
# 加入征战队伍
if not self.joinTeam(team):
self.stop()
return
role = "COMMON"
else:
# 若配置文件中不可以创建征战队伍,就跳过继续等待加入队伍
if not self.config._defaultConfig.get("battle-autocreate"):
while True:
battleTeamInfo = self.getTeamInfo()
team = self.isExistsTeam(battleTeamInfo)
if team:
# 加入征战队伍
if not self.joinTeam(team):
self.stop()
return
role = "COMMON"
break
time.sleep(3)
else:
# 创建征战队伍
url = "http://s%d.as.yaowan.com/root/multiBattle!createTeam.action?%d" %(self.serverid,int(time.time()*1000))
data = {"rule":"4:0;2",
"armiesId":self.armiesId}
reqinfo = self.request.request(url,data,jsonFormat=False)
res = zlib.decompress(reqinfo.read())
print "create:",res
role = "CREATER"
sendnum = 0
battlePer = {}
while True:
battleTeamInfo = self.getTeamInfo()
# 判断加入的队伍是否已经开始
if battleTeamInfo.sceneevent:
playerbattleinfo = battleTeamInfo.sceneevent.playerbattleinfo
if playerbattleinfo:
#.........这里部分代码省略.........
示例9: OutCityThread
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
class OutCityThread(threading.Thread):
def __init__(self,include,serverid,playerinfo,config):
threading.Thread.__init__(self)
self.request = Request(include)
self.serverid = serverid
self.playerinfo = playerinfo
self.config = config
'''
获取外城采集信息
返回GetPickSpace对象
'''
def getPickSpace(self):
url = "http://s%d.as.yaowan.com/root/outCity!getPickSpace.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.request.request(url)
res = zlib.decompress(reqinfo.read())
#print 'outcity res:',res
if res:
if res.find("<?xml")<0:
self.request.include.logger.warning(u"获取外城采集信息失败,重新请求...")
time.sleep(2)
return self.getPickSpace()
res = res[res.find("<?xml"):]
#print 'outcity res xml:',res
infoXML = etree.XML(res)
pickspace = GetPickSpace()
pickdtolist = []
trainmodeldlist = []
for child in infoXML.getchildren():
if child.tag=="state":
pickspace.state = child.text
if child.tag=="pickevent":
_id = child.findtext("id")
name =child.findtext("name")
_type = child.findtext("type")
intro = child.findtext("intro")
pickevent = PickEvent(_id,name,_type,intro)
pickspace.pickevent = pickevent
if child.tag=="playerpickdto":
_id = child.findtext("id")
workernum = int(child.findtext("workernum"))
profit = child.findtext("profit")
pattern = child.findtext("pattern")
patternid = child.findtext("patternid")
endtime = int(child.findtext("endtime"))
safepick = child.findtext("safepick")
safepickcost = child.findtext("safepickcost")
playerpickdto = PlayerPickdTo(_id,workernum,profit,pattern,patternid,endtime,safepick,safepickcost)
pickdtolist.append(playerpickdto)
if child.tag=="trainmodeldto":
_id = child.findtext("id")
times = child.findtext("times")
name = child.findtext("name")
cost = child.findtext("cost")
trainmodeldto = TrainModeldTo(_id,times,name,cost)
trainmodeldlist.append(trainmodeldto)
if child.tag=="cjclevel":
pickspace.cjclevel = child.text
if child.tag=="kjlevel":
pickspace.kjlevel = child.text
if child.tag=="areaname":
pickspace.areaname = child.text
if child.tag=="spacefree":
pickspace.spacefree = child.text
if child.tag=="maxspacefree":
pickspace.maxspacefree = child.text
if child.tag=="workernum":
pickspace.workernum = int(child.text)
pickspace.playerpickdtolist = pickdtolist
pickspace.trainmodeldtolist = trainmodeldlist
return pickspace
return None
'''
判断是否可以采集,若可以则直接收取
'''
def isPickdto(self,pickdtolist):
isPick = False
for pick in pickdtolist:
# 采集CD结束
if pick.endtime==0:
# 收取
self.endPick(pick.id)
isPick = True
# 开始工作(等待测试!!)
self.startPick(pick.workernum)
# 重新获取GetPickSpace对象
self.isPickdto(self.getPickSpace().playerpickdtolist)
break
# 等待
if not isPick:
i=0
minEndTime = pickdtolist[i].endtime
for pick in pickdtolist:
if i>=len(pickdtolist)-1:
print u'采集CD:',minEndTime
break
if minEndTime>pickdtolist[i+1].endtime:
minEndTime = pickdtolist[i+1].endtime
#.........这里部分代码省略.........
示例10: GeneralThread
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
class GeneralThread(threading.Thread):
def __init__(self,include,serverid,playerinfo,config):
threading.Thread.__init__(self)
self.request = Request(include)
self.serverid = serverid
self.playerinfo = playerinfo
self.config = config
self.stoped = False
def stop(self):
self.request.include.logger.warning(u"开始训练师线程停止")
self.stoped = True
def isStoped(self):
return self.stoped
'''
开启训练师
'''
def openTrainer(self,trainer):
url = "http://s%d.as.yaowan.com/root/trainer!openTrainer.action?%d" %(self.serverid,int(time.time()*1000))
data = {"gold":0,
"trainerId":trainer.trainerid}
reqinfo = self.request.request(url,data)
res = zlib.decompress(reqinfo.read())
if res:
res = res[res.find("<?xml"):]
# 这里没判断失败情况
self.request.include.logger.info(u"开启训练师%s成功" %(trainer.name))
'''
判断是否需要开启训练师
根据配置文件决定开启哪些训练师
'''
def isNeedOpenTrainer(self,trainers):
# 当前剩余武魂
wuhun = trainers.wuhun
openTrainers = self.config._defaultConfig.get("trainer-list")
for trainer in trainers.trainerlist:
if trainer.name in openTrainers:
# 如果开启当前训练师武魂大于剩余武魂,则跳过
# 这里减去了张星彩训练师减少的10%武魂比例
if trainer.whnum*0.9>wuhun:
continue
# 训练师"张星彩"特例,在剩余次数<=1时就开启
if (trainer.name!=u"张星彩" and trainer.times<=5) or (trainer.name==u"张星彩" and trainer.times<=2):
# 开启
self.openTrainer(trainer)
wuhun = wuhun-trainer.whnum
'''
获得武将训练及训练师信息
'''
def getTrainGeneralInfo(self):
url = "http://s%d.as.yaowan.com/root/general!getTrainGeneralInfo.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.request.request(url)
res = zlib.decompress(reqinfo.read())
if res:
if res.find("<?xml")<0:
self.request.include.logger.warning(u"获取武将训练信息失败,重新请求...")
time.sleep(2)
return self.getTrainGeneralInfo()
res = res[res.find("<?xml"):]
infoXML = etree.XML(res)
generalinfo = GeneralInfo()
generallist = []
timemodellist = []
trainmodellist = []
for child in infoXML.getchildren():
if child.tag=="state":
generalinfo.state = child.text
if child.tag=="general":
general = General()
general.generalid = child.findtext("generalid")
general.generallevel = int(child.findtext("generallevel"))
general.trainflag = child.findtext("trainflag")
general.generalexp = int(child.findtext("generalexp"))
general.autogrow = int(child.findtext("autogrow"))
general.nextlevelexp = child.findtext("nextlevelexp")
general.generalname = child.findtext("generalname")
general.pic = child.findtext("pic")
general.shiftlv = int(child.findtext("shiftlv"))
general.trainmodel = child.findtext("trainmodel")
general.exppermin = child.findtext("exppermin")
general.jyungong = child.findtext("jyungong")
general.jyungongexp = child.findtext("jyungongexp")
generallist.append(general)
if child.tag=="timemodel":
timemodel = TimeModel()
timemodel.time = child.findtext("time")
timemodel.cost = child.findtext("cost")
timemodellist.append(timemodel)
if child.tag=="trainmodel":
trainmodel = TrainModel()
trainmodel.times = child.findtext("times")
trainmodel.name = child.findtext("name")
trainmodel.cost = child.findtext("cost")
#.........这里部分代码省略.........
示例11: TradeThread
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
class TradeThread(threading.Thread):
"""
include: include对象
serverid: 服务器ID
playerinfo: playerinfo对象
userconfig: 用户配置对象
"""
def __init__(self, include, serverid, playerinfo, config):
threading.Thread.__init__(self)
self.stoped = False
self.include = include
self.request = Request(include)
self.config = config
self.serverid = serverid
self.playerinfo = playerinfo
self.timehelp = TimeHelp()
def stop(self):
self.stoped = True
def isStoped(self):
return self.stoped
def run(self):
# 获得玩家的委派商人信息
playerMerchant = self.getPlayerMerchant()
# 判断钱币是否达到最低限制和是否正在CD中
mincoins = self.config._defaultConfig.get("coins-minlimit")
if int(self.playerinfo.copper) < mincoins:
print "钱币小于%d,停止委派" % (mincoins)
self.stoped = True
print "auto market cdflag:", int(playerMerchant.cdflag), ",cd:", int(playerMerchant.cd)
if int(playerMerchant.cdflag) == 1 and int(playerMerchant.cd) > 0:
print "委派CD中,停止委派,剩余:%s" % (self.timehelp.getDownTime(int(playerMerchant.cd)))
self.include.tradeCD = int(playerMerchant.cd)
self.include.tradeCDFlag = True
self.stoped = True
while True:
if self.stoped:
print "自动委派线程停止"
return
# 委派马商
if not playerMerchant:
self.stoped = True
print "委派失败,返回值为空"
return
playerMerchant = self.marketTrade(playerMerchant)
if not playerMerchant.tradesn:
print "委派失败,未获取到委派结果"
self.stoped = True
return
print playerMerchant.message
marketresult = self.marketConfirm(playerMerchant)
if marketresult: # 卖出货物成功
# 判断委派返回的玩家钱币是否达到最低限制,true:则停止委派
if int(marketresult.playerupdateinfo.copper) < mincoins:
print "钱币小于%d,停止委派" % (mincoins)
self.stoped = True
return
else: # 卖出货物失败
if playerMerchant.playerupdateinfo and playerMerchant.playerupdateinfo.copper:
if int(playerMerchant.playerupdateinfo.copper) < mincoins:
print "钱币小于%d,停止委派" % (mincoins)
self.stoped = True
return
if int(playerMerchant.cdflag) == 1:
msg = "委派CD中,停止委派,剩余:%s" % (self.timehelp.getDownTime(int(playerMerchant.cd)))
print msg
self.include.tradeCD = int(playerMerchant.cd)
self.include.tradeCDFlag = True
self.stoped = True
return
time.sleep(1)
"""
获得玩家的马商信息
"""
def getPlayerMerchant(self):
url = "http://s%d.as.yaowan.com/root/market!getPlayerMerchant.action?%d" % (
self.serverid,
long(time.time() * 1000),
)
reqinfo = self.request.request(url)
res = zlib.decompress(reqinfo.read())
print "market res:", res
# get xml str
return self.resolveMerXML(res)
"""
解析玩家的马商信息和委派过后的马商信息
content: 要解析的内容
返回 PlayerMerchant 对象
"""
def resolveMerXML(self, content):
res = content[content.find("<?xml") :]
#.........这里部分代码省略.........
示例12: yaowan
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
class yaowan(object):
def __init__(self,username=None,password=None,serverid=295):
self.include = Include(username)
self.config = Config()
self.username = username
self.password = password
self.serverid = serverid
self.timehelp = TimeHelp()
def start(self):
self.include.addheaders = [('Content-Type', 'application/x-www-form-urlencoded'),
('User-agent','Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1'),#'Mozilla/5.0(X12;Unixx86_64;9.0.0) By JackSyen'),
('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
('Accept-Language','zh-cn,zh;q=0.5'),
('Accept-Encoding','gzip,deflate'),
('Accept-Charset','GB2312,utf-8;q=0.7,*;q=0.7'),
('Referer','http://as.yaowan.com'),
('Host','as.yaowan.com'),
('Connection','keep-alive'),
('Cookie','pageReferrInSession=; cnzz_a2184393=0; sin2184393=; rtime=0; ltime=1326903486641; cnzz_eid=66719180-1326902030-; cnzz_a2343924=0; sin2343924=; AJSTAT_ok_pages=1; AJSTAT_ok_times=1')]
self.Request = Request(self.include)
self.include.logger.info(u"-------%s开始登录--------" %(self.username))
if self.username and self.password:
self.login()
else:
self.include.logger.warning(u"用户名或密码为空,程序退出...")
exit(-1)
#print "login last cookie:",self.include.cj
self.initAS()
def login(self):
url = 'http://as.yaowan.com/Default.php?m=user&action=loginform&astd=1'
data = {'username' : self.username,
'password' : self.password,
'buttion' : ''}
self.Request.request(url,data,jsonFormat=False)
# check login result
#print "cj:",self.include.cj
if len(re.findall("userid=\d+",str(self.include.cj)))>0:
self.include.logger.info(u"登录成功")
else:
self.include.logger.error(u"登录失败,程序退出...")
exit(-1)
'''
def getXmlName(self,url):
if url:
result = re.findall(r"root/(\w+!?\w+)",url)
if len(result)>0:
return str(self.serverid)+"_"+str(result[0])+'.xml'
return str(self.serverid)+"_"+str(int(time.time()))+"unknown.xml"
'''
def initAS(self):
url = "http://www.yaowan.com/?m=game&game_id=15&district_id=%d" %(683)
#print "url:",url
self.Request.request(url) # redicet to http://s322.as.yaowan.com
url = "http://s%d.as.yaowan.com/root/server!getServerTime.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.Request.request(url)
servertime = self.getServerTime(reqinfo)
self.include.serverTime = servertime
self.include.logger.info(u"服务器时间:%s" %(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(self.include.serverTime/1000))))
self.gameTimer = GameTimer(self.include)
self.gameTimer.start()
url = "http://s%d.as.yaowan.com/root/server!getPlayerInfoByUserId.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.Request.request(url)
#zlib decompress
res = zlib.decompress(reqinfo.read())
res = res[res.find("<?xml"):]
#print 'playerinfo res:',res
self.playerinfo = self.getPlayerInfo(res)
if not self.playerinfo.playerid:
self.include.logger.error(u"未获取到玩家ID,程序退出...")
exit(-1)
self.include.logger.info(u"玩家ID:%d,名称:%s,级别:%d" %(self.playerinfo.playerid,self.playerinfo.playername,self.playerinfo.playerlevel))
url = "http://s%d.as.yaowan.com/root/server!getSessionId.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.Request.request(url)
url = "http://s%d.as.yaowan.com/root/mainCity.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.Request.request(url)
#zlib decompress
res = zlib.decompress(reqinfo.read())
res = res[res.find("<?xml"):]
self.cityinfo = self.getCityInfo(res)
# 如果获取主城信息失败,则表示有验证码
if len(self.cityinfo.buildlist)==0:
self.include.logger.error(u"未获取到主城信息,程序退出")
exit(-1)
url = "http://s%d.as.yaowan.com/root/validateCode!redirect.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.Request.request(url)
#zlib decompress
res = zlib.decompress(reqinfo.read())
res = res[res.find("<?xml"):]
#.........这里部分代码省略.........
示例13: StockThread
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
class StockThread(threading.Thread):
def __init__(self,include,serverid,playerinfo,config):
threading.Thread.__init__(self)
self.stoped = False
self.request = Request(include)
self.serverid = serverid
self.playerinfo = playerinfo
self.config = config
'''
请求贸易URL
'''
def getStockInfo(self):
url = "http://s%d.as.yaowan.com/root/stock.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.request.request(url)
res = zlib.decompress(reqinfo.read())
if res:
if res.find("<?xml")<0:
self.request.include.logger.warning(u"获取贸易信息失败,重新请求...")
time.sleep(2)
return self.getStockInfo()
res = res[res.find("<?xml"):]
resXML = etree.XML(res)
childli = resXML.getchildren()
stockinfo = StockInfo()
goodlist = []
for child in childli:
if child.text:
if child.tag =="state":
stockinfo.state = child.text
elif child.tag =="currentpositon":
stockinfo.currentpositon = int(child.text)
elif child.tag =="postion":
stockinfo.postion = int(child.text)
elif child.tag =="goodid":
stockinfo.goodid = int(child.text)
elif child.tag =="numleft":
stockinfo.numleft = int(child.text)
elif child.tag =="cd":
stockinfo.cd = int(child.text)
elif child.tag =="cantrade":
stockinfo.cantrade = int(child.text)
elif child.tag =="nowstate":
stockinfo.nowstate = child.text
elif child.tag=="playerupdateinfo":
pass
else:
if child.find("goodid")==None:
continue
goodinfo = GoodInfo()
goodinfo.goodid = int(child.find("goodid").text)
goodinfo.name = child.find("name").text
goodinfo.price = int(child.find("price").text)
goodinfo.num = int(child.find("num").text)
goodinfo.cd = int(child.find("cd").text)
goodinfo.originalprice = int(child.find("originalprice").text)
goodinfo.storage = int(child.find("storage").text)
goodinfo.buyprice = child.find("buyprice").text
goodinfo.alter = child.find("alter").text
goodlist.append(goodinfo)
stockinfo.goodlist = goodlist
return stockinfo
return None
def stop(self):
self.stoped = True
self.request.include.logger.warning(u"贸易线程停止")
def isStoped(self):
return self.stoped
def run(self):
self.request.include.logger.info(u"自动贸易功能开启")
while True:
if self.stoped:
return
# 获得贸易信息
stockinfo = self.getStockInfo()
if not stockinfo:
self.request.include.logger.error(u"获取贸易信息失败")
self.stop()
return
# 判断是否需要买入或卖出
self.isNeedStock(stockinfo)
# 每5分钟读取一次
time.sleep(5*60)
'''
判断是否需要贸易
'''
def isNeedStock(self,stockinfo):
if stockinfo.cd==1:
self.request.include.logger.info(u"贸易CD中")
return
if stockinfo.numleft>0:
self.request.include.logger.info(u"贸易次数已存在")
return
if stockinfo.cantrade==0:
self.request.include.logger.info(u"贸易停盘中")
#.........这里部分代码省略.........
示例14: DinnerThread
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
class DinnerThread(threading.Thread):
def __init__(self,include,serverid,playerinfo):
threading.Thread.__init__(self)
self.request = Request(include)
self.serverid = serverid
self.playerinfo = playerinfo
def stop(self):
self.stoped = True
def isStoped(self):
return self.stoped
'''
获得Dinner对象
'''
def getAllDinner(self):
url = "http://s%d.as.yaowan.com/root/dinner!getAllDinner.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.request.request(url)
res = zlib.decompress(reqinfo.read())
if not res:
return None
if res.find("<?xml")<0:
self.request.include.logger.warning(u"获取宴会信息失败,重新请求...")
time.sleep(2)
return self.getAllDinner()
res = res[res.find("<?xml"):]
print "getalldinner res:",res
resXML = etree.XML(res)
childli = resXML.getchildren()
dinner = Dinner()
teamlist = []
for child in childli:
if child.tag == "state":
dinner.state = int(child.text)
if child.tag == "teamstate":
dinner.teamstate = child.text
if child.tag == "starttime":
dinner.starttime = child.text
if child.tag == "endtime":
dinner.endtime = child.text
if child.tag == "starttime1":
dinner.starttime1 = child.text
if child.tag == "endtime1":
dinner.endtime1 = child.text
if child.tag == "team":
team = DinnerTeam()
team.teamid = child.find("teamid").text
team.type = child.find("type").text
team.creator =unicode(child.find("creator").text).encode("utf-8")
team.nation = unicode(child.find("nation").text).encode("utf-8")
team.num = child.find("num").text
team.maxnum = child.find("maxnum").text
team.minnum = child.find("minnum").text
teamlist.append(team)
if child.tag == "normaldinner":
normal = Normaldinner()
normal.num = int(child.find("num").text)
normal.maxnum = int(child.find("maxnum").text)
normal.jungong = int(child.find("jungong").text)
dinner.normaldinner = normal
if child.tag == "identity":
dinner.identity = child.text
if child.tag == "membernum":
dinner.membernum = child.text
if child.tag == "minmembernum":
dinner.minmembernum = child.text
if child.tag == "creator":
creator = CreatorGuest()
creator.playerid = child.find("playerid").text
creator.name = child.find("name").text
creator.level = child.find("level").text
creator.wine = child.find("wine").text
dinner.creator = creator
if child.tag == "guest":
guest = CreatorGuest()
guest.playerid = child.find("playerid").text
guest.name = child.find("name").text
guest.level = child.find("level").text
guest.wine = child.find("wine").text
dinner.guest = guest
dinner.teamlist = teamlist
return dinner
def run(self):
while True:
# 获得所有宴会队伍
dinner = self.getAllDinner()
# 判断是否获取到信息,失败则停止线程
if not dinner or dinner.state !=1:
self.request.include.logger.error(u"获取宴会信息失败,线程停止")
self.stop()
return
if dinner.membernum and dinner.creator:
# 退出
url = "http://s%d.as.yaowan.com/root/dinner!leaveDinner.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.request.request(url,data)
res = zlib.decompress(reqinfo.read())
self.request.include.logger.error(u"退出宴会队伍")
#.........这里部分代码省略.........
示例15: SecretaryThread
# 需要导入模块: from request import Request [as 别名]
# 或者: from request.Request import request [as 别名]
class SecretaryThread(threading.Thread):
def __init__(self,include,serverid,playerinfo):
threading.Thread.__init__(self)
self.request = Request(include)
self.serverid = serverid
self.playerinfo = playerinfo
'''
收取军团粮食
lin: 剩余次数
'''
def worldImpose(self,lin):
url = "http://s%d.as.yaowan.com/root/world!impose.action?%d" %(self.serverid,int(time.time()*1000))
data = {"resId":10}
reqinfo = self.request.request(url,data)
res = zlib.decompress(reqinfo.read())
print "world impose res",res
lin = lin-1
if lin>0:
self.worldImpose(lin)
'''
领取俸禄
'''
def officerSaveSalary(self):
url = "http://s%d.as.yaowan.com/root/officer!saveSalary.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.request.request(url)
res = zlib.decompress(reqinfo.read())
self.request.include.logger.info(u"领取俸禄,返回结果:%s" %res)
'''
获取秘书信息
'''
def getSecretary(self):
url = "http://s%d.as.yaowan.com/root/secretary.action?%d" %(self.serverid,int(time.time()*1000))
reqinfo = self.request.request(url)
res = zlib.decompress(reqinfo.read())
#print 'secreatary res:',res
if res:
if res.find("<?xml")<0:
self.request.include.logger.warning(u"获取秘书信息失败,重新请求...")
time.sleep(2)
return self.getSecretary()
res = res[res.find("<?xml"):]
#print 'secr res xml:',res
infoXML = etree.XML(res)
secretary = Secretary()
for child in infoXML.getchildren():
if child.tag=="state":
secretary.state = child.text
if child.tag=="liid":
secretary.liid = child.text
if child.tag=="lin":
secretary.lin = int(child.text)
if child.tag=="ss":
secretary.ss = int(child.text)
if child.tag=="fp":
secretary.fp = child.text
if child.tag=="name":
secretary.name = child.text
if child.tag=="lv":
secretary.lv = child.text
if child.tag=="pic":
secretary.pic = child.text
if child.tag=="fun":
secretary.fun = child.text
if child.tag=="tasknum":
secretary.tasknum = child.text
if child.tag=="maxtokennum":
secretary.maxtokennum = child.text
if child.tag=="cd":
secretary.cd = child.text
if child.tag=="tokennum":
secretary.tokennum = child.text
if child.tag=="makenum":
secretary.makenum = child.text
if child.tag=="freer":
secretary.freer = child.text
if child.tag=="task":
tasklist = []
for cchild in child.getchildren():
task = Task()
if cchild.tag=="tid":
task.tid = cchild.text
if cchild.tag=="tname":
task.tname = cchild.text
if cchild.tag=="tstate":
task.tstaet = cchild.text
if cchild.tag=="cd":
task.cd = cchild.text
if cchild.tag=="num":
task.num = cchild.text
if cchild.tag=="name":
task.name = cchild.text
tasklist.append(task)
secretary.tasklist = tasklist
if child.tag=="playerupdateinfo":
updateinfo = PlayerUpdateInfo()
updateinfo.kfzonestate = child.findtext("kfzonestate")
#.........这里部分代码省略.........