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'
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
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)
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
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))
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"] }
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'
#!/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
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
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))
#!/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]) #)