def setUp(cls):
     container = Container()
     cls.client = container.client
     config = get_config()
     prodkey = config.get("Betfair", "prod_app")
     certfile = config.get("Betfair", "cert_file")
     cls.client = Betfair(prodkey, certfile)
     cls.client.session_token = 'FakeSession'
Esempio n. 2
0
def login(appid, login, pword):

	import json
	import betfair

	from betfair import Betfair

	client = Betfair(appid, ('../../../../Certs/client-2048.crt', '../../../../Certs/client-2048.key'))
	print 'Logging in'
	client.login(login, pword)

	return client
Esempio n. 3
0
    def do_login(self):
        __location = os.path.realpath(
            os.path.join(os.getcwd(), os.path.dirname(__file__)))
        username = config.get('Betfair', 'username')
        password = config.get('Betfair', 'password')
        certfile = config.get('Betfair', 'cert_file')
        devkey = config.get('Betfair', 'dev_app')
        prodkey = config.get('Betfair', 'prod_app')
        full_certfile = os.path.join(__location, certfile)

        self.client = Betfair(prodkey if not self.sandbox_key else devkey,
                              full_certfile)
        self.client.login(username, password)
Esempio n. 4
0
from flask import Flask
from flask.ext.cache import Cache
from flask.ext.cors import CORS
from betfair import Betfair
from betfair.utils import BetfairEncoder
import logging

app = application = Flask(__name__)
app.config.from_object(__name__)
app.config.from_envvar('BETFAIR_API_CONFIG')
app.json_encoder = BetfairEncoder

client = Betfair(app.config['BETFAIR_APPLICATION_KEY'],
                 app.config['BETFAIR_PEM_PATH'])
client.login(app.config['BETFAIR_USER_NAME'], app.config['BETFAIR_PASSWORD'])

cache = Cache(config={'CACHE_TYPE': 'simple'})
cache.init_app(app)

CORS(app,
     origins=[
         'http://localhost:4200',
         'http://stringerer.s3-website-eu-west-1.amazonaws.com'
     ])

stream_handler = logging.StreamHandler()
app.logger.addHandler(stream_handler)

import betfair_tennis_api.endpoints
from betfair_tennis_api.matches import matches_api
from betfair_tennis_api.account import account_api
Esempio n. 5
0
def betfair_get(self, is_ip, counter, sport='Tennis'):
    start = timezone.now()
    ip = 'ip' if is_ip else 'ni'

    client = Betfair('GkhXY3b3KmncnwLe', 'certs/bf.pem')
    # client = Betfair('uv9hV1EjlFimHmgr', 'certs/bf.pem')
    client.login('sherst', 'osT1G11nRe35')
    client.keep_alive()
    tennis_event_type = self.sports[sport]
    markets = client.list_market_catalogue(
        MarketFilter(event_type_ids=[tennis_event_type],
                     market_type_codes=["MATCH_ODDS"],
                     in_play_only=is_ip),
        market_projection=["EVENT", "RUNNER_METADATA", "COMPETITION"],
        max_results=200)
    mids = [m.market_id for m in markets]
    mids_portions = [mids[x:x + 40] for x in xrange(0, len(mids), 40)]
    for mp in mids_portions:
        print(','.join(mp))
        books = client.list_market_book(
            mp,
            price_projection=PriceProjection(
                price_data=betfair.constants.PriceData.EX_BEST_OFFERS))
        for b in books:
            m = next((x for x in markets if x.market_id == b.market_id), None)
            if m.competition == None: continue
            bfcid = m.competition.id
            champname = m.competition.name
            country = m.event.country_code
            event_id = m.event.id
            ds = timezone.make_aware(m.event.open_date)
            p1 = m.runners[0].runner_name
            if (p1 == None or '/' in p1):
                continue
            rid1 = m.runners[0].selection_id
            p2 = m.runners[1].runner_name
            rid2 = m.runners[1].selection_id
            event, created = BFEvent.objects.get_or_create(bfid=event_id)
            if (created):
                champ = self.save_champ(bfcid, champname, tennis_event_type,
                                        country)
                player1 = self.save_player(p1)
                player2 = self.save_player(p2)
                event.cid = champ
                event.rid1 = rid1
                event.rid2 = rid2
                event.pid1 = player1
                event.pid2 = player2
                event.dt = ds
                event.status = 1 if is_ip else 0
                event.save()
            p1b1_odds = b.runners[0].ex.available_to_back[0].price if len(
                b.runners[0].ex.available_to_back) > 0 else 0
            p1b1_size = b.runners[0].ex.available_to_back[0].size if len(
                b.runners[0].ex.available_to_back) > 0 else 0
            p1l1_odds = b.runners[0].ex.available_to_lay[0].price if len(
                b.runners[0].ex.available_to_lay) > 0 else 0
            p1l1_size = b.runners[0].ex.available_to_lay[0].size if len(
                b.runners[0].ex.available_to_lay) > 0 else 0
            p2b1_odds = b.runners[1].ex.available_to_back[0].price if len(
                b.runners[1].ex.available_to_back) > 0 else 0
            p2b1_size = b.runners[1].ex.available_to_back[0].size if len(
                b.runners[1].ex.available_to_back) > 0 else 0
            p2l1_odds = b.runners[1].ex.available_to_lay[0].price if len(
                b.runners[1].ex.available_to_lay) > 0 else 0
            p2l1_size = b.runners[1].ex.available_to_lay[0].size if len(
                b.runners[1].ex.available_to_lay) > 0 else 0
            if (self.is_debug):
                self.stdout.write('*** evid [%s] %s - %s at %s, changed %s\n' %
                                  (event.id, event.pid1.name, event.pid2.name,
                                   event.dt, event.dtc),
                                  ending='')
            try:
                odds = BFOdds.objects.filter(eid=event).latest('dtc')
                if (odds.b1odds != p1b1_odds or odds.b2odds != p2b1_odds
                        or odds.l1odds != p1l1_odds
                        or odds.l2odds != p2l1_odds):
                    self.save_odds(event, p1b1_odds, p2b1_odds, p1l1_odds,
                                   p2l1_odds, p1b1_size, p2b1_size, p1l1_size,
                                   p2l1_size, is_ip)
                    if (self.is_debug):
                        self.stdout.write(
                            'evid[%s], mid[%s] %s %s - %s in %s: %s/%s\n' %
                            (event_id, b.market_id, ds, p1.replace(
                                '\\', ''), p2.replace('\\', ''), country,
                             b.total_matched, b.total_available),
                            ending='')
                        self.stdout.write(
                            '[%s]%s:%s@%s\t|%s@%s\n' %
                            (rid1, p1.replace('\\', ''), p1b1_size, p1b1_odds,
                             p1l1_size, p1l1_odds),
                            ending='')
                        self.stdout.write(
                            '[%s]%s:%s@%s\t|%s@%s\n' %
                            (rid2, p2.replace('\\', ''), p2b1_size, p2b1_odds,
                             p2l1_size, p2l1_odds),
                            ending='')
            except:
                self.save_odds(event, p1b1_odds, p2b1_odds, p1l1_odds,
                               p2l1_odds, p1b1_size, p2b1_size, p1l1_size,
                               p2l1_size, is_ip)
                if (self.is_debug):
                    self.stdout.write(
                        'evid[%s], mid[%s] %s %s - %s in %s: %s/%s\n' %
                        (event_id, b.market_id, ds, p1.replace(
                            '\\', ''), p2.replace('\\', ''), country,
                         b.total_matched, b.total_available),
                        ending='')
                    self.stdout.write('[%s]%s:%s@%s\t|%s@%s\n' %
                                      (rid1, p1.replace('\\', ''), p1b1_size,
                                       p1b1_odds, p1l1_size, p1l1_odds),
                                      ending='')
                    self.stdout.write('[%s]%s:%s@%s\t|%s@%s\n' %
                                      (rid2, p2.replace('\\', ''), p2b1_size,
                                       p2b1_odds, p2l1_size, p2l1_odds),
                                      ending='')
    end = timezone.now()
    log = ALog()
    log.name = 'update_bf_%s_%s' % (sport, ip)
    log.dts = start
    log.counter = counter
    log.duration = (end - start).total_seconds()
    log.save()
    if (self.is_debug):
        self.stdout.write('total execution is %s seconds\n' % (end - start),
                          ending='')
from urllib import request
from urllib.error import HTTPError
import json

from bet356 import getCardCompetitionData, getListCompetition, driver

ITERATION = 50

# connect to API and keep alive session key
dir = os.path.abspath(os.path.dirname(__file__))
key = 'betfair.pem'
out_file_name = 'betfeir.xlsx'
base_dir = os.path.join(dir, 'cert', key)
out_file_dir = os.path.join(dir, 'data', out_file_name)

client = Betfair('OclZSgXWwsQNpQky', '{}'.format(base_dir))
client.login(username='******', password='******')
client.keep_alive()

url = client.api_url
headers = client.headers


def callAping(jsonrpc_req):
    try:
        req = request.Request(url, jsonrpc_req.encode('utf-8'), headers)
        response = urllib.request.urlopen(req)
        jsonResponse = response.read()
        return jsonResponse.decode('utf-8')
    except HTTPError:
        print('Not a valid operation from the service ' + str(url))
Esempio n. 7
0
 def __init__(self, *args, **kwargs):
     super(Command, self).__init__(*args, **kwargs)
     # Setup connection to Betfair API-NG
     self.client = Betfair(settings.BETFAIR_APP, settings.BETFAIR_CERT)
     self.client.login(settings.BETFAIR_USER, settings.BETFAIR_PASS)
#!/usr/bin/env python
'''get_betfair_races.py: Capture daily racing event data (UK win markets).'''

import time

import betfair
from betfair import Betfair
from betfair.models import MarketFilter, MarketCatalogue
from betfair.constants import MarketProjection
import pymysql.cursors

client = Betfair('APP_KEY', ('certs/api.crt', 'certs/api.key'))
client.login('BF_USERNAME', 'BF_PASSWORD')
client.keep_alive()

date_today = time.strftime("%Y-%m-%d")

connection = pymysql.connect(host='localhost',
                             user='******',
                             password='******',
                             db='DATABASE NAME',
                             charset='utf8mb4',
                             autocommit=True,
                             cursorclass=pymysql.cursors.DictCursor)

marketFilter = {
    'eventTypeIds': [7],
    'marketCountries': ['GB'],
    'marketTypeCodes': ["WIN"]
}
Esempio n. 9
0
import json
import betfair

from betfair import Betfair
client = Betfair('eTnX7n6jsiaoGA9g',
                 ('certs/client-2048.crt', 'certs/client-2048.key'))
print 'Logging in'
client.login('*****@*****.**', 'wyeslsc10')

print 'Keeping alive'
client.keep_alive()

account_details = client.get_account_details()
print account_details
a = account_details.currency_code
print a

from betfair.models import MarketFilter
event_types = client.list_event_types(MarketFilter(text_query='tennis'))
print event_types
print event_types[0]
print event_types[0].event_type

print(len(event_types))  # 2
print(event_types[0].event_type.name)  # 'Tennis'

tennis_event_type = event_types[0]
markets = client.list_market_catalogue(
    MarketFilter(event_type_ids=[tennis_event_type.event_type.id]))
print markets[0].market_name  # 'Djokovic Tournament Wins'
Esempio n. 10
0
#!/usr/bin/env python
from betfair import Betfair
import sys

print "HugeHard Test Script"
client = Betfair('fxmlhjiDhNghfmLP',
                 'C:/Users/Cong/Desktop/betfair/keys/shang.pem')
client.login('*****@*****.**', 'wabjtam@123')
print 'login successful'

sys.exit

from betfair.models import MarketFilter

event_types = client.list_event_types(MarketFilter(text_query='basketball'))

#print (len(event_types))
#print (event_types[0].event_type.name)
football_event_type = event_types[0]

competitions = client.list_competitions()
for comp in competitions:
    a = comp['competition']
    if a.name == u'NBA Matches':
        id_NBA = a.id

events = client.list_events(MarketFilter(competition_ids=[id_NBA]))
f = open('C:/Users/Cong/Desktop/betfair/log_basketball.txt', 'w')
for eventResult in events:
    e = eventResult.event
    c = eventResult.market_count
Esempio n. 11
0
Created on 4 Nov 2014

@author: obod
'''
from __future__ import print_function
from betfair.models import MarketFilter
from betfair import Betfair
import betfair_pandas as bp
import datetime
import dateutil
import pandas as pd

if __name__ == '__main__':
    # ssologin
    # To use this you will need app_key,cert_file,username,password
    client = Betfair(app_key, cert_file)
    client.login(username, password)
    # List horse racing event ids
    event_types = bp.list_event_types(
        client, filter={'textQuery': "Horse Racing"
                        })  # First 5 UK horse races, win market, from now
    country_code = 'GB'
    marketFilter = {
        'eventTypeIds': [event_types.id[0]],
        'marketCountries': [country_code],
        'marketTypeCodes': ["WIN"],
        'marketStartTime': {
            'from': datetime.datetime.now()
        }
    }
    # First 5 horse races, win market, from now
Esempio n. 12
0
import threading
from datetime import datetime, timedelta
from betfair import Betfair
from betfair.exceptions import ApiError
from betfair.models import MarketFilter, PriceProjection
from betfair.constants import MarketProjection, PriceData, OrderProjection, MatchProjection, MarketStatus
from config import DEVELOPER_APP_KEY, CERT_FILE, USERNAME, PASSWORD, APP_KEY, STATUS, DEBUG
from marketsdb import MarketsDB
from datetime import datetime

client = Betfair(APP_KEY, CERT_FILE)
client.login(USERNAME, PASSWORD)


class CaptureMatch(threading.Thread):
    def __init__(self, queue, thread_no, db=MarketsDB()):
        """

        :param time_stop: *datetime* time to stop exectuion of code
        :param delta: *int* number of seconds to wait
        :param game_name: *string* String representation of game
        :param db: **MarketsDb** - Object to reading/writing DB data to DB
        :return:
        """
        threading.Thread.__init__(self)
        self.queue = queue
        self.thread_no = thread_no
        self.db = db
        self.client = client
        if DEBUG:
            print("Thread no: {} initialised".format(self.thread_no))
Esempio n. 13
0
#!/usr/bin/env python
from betfair import Betfair
import sys

print "HugeHard Test Script"
client = Betfair('fxmlhjiDhNghfmLP',
                 '/home/shang/git/betfair.py/certs/betfair.pem')
client.login('*****@*****.**', 'wabjtam@123')
print 'login successful'

from betfair.models import MarketFilter
event_types = client.list_event_types(MarketFilter(text_query='soccer'))

print(len(event_types))
print(event_types[0].event_type.name)
football_event_type = event_types[0]

events = client.list_events(
    MarketFilter(event_type_ids=[football_event_type.event_type.id]))

for eventResult in events:
    e = eventResult.event
    c = eventResult.market_count
    print "id:" + e.id + ", name=" + e.name + ", market_count:" + str(c)
    markets = client.list_market_catalogue(MarketFilter(event_ids=[e.id]))
    for m in markets:
        print "    - market: ", m.market_id, m.market_name

#markets = client.list_market_catalogue(
#    MarketFilter(event_type_ids=[football_event_type.event_type.id])
#)