当前位置: 首页>>代码示例>>Python>>正文


Python Request.request方法代码示例

本文整理汇总了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
开发者ID:jacksyen,项目名称:pyastd,代码行数:35,代码来源:maincity.py

示例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
开发者ID:jacksyen,项目名称:pyastd,代码行数:58,代码来源:chat.py

示例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)
开发者ID:solos,项目名称:pydnspodint,代码行数:21,代码来源:pydnspodint.py

示例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
开发者ID:jacksyen,项目名称:pyastd,代码行数:19,代码来源:chat.py

示例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兵力失败")
开发者ID:jacksyen,项目名称:pyastd,代码行数:43,代码来源:maincity.py

示例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)
开发者ID:jacksyen,项目名称:pyastd,代码行数:102,代码来源:refine.py

示例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)
#.........这里部分代码省略.........
开发者ID:jacksyen,项目名称:pyastd,代码行数:103,代码来源:maincity.py

示例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:
#.........这里部分代码省略.........
开发者ID:jacksyen,项目名称:pyastd,代码行数:103,代码来源:battle.py

示例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
#.........这里部分代码省略.........
开发者ID:jacksyen,项目名称:pyastd,代码行数:103,代码来源:outcity.py

示例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")
#.........这里部分代码省略.........
开发者ID:jacksyen,项目名称:pyastd,代码行数:103,代码来源:general.py

示例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") :]
#.........这里部分代码省略.........
开发者ID:jacksyen,项目名称:pyastd,代码行数:103,代码来源:trade.py

示例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"):]
#.........这里部分代码省略.........
开发者ID:jacksyen,项目名称:pyastd,代码行数:103,代码来源:login.py

示例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"贸易停盘中")
#.........这里部分代码省略.........
开发者ID:jacksyen,项目名称:pyastd,代码行数:103,代码来源:stock.py

示例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"退出宴会队伍")
#.........这里部分代码省略.........
开发者ID:jacksyen,项目名称:pyastd,代码行数:103,代码来源:dinner.py

示例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")
#.........这里部分代码省略.........
开发者ID:jacksyen,项目名称:pyastd,代码行数:103,代码来源:secretary.py


注:本文中的request.Request.request方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。