示例#1
0
 def __init__(self):
     self.mem = Memcache()
     self.base_url = readconfig('base_url')
     self.cookie = eval(self.mem.getmem('caipiao_pc_login_cookie'))
     cookie_jar = requests.utils.cookiejar_from_dict(self.cookie,
                                                     cookiejar=None,
                                                     overwrite=True)
     self.session = requests.Session()
     self.session.cookies = cookie_jar
示例#2
0
 def __init__(self):
     self.mem = Memcache()
示例#3
0
class InsertMemcache:
    def __init__(self):
        self.mem = Memcache()

    def number_issue(self):
        lotteryid_list = [51, 52, 53, 54, 200, 201, 202]
        for lotteryid in lotteryid_list:
            issue = get_num_issue(lotteryid)
            key = "issue_{}".format(lotteryid)
            self.mem.setmem(key, issue)
            logger(lotteryid, "{}在售期号写入缓存成功".format(lotteryid))
        return

    #处理insert_matchinfo中投注串中针对不同彩种转化
    def win_str(self, lotteryid, datatype, win, ins):
        jclq_match_type = {
            'dx_visiting': u'大',
            'dx_home': u'小',
            'rf_visiting': u'让分主负',
            'rf_home': u'让分主胜',
            'sf_visiting': u'主负',
            'sf_home': u'主胜'
        }
        jczq_match_type = {
            'sf_home': u'主胜',
            'sf_ping': u'平',
            'sf_fail': u'主负',
            'rq_sf_home': u'让球主胜',
            'rq_sf_ping': u'让球平',
            'rq_sf_fail': u'让球主负'
        }
        if lotteryid in [30, 31, 32, 33, 35]:
            if lotteryid == 32:
                tmp_dic = {
                    '0': '1-5',
                    '1': '6-10',
                    '2': '11-15',
                    '3': '16-20',
                    '4': '21-25',
                    '5': '26+'
                }

                if datatype.startswith('sfc_visiting'):
                    winteam = '客胜'
                else:
                    winteam = '主胜'
                inside_str = tmp_dic.get(datatype[-1])
                win = "{winteam}{inside_str}_{win}".format(**locals())
                return win
            winteam = jclq_match_type.get(datatype)
        else:
            if lotteryid == 21:
                winteam = ins
            elif lotteryid == 2521:
                if ins == '客不败':
                    ins = '让球主负'
                elif ins == '主不败':
                    ins = '让球主胜'
                elif ins == '客胜':
                    ins = '主负'
                winteam = ins
                win = "{winteam}_{win}".format(**locals())
                return win
            elif lotteryid in (22, 23):
                winteam = datatype
            winteam = jczq_match_type.get(datatype)
        win = "{winteam}_{win}".format(**locals())
        return win

    def jc_bs4_for_list(self, html, tag, league_info):
        '''
		@html实例,从页面获取的html内容
		@tag:从data文件jc_data中根据不同彩种获取不同标签
		@league_info:比赛名称,如<周五002>
		注:有些彩种的win信息拼接需要拿到ins信息,有些彩种没有ins信息,所以用‘-’代替占位
		'''
        try:
            soup = BeautifulSoup(html, 'lxml')
            tr = soup.find_all("td", class_=tag)
            li = []
            for i in tr:
                sp = BeautifulSoup(str(i), 'lxml')
                s = sp.find_all('a')
                for j in s:
                    if j.get(league_info) and int(j.get('numb')) > 10000:
                        if j.string:
                            #此处无ins信息,使用-占位
                            tmp = (j.get(league_info), j.get('numb'),
                                   j.get('data-odd-type'), j.string, '-')
                        else:
                            win = sp.find('a').find('span').string
                            ins = sp.find('a').find('ins').string
                            tmp = (j.get(league_info), j.get('numb'),
                                   j.get('data-odd-type'), win, ins)
                        li.append(tmp)
            tmp_dict = {}
            for i in li:
                _, x, _, _, _ = i
                tmp_dict[int(x)] = i
            # 去除重复数据,拿取前2个足够
            li = [
                x[1] for x in sorted(tmp_dict.items(), key=lambda s: s[0])[:2]
            ]
        except Exception, e:
            logger('bs4', e)
        return li
示例#4
0
class Pcbet(object):
    def __init__(self):
        self.mem = Memcache()
        self.base_url = readconfig('base_url')

        self.cookie = eval(self.mem.getmem('caipiao_pc_login_cookie'))
        cookie_jar = requests.utils.cookiejar_from_dict(self.cookie,
                                                        cookiejar=None,
                                                        overwrite=True)
        self.session = requests.Session()
        self.session.cookies = cookie_jar
        #requests.utils.add_dict_to_cookiejar(self.session.cookies,self.cookie)

    def pc_touzhu(self, lotteryid):
        import urllib
        #获取投注form表单,pc_bet_data传递的参数详情见data文件中的bet_info
        if lotteryid > 10000:
            forms_data = pc_bet_data(lotteryid)
            print lotteryid
            print forms_data
            bet_url = readconfig('num_bet_url')
            print bet_url
        else:
            forms_data = eval(
                self.mem.getmem("bet_{lotteryid}".format(**locals())).replace(
                    ' ', ''))
            if lotteryid == 2521:
                forms_data['lotterytype'] = 'exy'
            if lotteryid in num_for_lotteryid('jclq'):
                bet_url = readconfig('jclq_bet_url')
            elif lotteryid in num_for_lotteryid('jczq'):
                bet_url = readconfig('jczq_bet_url')
        #发送投注请求
        print bet_url
        print forms_data
        s = self.session.post(url=bet_url, data=forms_data).content
        if eval(s).get('url'):
            # 获取返回值中的url参数
            url = eval(s).get('url')
        else:
            logger('投注失败', "投注结果:{}".format(s))
            return
        # 拼接url
        url = self.base_url + urllib.unquote(url)[1:]
        # 获取url中的参数信息,以字典形式返回
        data_info = url2Dict(url)
        #记录投注结果
        logger(
            lotteryid, "{}投注成功,orderid:{}".format(data_info.get('lotteryname'),
                                                  data_info.get('orderid')))
        # 请求上一个请求返回的url,跳转支付页面
        html = self.session.get(url).content
        #返回支付页面html及sid,userid等data信息
        return html, data_info

    def pay_cj(self, lotteryid):
        html, data_info = self.pc_touzhu(lotteryid)
        soup = BeautifulSoup(html, 'html5lib')
        sign = [x.get('value')
                for x in soup.find_all('input', id='ext_sign')][0]
        url = readconfig('pay_cj')
        datas = {
            'userid': data_info.get('userid'),
            'pid': data_info.get('pid'),
            'sid': data_info.get('sid'),
            'inputrmb': 0,
            'inputrmbtp': data_info.get('amount'),
            'prebuyid': data_info.get('prebuyid'),
            'isdjq': 0,
            'djqid': 0,
            'isredbag': 0,
            'redbagid': 0,
            'iswlt': 0,
            'istpoint': 0,
            'sendtime': 0,
            'mobile': readconfig('mobile'),
            'orderid': data_info.get('orderid'),
            'fangan': 0,
            'danbao': 0,
            'selfdb': 0,
            'fanyong': 5,
            'limit_flag': 'true',
            'ext_sign': sign,
            'inputrmbcf': data_info.get('amount'),
            'support_fangan': 1
        }
        info = self.session.post(url=url, data=datas,
                                 cookies=self.cookie).json()
        return info

    def get_user_info(self):  #获取用户信息接口
        url = readconfig('get_userinfo')
        s = self.session.get(url, cookies=self.cookie)
        info = s.json()
        return info

    def _run(self):
        from data import num_for_lotteryid
        # for jczq in num_for_lotteryid('jczq'):
        # 	self.pc_touzhu(jczq)
        # for jclq in num_for_lotteryid('jclq'):
        # 	self.pc_touzhu(jclq)
        for i in range(10001, 10029):
            print "num:{}".format(i)
            self.pc_touzhu(i)