Betaspi Grapper Bet365 per sport

This commit is contained in:
salam committed 2026-02-19 13:38:37 +01:00
1 parent 1ac74e3e4f
commit 676eecd3ca
15 files changed
+305 -148

No files matched your search

@@ -0,0 +1,74 @@
<?php
namespace App\Console\Commands\Services\DbMapper;
use App\Console\Commands\DbMapper\Store\StoreElement;
use App\Console\Commands\DbMapper\Store\StoreGroup;
use App\Console\Commands\DbMapper\Tasks\Helper\FindElement;
use App\Console\Commands\DbMapper\Tasks\Helper\FindGroup;
use App\Console\Commands\Nuh;
use App\Models\Event;
use App\Models\Mapper;
use App\Utilities\Notice;
use Carbon\Carbon;
class Bet365Tennis
{
/**
* Provider ID 2
*/
public static function run()
{
$debug = Nuh::$options['d'] ?? 0;
if ($debug) {
Notice::note(Nuh::$options['name'].' '.Nuh::$options['sport'], 'g');
}
$mappers = Mapper::where('provider_id', 2)->where('sport_id', 5)->where('starttime', '>', Carbon::now())->get()->toArray();
foreach ($mappers as $mapper) {
FindElement::run($mapper);
FindGroup::run($mapper);
print_r($mapper);
if ($mapper['txodds_home_id'] && $mapper['txodds_away_id'] && $mapper['txodds_group_id']) {
$from = Carbon::createFromDate($mapper['starttime'])->subDay();
$to = Carbon::createFromDate($mapper['starttime'])->addDay();
$event = Event::whereDate('starttime', '>', $from)
->whereDate('starttime', '<', $to)
->where('home_id', $mapper['txodds_home_id'])
->where('away_id', $mapper['txodds_away_id'])
->where('competition_group_id', $mapper['txodds_group_id'])
->first()->toArray();
if ($event) {
StoreElement::store($mapper);
StoreGroup::store($mapper);
$arr = [];
if ($mapper['bet365_id']) {
$arr['bet365_id'] = $mapper['bet365_id'];
}
if ($mapper['betradar_id']) {
$arr['betradar_id'] = $mapper['betradar_id'];
}
if ($mapper['betsapi_id']) {
$arr['betsapi_id'] = $mapper['betsapi_id'];
}
if ($arr) {
Event::where('id', $event['id'])->update($arr);
}
dd($event);
}
}
}
}
}
@@ -0,0 +1,32 @@
<?php
namespace App\Console\Commands\Services\DbMapper;
use App\Console\Commands\Nuh;
use App\Utilities\Notice;
class DbMapper
{
public static function switch()
{
$debug = Nuh::$options['d'] ?? 0;
switch (Nuh::$options['name']) {
case 'Bet365':
switch (Nuh::$options['sport']) {
case 'Tennis':
Bet365Tennis::run();
break;
default:
Notice::note(Nuh::$options['name'].' '.Nuh::$options['sport'].' not implemented', 'r', 1);
break;
}
break;
default:
Notice::note(Nuh::$options['name'].' '.Nuh::$options['sport'].' not implemented', 'r', 1);
break;
}
}
}
@@ -1,6 +1,6 @@
<?php <?php
namespace App\Console\Commands\Services\Tasks\Helper; namespace App\Console\Commands\DbMapper\Tasks\Helper;
class ExplodeString class ExplodeString
{ {
@@ -1,6 +1,6 @@
<?php <?php
namespace App\Console\Commands\Services\Tasks\Helper; namespace App\Console\Commands\DbMapper\Tasks\Helper;
use App\Models\CountriesItalian; use App\Models\CountriesItalian;
use App\Models\Country; use App\Models\Country;
@@ -0,0 +1,42 @@
<?php
namespace App\Console\Commands\DbMapper\Tasks\Helper;
use App\Models\Element;
use App\Models\ElementProvider;
class FindElement
{
public static function run(&$mapper)
{
if (isset($mapper['home_id'])) {
$mapper['txodds_home_id'] = ElementProvider::where('provider_id', $mapper['provider_id'])
->where('provider_element_id', $mapper['home_id'])->value('element_id');
}
if (! $mapper['txodds_home_id']) {
$arr = ExplodeString::grap($mapper['home']);
$mapper['txodds_home_id'] = Element::where('sport_id', $mapper['sport_id'])
->where(function ($query) use ($arr) {
foreach ($arr as $str) {
$query->where('name', 'like', '%'.$str.'%');
}
})->value('id');
}
if (isset($mapper['away_id'])) {
$mapper['txodds_away_id'] = ElementProvider::where('provider_id', $mapper['provider_id'])
->where('provider_element_id', $mapper['away_id'])->value('element_id');
}
if (! $mapper['txodds_away_id']) {
$arr = ExplodeString::grap($mapper['away']);
$mapper['txodds_away_id'] = Element::where('sport_id', $mapper['sport_id'])
->where(function ($query) use ($arr) {
foreach ($arr as $str) {
$query->where('name', 'like', '%'.$str.'%');
}
})->value('id');
}
}
}
@@ -0,0 +1,28 @@
<?php
namespace App\Console\Commands\DbMapper\Tasks\Helper;
use App\Models\CompetitionGroup;
use App\Models\CompetitionGroupProvider;
class FindGroup
{
public static function run(&$mapper)
{
if (isset($mapper['group_id'])) {
$mapper['txodds_group_id'] = CompetitionGroupProvider::where('provider_id', $mapper['provider_id'])
->where('provider_group_id', $mapper['group_id'])->value('competition_group_id');
}
if (! $mapper['txodds_group_id']) {
$arr = ExplodeString::grap($mapper['group']);
$mapper['txodds_group_id'] = CompetitionGroup::where('sport_id', $mapper['sport_id'])
->where(function ($query) use ($arr) {
foreach ($arr as $str) {
$query->where('name', 'like', '%'.$str.'%');
}
})->value('id');
}
}
}
@@ -0,0 +1,28 @@
<?php
namespace App\Console\Commands\DbMapper\Store;
use App\Models\ElementProvider;
class StoreElement
{
public static function store(&$mapper)
{
$home = [];
$home['sport_id'] = $mapper['sport_id'];
$home['element_id'] = $mapper['txodds_home_id'];
$home['provider_id'] = $mapper['provider_id'];
$home['name'] = $mapper['home'];
ElementProvider::updateOrCreate(['provider_element_id' => (int) $mapper['home_id']], $home);
$away = [];
$away['sport_id'] = $mapper['sport_id'];
$away['element_id'] = $mapper['txodds_away_id'];
$away['provider_id'] = $mapper['provider_id'];
$away['name'] = $mapper['away'];
ElementProvider::updateOrCreate(['provider_element_id' => (int) $mapper['away_id']], $away);
}
}
@@ -0,0 +1,19 @@
<?php
namespace App\Console\Commands\DbMapper\Store;
use App\Models\CompetitionGroupProvider;
class StoreGroup
{
public static function store(&$mapper)
{
$group = [];
$group['sport_id'] = $mapper['sport_id'];
$group['competition_group_id'] = $mapper['txodds_group_id'];
$group['provider_id'] = $mapper['provider_id'];
$group['name'] = $mapper['group'];
CompetitionGroupProvider::updateOrCreate(['provider_group_id' => (int) $mapper['group_id']], $group);
}
}
@@ -6,13 +6,13 @@ use App\Console\Commands\Curl;
use App\Console\Commands\Nuh; use App\Console\Commands\Nuh;
use App\Models\Event; use App\Models\Event;
use App\Models\EventBookmaker; use App\Models\EventBookmaker;
use App\Models\Odds2way;
use App\Models\Odds3way; use App\Models\Odds3way;
use App\Models\Odds3wayHt; use App\Models\Odds3wayHt;
use App\Models\OddsDc; use App\Models\OddsDc;
use App\Models\OddsDnb; use App\Models\OddsDnb;
use App\Models\OddsGgng; use App\Models\OddsGgng;
use App\Models\OddsTotal; use App\Models\OddsTotal;
use App\Models\Sport;
use App\Utilities\Margin; use App\Utilities\Margin;
use App\Utilities\Notice; use App\Utilities\Notice;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
@@ -22,6 +22,7 @@ class Bet365
{ {
public static function grap() public static function grap()
{ {
$debug = Nuh::$options['d'] ?? 0; $debug = Nuh::$options['d'] ?? 0;
$today = Nuh::$options['t'] ?? 0; $today = Nuh::$options['t'] ?? 0;
@@ -30,17 +31,33 @@ class Bet365
$single = Nuh::$options['id'] ?? 0; $single = Nuh::$options['id'] ?? 0;
$sportmap = Sport::map('bapi', 1, [1, 2, 3, 5]); 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 = []; $events_collector = [];
$has_markets_collector = [];
/** /**
* Bet365 * Bet365
*/ */
$bookmaker_id = 126; $bookmaker_id = 126;
foreach ($sportmap as $sport_id) {
if ($single) { if ($single) {
$events = Event::where('id', Nuh::$options['id'])->where('bet365_id', '>', 0)->select('id', 'sport_id', 'bet365_id', 'starttime')->get(); $events = Event::where('id', Nuh::$options['id'])->where('bet365_id', '>', 0)->select('id', 'sport_id', 'bet365_id', 'starttime')->get();
} elseif ($today) { } elseif ($today) {
@@ -56,6 +73,10 @@ class Bet365
} }
foreach ($events as $key => $event) { foreach ($events as $key => $event) {
if (! $event->has_markets) {
$has_markets_collector[] = $event_id;
}
if ($debug) { if ($debug) {
Notice::note([ Notice::note([
'id' => $event->id, 'id' => $event->id,
@@ -91,6 +112,40 @@ class Bet365
$base['bmoid'] = $event->bet365_id; $base['bmoid'] = $event->bet365_id;
$base['flags'] = 1; $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->h3w = $odds['h2w'];
$res->a3w = $odds['a2w'];
$res->flags = 1;
$res->margin = $odds['margin'];
DB::transaction(function () use ($res) {
$res->save();
}, 5);
}
}
}
/** /**
* 1X2 * 1X2
*/ */
@@ -316,10 +371,18 @@ class Bet365
} }
} }
} }
}
$id_collector = [];
foreach ($events_collector as $table => $event_ids) { 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]); 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]);
}
}
}
} }
} }
@@ -46,7 +46,7 @@ class Bwin
if (isset($data['results'])) { if (isset($data['results'])) {
foreach ($data['results'] as $event) { foreach ($data['results'] as $event) {
if ($debug && isset($event['HomeTeam'])) { if ($debug && isset($event['HomeTeam']) && isset($event['SportName'])) {
Notice::note($event['RegionName'].'-'.$event['SportName']."\n".$event['HomeTeam'].' - '.$event['AwayTeam']); Notice::note($event['RegionName'].'-'.$event['SportName']."\n".$event['HomeTeam'].' - '.$event['AwayTeam']);
} }
+5
View File
@@ -8,6 +8,7 @@ use App\Console\Commands\Grapper\Goldbet;
use App\Console\Commands\Grapper\Logifuture; use App\Console\Commands\Grapper\Logifuture;
use App\Console\Commands\Grapper\Magloo; use App\Console\Commands\Grapper\Magloo;
use App\Console\Commands\Grapper\TxOdds; use App\Console\Commands\Grapper\TxOdds;
use App\Console\Commands\Services\DbMapper\DbMapper;
use App\Console\Commands\Services\Services; use App\Console\Commands\Services\Services;
use App\Models\Supervisor; use App\Models\Supervisor;
use App\Utilities\Notice; use App\Utilities\Notice;
@@ -116,6 +117,10 @@ class Nuh extends Command
// GOLDBET // GOLDBET
Goldbet::switch(); Goldbet::switch();
break; break;
case 11:
// DB MAPPER
DbMapper::switch();
break;
default: default:
Notice::note('Provider not defined', 'r', 1); Notice::note('Provider not defined', 'r', 1);
break; break;
@@ -1,66 +0,0 @@
<?php
namespace App\Console\Commands\Services\Tasks;
use App\Console\Commands\Nuh;
use App\Console\Commands\Services\Tasks\Helper\FindCountry;
use App\Console\Commands\Services\Tasks\Helper\FindElement;
use App\Console\Commands\Services\Tasks\Helper\FindGroup;
use App\Models\Event;
use App\Models\Mapper;
use App\Utilities\Notice;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
class DBMapper
{
public static function run()
{
$debug = Nuh::$options['d'] ?? 0;
if ($debug) {
Notice::note('MAPPER SOCCER', 'g');
}
$events = Mapper::get()->toArray();
$i = 0;
foreach ($events as $event) {
Notice::note($i);
FindElement::run($event);
FindGroup::run($event);
FindCountry::run($event);
// print_r($event);
if ($event['txodds_home_id'] && $event['txodds_away_id'] && $event['txodds_group_id']) {
$from = Carbon::createFromDate($event['starttime'])->subDay();
$to = Carbon::createFromDate($event['starttime'])->addDay();
// DB::enableQueryLog();
$query = Event::where('starttime', '>', $from->toDateTimeString())
->where('starttime', '<', $to->toDateTimeString())
->whereIn('home_id', $event['txodds_home_id'])
->whereIn('home_id', $event['txodds_away_id'])
->whereIn('competition_group_id', $event['txodds_group_id'])
->get();
// Notice::db(DB::getQueryLog());
Notice::db($query);
}
$i++;
if ($i > 100) {
exit;
}
}
}
}
@@ -1,42 +0,0 @@
<?php
namespace App\Console\Commands\Services\Tasks\Helper;
use App\Models\Element;
use App\Models\ElementProvider;
class FindElement
{
public static function run(&$event)
{
if (isset($event['home_id'])) {
$event['txodds_home_id'][] = ElementProvider::where('provider_id', $event['provider_id'])
->where('provider_element_id', $event['home_id'])->value('element_id');
}
if (! $event['txodds_home_id']) {
$arr = ExplodeString::grap($event['home']);
$event['txodds_home_id'] = Element::where('sport_id', $event['sport_id'])
->where(function ($query) use ($arr) {
foreach ($arr as $str) {
$query->orwhere('name', 'like', '%'.$str.'%');
}
})->pluck('id')->toArray();
}
if (isset($event['away_id'])) {
$event['txodds_away_id'][] = ElementProvider::where('provider_id', $event['provider_id'])
->where('provider_element_id', $event['away_id'])->value('element_id');
}
if (! $event['txodds_away_id']) {
$arr = ExplodeString::grap($event['away']);
$event['txodds_away_id'] = Element::where('sport_id', $event['sport_id'])
->where(function ($query) use ($arr) {
foreach ($arr as $str) {
$query->orwhere('name', 'like', '%'.$str.'%');
}
})->pluck('id')->toArray();
}
}
}
@@ -1,29 +0,0 @@
<?php
namespace App\Console\Commands\Services\Tasks\Helper;
use App\Models\CompetitionGroup;
use App\Models\CompetitionGroupProvider;
class FindGroup
{
public static function run(&$event)
{
if (isset($event['group_id'])) {
$event['txodds_group_id'][] = CompetitionGroupProvider::where('provider_id', $event['provider_id'])
->where('provider_group_id', $event['group_id'])->value('competition_group_id');
}
if (! $event['txodds_group_id']) {
$arr = ExplodeString::grap($event['group']);
$event['txodds_group_id'] = CompetitionGroup::where('sport_id', $event['sport_id'])
->where(function ($query) use ($arr) {
foreach ($arr as $str) {
$query->orwhere('name', 'like', '%'.$str.'%');
}
})->pluck('id')->toArray();
}
}
}
@@ -40,11 +40,12 @@ class SupervisorsTable
1 => 'danger', 1 => 'danger',
8 => 'danger', 8 => 'danger',
2 => 'success', 2 => 'success',
11 => 'info',
default => 'warning', default => 'warning',
}), }),
Stack::make([ Stack::make([
SelectColumn::make('name') SelectColumn::make('name')
->selectablePlaceholder(false) ->selectablePlaceholder(true)
->hidden(function (ListSupervisors $livewire) { ->hidden(function (ListSupervisors $livewire) {
return $livewire->tableFilters['provider_id']['value'] == 8; return $livewire->tableFilters['provider_id']['value'] == 8;
}) })
@@ -85,6 +86,10 @@ class SupervisorsTable
return [ return [
'GRAPPER DIRCET' => 'GRAPPER DIRCET', 'GRAPPER DIRCET' => 'GRAPPER DIRCET',
]; ];
case 11:
return [
'Bet365' => 'Bet365',
];
default: default:
return []; return [];
} }
@@ -144,8 +149,6 @@ class SupervisorsTable
]) ])
->filters([ ->filters([
SelectFilter::make('provider_id') SelectFilter::make('provider_id')
->default(1)
->selectablePlaceholder(false)
->relationship('provider', 'name') ->relationship('provider', 'name')
->label('Provider'), ->label('Provider'),
SelectFilter::make('sport_id') SelectFilter::make('sport_id')