wip fix
This commit is contained in:
1 parent
9bcd4432c6
commit
6f92f9e1d5
1209 files changed
+220940
No files matched your search
@@ -0,0 +1,388 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Grapper\Betsapi;
|
||||
|
||||
use App\Console\Commands\Curl;
|
||||
use App\Console\Commands\Nuh;
|
||||
use App\Models\Event;
|
||||
use App\Models\EventBookmaker;
|
||||
use App\Models\Odds2way;
|
||||
use App\Models\Odds3way;
|
||||
use App\Models\Odds3wayHt;
|
||||
use App\Models\OddsDc;
|
||||
use App\Models\OddsDnb;
|
||||
use App\Models\OddsGgng;
|
||||
use App\Models\OddsTotal;
|
||||
use App\Utilities\Margin;
|
||||
use App\Utilities\Notice;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class Bet365
|
||||
{
|
||||
public static function grap()
|
||||
{
|
||||
|
||||
$debug = Nuh::$options['d'] ?? 0;
|
||||
|
||||
$today = Nuh::$options['t'] ?? 0;
|
||||
|
||||
$week = Nuh::$options['w'] ?? 0;
|
||||
|
||||
$single = Nuh::$options['id'] ?? 0;
|
||||
|
||||
switch (Nuh::$options['sport']) {
|
||||
case 'Soccer':
|
||||
$sport_id = 1;
|
||||
break;
|
||||
case 'Ice Hockey':
|
||||
$sport_id = 2;
|
||||
break;
|
||||
case 'Basketball':
|
||||
$sport_id = 3;
|
||||
break;
|
||||
case 'Tennis':
|
||||
$sport_id = 5;
|
||||
break;
|
||||
default:
|
||||
Notice::note('SPORT NOT IMPLEMENTED', 'r', 1);
|
||||
break;
|
||||
}
|
||||
|
||||
$events_collector = [];
|
||||
|
||||
$has_markets_collector = [];
|
||||
|
||||
/**
|
||||
* Bet365
|
||||
*/
|
||||
$bookmaker_id = 126;
|
||||
|
||||
if ($single) {
|
||||
$events = Event::where('id', Nuh::$options['id'])->where('bet365_id', '>', 0)->select('id', 'sport_id', 'bet365_id', 'starttime')->get();
|
||||
} elseif ($today) {
|
||||
$events = Event::where('sport_id', $sport_id)->where('bet365_id', '>', 0)->where('starttime', '>=', Carbon::now())->where('starttime', '<', Carbon::now()->addDay())->select('id', 'sport_id', 'bet365_id', 'starttime')->get();
|
||||
} elseif ($week) {
|
||||
$events = Event::where('sport_id', $sport_id)->where('bet365_id', '>', 0)->where('starttime', '>=', Carbon::now())->where('starttime', '<', Carbon::now()->addDays(7))->select('id', 'sport_id', 'bet365_id', 'starttime')->get();
|
||||
} else {
|
||||
// all
|
||||
$events = Event::where('sport_id', $sport_id)->where('bet365_id', '>', 0)->where('starttime', '>=', Carbon::now())->select('id', 'sport_id', 'bet365_id', 'starttime')->get();
|
||||
}
|
||||
if ($events ?? null && $debug) {
|
||||
Notice::note('No events', 'r');
|
||||
}
|
||||
foreach ($events as $key => $event) {
|
||||
|
||||
if (! $event->has_markets) {
|
||||
$has_markets_collector[] = $event->id;
|
||||
}
|
||||
|
||||
if ($debug) {
|
||||
Notice::note([
|
||||
'id' => $event->id,
|
||||
'bet365_id' => $event->bet365_id,
|
||||
'starttime' => $event->starttime,
|
||||
'count' => count($events).'/'.$key + 1,
|
||||
], 'b');
|
||||
}
|
||||
/**
|
||||
* BET365 ODDS (per event)
|
||||
*/
|
||||
$url = 'https://api.b365api.com/v4/bet365/prematch?token='.config('env.betsapi_token').'&FI='.$event->bet365_id;
|
||||
|
||||
$data = Curl::load($url);
|
||||
|
||||
if (isset($data['results'][0]['main'])) {
|
||||
|
||||
DB::transaction(function () use ($event, $bookmaker_id) {
|
||||
EventBookmaker::updateOrCreate([
|
||||
'event_id' => $event->id,
|
||||
'sport_id' => $event->sport_id,
|
||||
'bookmaker_id' => $bookmaker_id,
|
||||
], ['starttime' => $event->starttime, 'in_feed' => 1, 'bmoid' => $event->bet365_id]);
|
||||
}, 5);
|
||||
|
||||
$offer = $data['results'][0]['main']['sp'];
|
||||
|
||||
$base = [];
|
||||
$base['event_id'] = $event->id;
|
||||
$base['bookmaker_id'] = $bookmaker_id;
|
||||
$base['sport_id'] = $event->sport_id;
|
||||
$base['provider_id'] = Nuh::$options['provider_id'];
|
||||
$base['bmoid'] = $event->bet365_id;
|
||||
$base['flags'] = 1;
|
||||
|
||||
/**
|
||||
* ML
|
||||
*/
|
||||
if (isset($offer['to_win_match'])) {
|
||||
|
||||
$data = $offer['to_win_match']['odds'] ?? [];
|
||||
|
||||
if ($data) {
|
||||
|
||||
$odds = [];
|
||||
$odds['h2w'] = number_format($data[0]['odds'], 2) ?? 1;
|
||||
$odds['a2w'] = number_format($data[1]['odds'], 2) ?? 1;
|
||||
$odds['margin'] = (float) Margin::calculate($odds, 1);
|
||||
|
||||
$odds = array_merge($odds, $base);
|
||||
|
||||
$events_collector['odds_2ways'][] = $event->id;
|
||||
|
||||
$res = Odds2way::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
|
||||
|
||||
if (! $res) {
|
||||
Odds2way::create($odds);
|
||||
} else {
|
||||
$res->h2w = $odds['h2w'];
|
||||
$res->a2w = $odds['a2w'];
|
||||
$res->flags = 1;
|
||||
$res->margin = $odds['margin'];
|
||||
DB::transaction(function () use ($res) {
|
||||
$res->save();
|
||||
}, 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 1X2
|
||||
*/
|
||||
if (isset($offer['full_time_result'])) {
|
||||
|
||||
$data = $offer['full_time_result']['odds'] ?? [];
|
||||
|
||||
if ($data) {
|
||||
|
||||
$odds = [];
|
||||
$odds['h3w'] = number_format($data[0]['odds'], 2) ?? 1;
|
||||
$odds['d3w'] = number_format($data[1]['odds'], 2) ?? 1;
|
||||
$odds['a3w'] = number_format($data[2]['odds'], 2) ?? 1;
|
||||
$odds['margin'] = (float) Margin::calculate($odds, 1);
|
||||
|
||||
$odds = array_merge($odds, $base);
|
||||
|
||||
$events_collector['odds_3ways'][] = $event->id;
|
||||
|
||||
$res = Odds3way::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
|
||||
|
||||
if (! $res) {
|
||||
Odds3way::create($odds);
|
||||
} else {
|
||||
$res->h3w = $odds['h3w'];
|
||||
$res->a3w = $odds['d3w'];
|
||||
$res->d3w = $odds['a3w'];
|
||||
$res->flags = 1;
|
||||
$res->margin = $odds['margin'];
|
||||
DB::transaction(function () use ($res) {
|
||||
$res->save();
|
||||
}, 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* DC
|
||||
*/
|
||||
if (isset($offer['double_chance'])) {
|
||||
|
||||
$data = $offer['double_chance']['odds'] ?? [];
|
||||
|
||||
if ($data) {
|
||||
|
||||
$odds = [];
|
||||
$odds['dc1x'] = number_format($data[0]['odds'], 2) ?? 1;
|
||||
$odds['dc12'] = number_format($data[1]['odds'], 2) ?? 1;
|
||||
$odds['dcx2'] = number_format($data[2]['odds'], 2) ?? 1;
|
||||
$odds['margin'] = (float) Margin::calculate($odds, 1);
|
||||
|
||||
$odds = array_merge($odds, $base);
|
||||
|
||||
$events_collector['odds_dc'][] = $event->id;
|
||||
|
||||
$res = OddsDc::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
|
||||
|
||||
if (! $res) {
|
||||
OddsDc::create($odds);
|
||||
} else {
|
||||
$res->dc1x = $odds['dc1x'];
|
||||
$res->dc12 = $odds['dc12'];
|
||||
$res->dcx2 = $odds['dcx2'];
|
||||
$res->flags = 1;
|
||||
$res->margin = $odds['margin'];
|
||||
DB::transaction(function () use ($res) {
|
||||
$res->save();
|
||||
}, 5);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* OU
|
||||
*/
|
||||
if (isset($offer['goals_over_under'])) {
|
||||
|
||||
$data = $offer['goals_over_under']['odds'] ?? [];
|
||||
|
||||
if ($data) {
|
||||
|
||||
$odds = [];
|
||||
$odds['over'] = number_format($data[0]['odds'], 2) ?? 1;
|
||||
$odds['under'] = number_format($data[1]['odds'], 2) ?? 1;
|
||||
$odds['margin'] = (float) Margin::calculate($odds, 1);
|
||||
if ($base['sport_id'] == 1) {
|
||||
$odds['active_spread'] = 1;
|
||||
}
|
||||
|
||||
$odds = array_merge($odds, $base);
|
||||
|
||||
$events_collector['odds_totals'][] = $event->id;
|
||||
|
||||
if ($offer['goals_over_under']['odds'][1]['name'] == '2.5') {
|
||||
$odds['total'] = 2.5;
|
||||
$res = OddsTotal::where('event_id', $event->id)
|
||||
->where('bookmaker_id', $bookmaker_id)
|
||||
->where('total', $odds['total'])
|
||||
->first();
|
||||
|
||||
if (! $res) {
|
||||
OddsTotal::create($odds);
|
||||
} else {
|
||||
$res->over = $odds['over'];
|
||||
$res->under = $odds['under'];
|
||||
$res->difference = abs(1 / $odds['over'] - 1 / $odds['under']);
|
||||
$res->flags = 1;
|
||||
$res->margin = $odds['margin'];
|
||||
DB::transaction(function () use ($res) {
|
||||
$res->save();
|
||||
}, 5);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* GG NG
|
||||
*/
|
||||
if (isset($offer['both_teams_to_score'])) {
|
||||
|
||||
$data = $offer['both_teams_to_score']['odds'] ?? [];
|
||||
|
||||
if ($data) {
|
||||
|
||||
$odds = [];
|
||||
$odds['gg'] = number_format($data[0]['odds'], 2) ?? 1;
|
||||
$odds['ng'] = number_format($data[1]['odds'], 2) ?? 1;
|
||||
$odds['margin'] = (float) Margin::calculate($odds, 1);
|
||||
|
||||
$odds = array_merge($odds, $base);
|
||||
|
||||
$events_collector['odds_ggng'][] = $event->id;
|
||||
|
||||
$res = OddsGgng::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
|
||||
|
||||
if (! $res) {
|
||||
OddsGgng::create($odds);
|
||||
} else {
|
||||
$res->gg = $odds['gg'];
|
||||
$res->ng = $odds['ng'];
|
||||
$res->flags = 1;
|
||||
$res->margin = $odds['margin'];
|
||||
DB::transaction(function () use ($res) {
|
||||
$res->save();
|
||||
}, 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* DNB
|
||||
*/
|
||||
if (isset($offer['draw_no_bet'])) {
|
||||
|
||||
$data = $offer['draw_no_bet']['odds'] ?? [];
|
||||
|
||||
if ($data) {
|
||||
|
||||
$odds = [];
|
||||
$odds['dnb1'] = number_format($data[0]['odds'], 2) ?? 1;
|
||||
$odds['dnb2'] = number_format($data[1]['odds'], 2) ?? 1;
|
||||
$odds['margin'] = (float) Margin::calculate($odds, 1);
|
||||
|
||||
$res = OddsDnb::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
|
||||
|
||||
$odds = array_merge($odds, $base);
|
||||
|
||||
$events_collector['odds_dnb'][] = $event->id;
|
||||
|
||||
if (! $res) {
|
||||
OddsDnb::create($odds);
|
||||
} else {
|
||||
$res->dnb1 = $odds['dnb1'];
|
||||
$res->dnb2 = $odds['dnb2'];
|
||||
$res->flags = 1;
|
||||
$res->margin = $odds['margin'];
|
||||
DB::transaction(function () use ($res) {
|
||||
$res->save();
|
||||
}, 5);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 1X2 HT
|
||||
*/
|
||||
if (isset($offer['half_time_result'])) {
|
||||
|
||||
$data = $offer['half_time_result']['odds'] ?? [];
|
||||
|
||||
if ($data) {
|
||||
|
||||
$odds = [];
|
||||
$odds['h3w'] = number_format($data[0]['odds'], 2) ?? 1;
|
||||
$odds['d3w'] = number_format($data[1]['odds'], 2) ?? 1;
|
||||
$odds['a3w'] = number_format($data[2]['odds'], 2) ?? 1;
|
||||
$odds['margin'] = (float) Margin::calculate($odds, 1);
|
||||
|
||||
$odds = array_merge($odds, $base);
|
||||
|
||||
$events_collector['odds_3ways_ht'][] = $event->id;
|
||||
|
||||
$res = Odds3wayHt::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
|
||||
|
||||
if (! $res) {
|
||||
Odds3wayHt::create($odds);
|
||||
} else {
|
||||
$res->h3w = $odds['h3w'];
|
||||
$res->d3w = $odds['d3w'];
|
||||
$res->a3w = $odds['a3w'];
|
||||
$res->flags = 1;
|
||||
$res->margin = $odds['margin'];
|
||||
DB::transaction(function () use ($res) {
|
||||
$res->save();
|
||||
}, 5);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$id_collector = [];
|
||||
foreach ($events_collector as $table => $event_ids) {
|
||||
$id_collector[] = $event_ids;
|
||||
DB::table($table)->where('bookmaker_id', $bookmaker_id)->whereNotIn('event_id', $event_ids)->update(['flags' => 0]);
|
||||
}
|
||||
if ($id_collector) {
|
||||
foreach ($id_collector as $event_id) {
|
||||
if (in_array($event_id, $has_markets_collector)) {
|
||||
Event::where('id', $event_id)->update(['has_markets' => 1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Grapper\Betsapi;
|
||||
|
||||
use App\Console\Commands\Curl;
|
||||
use App\Console\Commands\Nuh;
|
||||
use App\Models\Event;
|
||||
use App\Models\Mapper;
|
||||
use App\Models\Sport;
|
||||
use App\Utilities\Notice;
|
||||
|
||||
class Bwin
|
||||
{
|
||||
public static function grap()
|
||||
{
|
||||
$debug = Nuh::$options['d'] ?? 0;
|
||||
|
||||
$sportmap = Sport::map('bwin');
|
||||
|
||||
foreach ($sportmap as $bwin_sport_id) {
|
||||
|
||||
$page = 1;
|
||||
$total = 10;
|
||||
|
||||
/**
|
||||
* BWIN ODDS & BETRADAR ID (per page)
|
||||
* only get BETRADAR ID no storing of data
|
||||
*/
|
||||
$base_url = 'https://api.b365api.com/v1/bwin/prematch?token='.config('env.betsapi_token').'&skip_markets=1&page=###page###&sport_id='.$bwin_sport_id;
|
||||
|
||||
while ($page <= $total) {
|
||||
|
||||
if ($debug) {
|
||||
Notice::note("Page: $page \Sport: $bwin_sport_id", 'b');
|
||||
}
|
||||
|
||||
$url = str_replace('###page###', $page, $base_url);
|
||||
|
||||
$data = Curl::load($url);
|
||||
|
||||
if (isset($data['pager'])) {
|
||||
$total = round($data['pager']['total'] / $data['pager']['per_page']);
|
||||
}
|
||||
|
||||
$page++;
|
||||
|
||||
if (isset($data['results'])) {
|
||||
foreach ($data['results'] as $event) {
|
||||
if ($debug && isset($event['HomeTeam']) && isset($event['SportName'])) {
|
||||
Notice::note($event['RegionName'].'-'.$event['SportName']."\n".$event['HomeTeam'].' - '.$event['AwayTeam']);
|
||||
}
|
||||
|
||||
$betsapi_id = $event['our_event_id'] ?? 0;
|
||||
|
||||
$betradar_id = $event['BetRadarId'] ?? 0;
|
||||
|
||||
$bwin_id = $event['Id'] ?? 0;
|
||||
|
||||
if ($betradar_id && $betsapi_id) {
|
||||
|
||||
if ($debug) {
|
||||
Notice::note(["Betsapi ID : $betsapi_id", "Betradar ID : $betradar_id", "Bwin ID : $bwin_id"]);
|
||||
}
|
||||
|
||||
Event::where('betsapi_id', (int) $betsapi_id)->update(['betradar_id' => $betradar_id, 'bwin_id' => $bwin_id]);
|
||||
|
||||
Mapper::where('betradar_id', $betradar_id)->delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Grapper\Betsapi;
|
||||
|
||||
use App\Console\Commands\Curl;
|
||||
use App\Console\Commands\Nuh;
|
||||
use App\Models\Element;
|
||||
use App\Models\ElementProvider;
|
||||
use App\Utilities\Notice;
|
||||
|
||||
class ElementIcons
|
||||
{
|
||||
public static function grap()
|
||||
{
|
||||
$debug = Nuh::$options['d'] ?? 0;
|
||||
|
||||
$min_id = 1;
|
||||
while ($min_id > 0) {
|
||||
|
||||
if ($min_id == 1) {
|
||||
$url = 'https://api.b365api.com/v3/team?token='.config('env.betsapi_token').'&sport_id=1&is_esports=1';
|
||||
} else {
|
||||
$url = 'https://api.b365api.com/v3/team?token='.config('env.betsapi_token').'&sport_id=1&is_esports=1&max_id='.$min_id;
|
||||
}
|
||||
|
||||
$data = Curl::load($url);
|
||||
|
||||
if (! $data['success']) {
|
||||
break;
|
||||
}
|
||||
|
||||
$min_id = $data['pager']['min_id'];
|
||||
|
||||
if ($debug) {
|
||||
Notice::note("MinId: $min_id");
|
||||
}
|
||||
|
||||
foreach ($data['results'] as $value) {
|
||||
|
||||
if (! isset($value['is_esports']) && $value['image_id'] > 0 && $value['cc'] != '') {
|
||||
|
||||
$res = ElementProvider::where('provider_id', 2)->where('provider_element_id', (int) $value['id'])->first();
|
||||
|
||||
if ($res) {
|
||||
if ($debug) {
|
||||
Notice::note($value, 'b');
|
||||
}
|
||||
Element::where('id', $res->element_id)->update(['betsapi_image_id' => $value['image_id']]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Grapper\Betsapi;
|
||||
|
||||
use App\Console\Commands\Curl;
|
||||
use App\Console\Commands\Grapper\Fixtures\FindFixture;
|
||||
use App\Console\Commands\Nuh;
|
||||
use App\Models\Country;
|
||||
use App\Models\Mapper;
|
||||
use App\Models\Sport;
|
||||
use App\Utilities\Notice;
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
class Fixtures
|
||||
{
|
||||
public static function grap()
|
||||
{
|
||||
$debug = Nuh::$options['d'] ?? 0;
|
||||
|
||||
$today = Nuh::$options['t'] ?? 0;
|
||||
|
||||
FindFixture::start();
|
||||
|
||||
/**
|
||||
* Delete Started
|
||||
*/
|
||||
$info = Mapper::where('starttime', '<', Carbon::now()->subHours(2))->delete();
|
||||
|
||||
if ($debug) {
|
||||
Notice::note("Deleted: $info");
|
||||
}
|
||||
|
||||
$country_map = Country::pluck('id', 'iso2');
|
||||
|
||||
$sportmap = Sport::map('bapi', 0, [1, 2, 3, 5]);
|
||||
|
||||
$now = Carbon::now();
|
||||
|
||||
for ($i = 0; $i < 30; $i++) {
|
||||
|
||||
if ($debug) {
|
||||
Notice::note('Day: '.$now->format('d. M Y'), 'g');
|
||||
}
|
||||
|
||||
$base_url = 'https://api.b365api.com/v3/events/upcoming?sport_id=###sport_id###&page=###page###&day='.$now->format('Ymd').'&skip_esports=1&token='.config('env.betsapi_token');
|
||||
|
||||
$now->addDays(1);
|
||||
|
||||
$total = 1;
|
||||
foreach ($sportmap as $sport_id => $betsapi_sport_id) {
|
||||
|
||||
$sport_url = str_replace('###sport_id###', $betsapi_sport_id, $base_url);
|
||||
|
||||
$page = 1;
|
||||
while ($page <= $total) {
|
||||
|
||||
$url = str_replace('###page###', $page, $sport_url);
|
||||
|
||||
$data = Curl::load($url);
|
||||
|
||||
if (! isset($data['pager'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$page++;
|
||||
|
||||
if (isset($data['pager']['total'])) {
|
||||
$total = round($data['pager']['total'] / $data['pager']['per_page']);
|
||||
|
||||
if ($debug) {
|
||||
Notice::note("Page: $page \nTotal: $total");
|
||||
}
|
||||
|
||||
if (isset($data['results']) && \count($data['results'])) {
|
||||
|
||||
foreach ($data['results'] as $row) {
|
||||
|
||||
if (isset($row['home']['id']) && isset($row['away']['id']) && strpos($row['league']['name'], 'Esoccer') === false) {
|
||||
|
||||
$cc = strtoupper($row['league']['cc']);
|
||||
$event = [
|
||||
'event_id' => (int) $row['id'],
|
||||
'bet365_id' => isset($row['bet365_id']) ? $row['bet365_id'] : 0,
|
||||
'sport_id' => (int) $sport_id,
|
||||
'provider_id' => (int) Nuh::$options['provider_id'],
|
||||
'starttime' => Carbon::createFromTimestamp((string) $row['time'])->toDateTimeString(),
|
||||
'country_id' => $country_map[$cc] ?? 0,
|
||||
'home' => $row['home']['name'] ?? '',
|
||||
'home_id' => (int) $row['home']['id'],
|
||||
'home_cc' => strtoupper($row['home']['cc']) ?? '',
|
||||
'away' => $row['away']['name'] ?? '',
|
||||
'away_id' => (int) $row['away']['id'],
|
||||
'away_cc' => strtoupper($row['away']['cc']) ?? '',
|
||||
'group' => $row['league']['name'] ?? '',
|
||||
'group_id' => (int) $row['league']['id'] ?? 0,
|
||||
'group_cc' => strtoupper($row['league']['cc']) ?? '',
|
||||
];
|
||||
|
||||
FindFixture::find($event);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($today) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,148 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Grapper\Betsapi;
|
||||
|
||||
use App\Console\Commands\Curl;
|
||||
use App\Console\Commands\Nuh;
|
||||
use App\Models\Event;
|
||||
use App\Models\Odds3way;
|
||||
use App\Models\Supervisor;
|
||||
use App\Utilities\Margin;
|
||||
use App\Utilities\Notice;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class Odds
|
||||
{
|
||||
/**
|
||||
* Create a new class instance.
|
||||
*/
|
||||
public static function grap()
|
||||
{
|
||||
$debug = Nuh::$options['d'] ?? 0;
|
||||
|
||||
$today = Nuh::$options['t'] ?? 0;
|
||||
|
||||
$week = Nuh::$options['w'] ?? 0;
|
||||
|
||||
$single = Nuh::$options['id'] ?? 0;
|
||||
|
||||
if ($debug) {
|
||||
Notice::note('BETSAPI ODDS '.Nuh::$options['sport'], 'b');
|
||||
}
|
||||
|
||||
$sources = [83 => 'pinnaclesports'];
|
||||
|
||||
$flags = [];
|
||||
|
||||
if ($single) {
|
||||
$events = Event::where('id', Nuh::$options['id'])->where('betsapi_id', '>', 0)->select('id', 'sport_id', 'bet365_id', 'betsapi_id', 'starttime')->get();
|
||||
} elseif ($today) {
|
||||
$events = Event::where('sport_id', Nuh::$options['sport_id'])->where('betsapi_id', '>', 0)->where('starttime', '>=', Carbon::now())->where('starttime', '<', Carbon::now()->addDay())->select('id', 'sport_id', 'bet365_id', 'betsapi_id', 'starttime')->get();
|
||||
} elseif ($week) {
|
||||
$events = Event::where('sport_id', Nuh::$options['sport_id'])->where('betsapi_id', '>', 0)->where('starttime', '>=', Carbon::now())->where('starttime', '<', Carbon::now()->addDays(7))->select('id', 'sport_id', 'bet365_id', 'betsapi_id', 'starttime')->get();
|
||||
} else {
|
||||
// all
|
||||
$events = Event::where('sport_id', Nuh::$options['sport_id'])->where('betsapi_id', '>', 0)->where('starttime', '>=', Carbon::now())->select('id', 'sport_id', 'bet365_id', 'betsapi_id', 'starttime')->get();
|
||||
}
|
||||
|
||||
foreach ($events as $key => $event) {
|
||||
|
||||
if ($debug) {
|
||||
Notice::note([
|
||||
'id' => $event->id,
|
||||
'betsapi_id' => $event->betsapi_id,
|
||||
'starttime' => $event->starttime,
|
||||
'count' => count($events).'/'.$key + 1,
|
||||
], 'b');
|
||||
}
|
||||
|
||||
$since_time = Nuh::$options['lastcall'] - 600;
|
||||
|
||||
$since_time = 0;
|
||||
|
||||
foreach ($sources as $bookmaker_id => $source) {
|
||||
|
||||
$url = 'https://api.b365api.com/v2/event/odds?token='.config('env.betsapi_token').'&source'.$source.'&since_time='.$since_time.'&event_id='.$event->betsapi_id;
|
||||
|
||||
$data = Curl::load($url);
|
||||
|
||||
$base = [];
|
||||
$base['event_id'] = $event->id;
|
||||
$base['bookmaker_id'] = $bookmaker_id;
|
||||
$base['sport_id'] = $event->sport_id;
|
||||
$base['provider_id'] = Nuh::$options['provider_id'];
|
||||
$base['bmoid'] = $event->betsapi_id;
|
||||
$base['flag'] = 1;
|
||||
|
||||
foreach ($data['results']['odds'] as $key => $value) {
|
||||
switch ($key) {
|
||||
case '1_1':
|
||||
|
||||
$odds = [];
|
||||
$odds['h3w'] = number_format($value[0]['home_od'], 2) ?? 1;
|
||||
$odds['d3w'] = number_format($value[0]['draw_od'], 2) ?? 1;
|
||||
$odds['a3w'] = number_format($value[0]['away_od'], 2) ?? 1;
|
||||
$odds['margin'] = (float) Margin::calculate($odds, 1);
|
||||
|
||||
$odds = array_merge($odds, $base);
|
||||
|
||||
$flags['odds_3ways'][] = $event->id;
|
||||
|
||||
$res = Odds3way::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
|
||||
|
||||
if (! $res) {
|
||||
Odds3way::create($odds);
|
||||
} else {
|
||||
$res->h3w = $odds['h3w'];
|
||||
$res->d3w = $odds['d3w'];
|
||||
$res->a3w = $odds['a3w'];
|
||||
$res->flags = 1;
|
||||
$res->margin = $odds['margin'];
|
||||
DB::transaction(function () use ($res) {
|
||||
$res->save();
|
||||
}, 5);
|
||||
|
||||
}
|
||||
break;
|
||||
case '1_3':
|
||||
|
||||
// dd($value);
|
||||
|
||||
$odds = [];
|
||||
$odds['h3w'] = number_format($value[0]['home_od'], 2) ?? 1;
|
||||
$odds['d3w'] = number_format($value[0]['draw_od'], 2) ?? 1;
|
||||
$odds['a3w'] = number_format($value[0]['away_od'], 2) ?? 1;
|
||||
$odds['margin'] = (float) Margin::calculate($odds, 1);
|
||||
|
||||
$odds = array_merge($odds, $base);
|
||||
|
||||
$res = Odds3way::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
|
||||
|
||||
if (! $res) {
|
||||
Odds3way::create($odds);
|
||||
} else {
|
||||
$res->h3w = $odds['h3w'];
|
||||
$res->d3w = $odds['d3w'];
|
||||
$res->a3w = $odds['a3w'];
|
||||
$res->flags = 1;
|
||||
$res->margin = $odds['margin'];
|
||||
DB::transaction(function () use ($res) {
|
||||
$res->save();
|
||||
}, 5);
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Supervisor::where('id', Nuh::$options['supervisor_id'])->update(['lastcall' => time()]);
|
||||
|
||||
}
|
||||
// needs check
|
||||
foreach ($flags as $table => $event_ids) {
|
||||
DB::table($table)->where('bookmaker_id', $bookmaker_id)->whereNotIn('event_id', $event_ids)->update(['flags' => 0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Grapper\Betsapi;
|
||||
|
||||
use App\Console\Commands\Curl;
|
||||
use App\Console\Commands\Grapper\Fixtures\StoreElement;
|
||||
use App\Console\Commands\Grapper\Fixtures\StoreGroup;
|
||||
use App\Console\Commands\Nuh;
|
||||
use App\Models\Event;
|
||||
use App\Models\Mapper;
|
||||
use App\Models\Odds2way;
|
||||
use App\Models\Odds3way;
|
||||
use App\Utilities\Notice;
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
class Willhill
|
||||
{
|
||||
public static function grap()
|
||||
{
|
||||
$debug = Nuh::$options['d'] ?? 0;
|
||||
|
||||
/**
|
||||
* williamhill
|
||||
*/
|
||||
$bookmaker_id = 42;
|
||||
$collection = [];
|
||||
|
||||
$res = Odds3way::with('event')->where('bookmaker_id', $bookmaker_id)->get();
|
||||
foreach ($res as $value) {
|
||||
if ($value->event->starttime > Carbon::now() && $value->event->starttime < Carbon::now()->addDays(7) && $value->event->betsapi_id == 0) {
|
||||
$collection[] = [
|
||||
'txodds_id' => $value->event_id,
|
||||
'willhill_id' => $value->bmoid,
|
||||
'sport_id' => $value->sport_id,
|
||||
];
|
||||
}
|
||||
}
|
||||
$res = Odds2way::with('event')->where('bookmaker_id', $bookmaker_id)->get();
|
||||
foreach ($res as $value) {
|
||||
if ($value->event->starttime > Carbon::now() && $value->event->starttime < Carbon::now()->addDays(7) && $value->event->betsapi_id == 0) {
|
||||
$collection[] = [
|
||||
'txodds_id' => $value->event_id,
|
||||
'willhill_id' => $value->bmoid,
|
||||
'sport_id' => $value->sport_id,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($collection as $event) {
|
||||
|
||||
$url = 'https://api.b365api.com/v1/williamhill/result?token='.config('env.betsapi_token').'&event_id='.$event['willhill_id'];
|
||||
|
||||
$data = Curl::load($url);
|
||||
|
||||
$betsapi_id = $data['results'][0]['id'] ?? 0;
|
||||
|
||||
$bet365_id = $data['results'][0]['bet365_id'] ?? 0;
|
||||
|
||||
if ($debug) {
|
||||
$arr = [
|
||||
'Mapper TXOdds to Bet365',
|
||||
'TXdds ID : '.$event['txodds_id'],
|
||||
"Bet365 ID : $bet365_id",
|
||||
'Willhill ID : '.$event['willhill_id'],
|
||||
'Sport ID : '.$event['sport_id'],
|
||||
];
|
||||
Notice::note($arr, 'b');
|
||||
}
|
||||
|
||||
if ($betsapi_id) {
|
||||
|
||||
if (isset($data['results'][0]['home'])) {
|
||||
|
||||
$match = Event::where('id', (int) $event['txodds_id'])->first();
|
||||
|
||||
$ele = [];
|
||||
$ele['sport_id'] = $event['sport_id'];
|
||||
$ele['provider_id'] = Nuh::$options['provider_id'];
|
||||
$ele['element_id'] = $match->home_id ?? 0;
|
||||
$ele['provider_element_id'] = $data['results'][0]['home']['id'] ?? 0;
|
||||
$ele['name'] = $data['results'][0]['home']['name'];
|
||||
StoreElement::store($elements, $ele);
|
||||
|
||||
$ele = [];
|
||||
$ele['sport_id'] = $event['sport_id'];
|
||||
$ele['provider_id'] = Nuh::$options['provider_id'];
|
||||
$ele['element_id'] = $match->away_id ?? 0;
|
||||
$ele['provider_element_id'] = $data['results'][0]['away']['id'] ?? 0;
|
||||
$ele['name'] = $data['results'][0]['away']['name'];
|
||||
StoreElement::store($elements, $ele);
|
||||
|
||||
$group = [];
|
||||
$ele['sport_id'] = $event['sport_id'];
|
||||
$group['provider_id'] = Nuh::$options['provider_id'];
|
||||
$group['competition_group_id'] = $match->competition_group_id;
|
||||
$group['provider_group_id'] = $data['results'][0]['league']['id'] ?? 0;
|
||||
$group['name'] = $data['results'][0]['league']['name'];
|
||||
StoreGroup::store($groups, $group);
|
||||
|
||||
$match->betsapi_id = $betsapi_id;
|
||||
$match->bet365_id = $bet365_id;
|
||||
$match->save();
|
||||
|
||||
if ($betsapi_id) {
|
||||
Mapper::where('event_id', $betsapi_id)->delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user