fumetto max ok

This commit is contained in:
salam committed 2026-01-03 17:46:23 +01:00
1 parent 9e7384daf8
commit 9c78f507f4
58 files changed
+672 -144

No files matched your search

+163 -18
View File
@@ -3,46 +3,191 @@
namespace App\Console\Commands\Grapper\Magloo;
use App\Console\Commands\Curl;
use App\Console\Commands\Grapper\Magloo\Odds\FilterHandicap;
use App\Console\Commands\Grapper\Magloo\Odds\FilterTotals;
use App\Console\Commands\Grapper\Magloo\Odds\FilterTotalsQ1;
use App\Console\Commands\Nuh;
use App\Models\Event;
use App\Models\Odds3way;
use App\Models\OddsDc;
use App\Models\OddsHandicap;
use App\Models\OddsHandicapQ1;
use App\Models\OddsQualify;
use App\Models\OddsTotal;
use App\Models\OddsTotalQ1;
use App\Models\Sport;
use App\Utilities\Margin;
use App\Utilities\Notice;
use Illuminate\Support\Carbon;
class Odds
{
public static function grap()
{
$debug = Nuh::$options['d'] ?? 0;
$test = Nuh::$options['t'] ?? 0;
$echo = Nuh::$options['e'] ?? 0;
$proxy = Nuh::$options['p'] ?? 0;
$sportmap = Sport::map('magl', 1, [1, 3]);
if ($proxy) {
Notice::note('PROXY USED', 'r');
}
if ($debug) {
Notice::note('ODDS '.Nuh::$options['process'], 'b');
}
switch (Nuh::$options['provider_id']) {
case 3:
// KENIA
if ($test) {
$base_url = 'https://int.external.api.algorez.com/api/sb/affiliates/30/en/1/prematch/sport';
} else {
$base_url = 'https://api.externalsvc.com/api/sb/affiliates/30/en/1/prematch/sport';
}
$base_url = 'https://api.externalsvc.com/api/sb/affiliates/20/1/prematch/sport/';
$bookmaker_id = 10;
break;
case 4:
// NIGERIA
if ($test) {
$base_url = 'https://int.external.api.algorez.com/api/sb/affiliates/20/en/1/prematch/sport';
} else {
$base_url = 'https://api.externalsvc.com/api/sb/affiliates/20/en/1/prematch/sport';
}
break;
default:
Notice::note('prosses name does not exist', 'r', 1);
$base_url = 'https://api.externalsvc.com/api/sb/affiliates/30/1/prematch/sport/';
$bookmaker_id = 16;
break;
}
$sportmap = Sport::map('magl');
foreach ($sportmap as $magloo_sport_id => $sport_id) {
$url = $base_url.$magloo_sport_id.'/odds';
$_data = Curl::load($url, 1);
$data = Curl::load($url);
if (! is_array($data) or \count($data) == 0) {
Notice::note('no data in feed', 'r', 1);
dd($_data);
return;
}
foreach ($data as $match) {
$betradar_id = (int) preg_replace('/\D/', '', $match['p']);
$starttime = Carbon::parse($match['dt'])->toDateTimeString();
$event_id = Event::where('betradar_id', $betradar_id)->value('id');
if ($event_id) {
$base = [];
$base['sport_id'] = $sport_id;
$base['provider_id'] = Nuh::$options['provider_id'];
$base['bmoid'] = preg_replace('/\D/', '', $match['i']);
$base['flag'] = 1;
// dd($match['M']);
foreach ($match['M'] as $magloo_bettype_id => $value) {
switch ($magloo_bettype_id) {
case 1:
// 1x2
$odds = [];
$odds['h3w'] = $value['static'][1] ?? 1;
$odds['d3w'] = $value['static'][2] ?? 1;
$odds['a3w'] = $value['static'][3] ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
$odds['starttime'] = $starttime;
Odds3way::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 2:
// to qalify
$odds = [];
$odds['htq'] = $value['static'][4] ?? 1;
$odds['atq'] = $value['static'][5] ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
OddsQualify::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 10:
// double chance
$odds = [];
$odds['dc1x'] = $value['static'][9] ?? 1;
$odds['dc12'] = $value['static'][10] ?? 1;
$odds['dcx2'] = $value['static'][11] ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
OddsDc::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 10:
// ggng
$odds = [];
$odds['gg'] = $value['static'][74] ?? 1;
$odds['ng'] = $value['static'][76] ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
OddsDc::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 16:
// points
$odds = FilterHandicap::get($value);
$odds['starttime'] = $starttime;
OddsHandicap::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 2000:
// points qt
$odds = FilterHandicap::get($value);
OddsHandicap::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 2025:
// points qt
$odds = FilterHandicapQ1::get($value);
OddsHandicapQ1::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 17:
case 2002:
// totals
$odds = FilterTotals::get($value, $sport_id);
OddsTotal::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 2012:
// totals qt
$odds = FilterTotalsQ1::get($value, $sport_id);
OddsTotalQ1::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
}
}
}
}
}
}
}
@@ -0,0 +1,48 @@
<?php
namespace App\Console\Commands\Grapper\Magloo\Odds;
use App\Utilities\Margin;
class FilterHandicap
{
public static function get($_array)
{
$_points = [];
foreach ($_array as $handicap => $value) {
if (fmod(abs($handicap), 1) == 0.5) {
if ($value[1714] > 1 and $value[1715] > 1) {
$_points[$handicap]['home'] = $value[1714];
$_points[$handicap]['away'] = $value[1715];
}
}
}
$tmp = 10000;
$handicap = false;
foreach ($_points as $key => $value) {
$x = 0;
foreach ($value as $k => $v) {
if ($x == 0) {
$x = $v;
} else {
$x -= $v;
}
}
$x = abs($x);
if ($x < $tmp) {
$handicap = $key;
$tmp = $x;
}
}
$return = [];
if ($handicap) {
$return['home'] = $_points[$handicap]['home'];
$return['away'] = $_points[$handicap]['away'];
$return['margin'] = (float) Margin::calculate($return, 1);
$return['handicap'] = $handicap;
}
return $return;
}
}
@@ -0,0 +1,50 @@
<?php
namespace App\Console\Commands\Grapper\Magloo\Odds;
use App\Utilities\Margin;
class FilterHandicapQ1
{
public static function get($_array)
{
$_points = [];
foreach ($_array as $handicap => $value) {
$t = explode('_', $handicap);
$handicap = $t[1];
if (fmod(abs($handicap), 1) == 0.5) {
if ($value[1714] > 1 and $value[1715] > 1) {
$_points[$handicap]['home'] = $value[1714];
$_points[$handicap]['away'] = $value[1715];
}
}
}
$tmp = 10000;
$handicap = false;
foreach ($_points as $key => $value) {
$x = 0;
foreach ($value as $k => $v) {
if ($x == 0) {
$x = $v;
} else {
$x -= $v;
}
}
$x = abs($x);
if ($x < $tmp) {
$handicap = $key;
$tmp = $x;
}
}
$return = [];
if ($handicap) {
$return['home'] = $_points[$handicap]['home'];
$return['away'] = $_points[$handicap]['away'];
$return['margin'] = (float) Margin::calculate($return, 1);
$return['handicap'] = $handicap;
}
return $return;
}
}
@@ -0,0 +1,51 @@
<?php
namespace App\Console\Commands\Grapper\Magloo\Odds;
use App\Utilities\Margin;
class FilterTotals
{
public static function get($_array, $sport_id)
{
$_totals = [];
foreach ($_array as $total => $value) {
if (fmod(abs($total), 1) == 0.5) {
if ($value[12] > 1 and $value[13] > 1) {
$_totals[$total]['over'] = $value[12];
$_totals[$total]['under'] = $value[13];
}
}
}
if ($sport_id == 1) {
$spread = '2.5';
} else {
$tmp = 10000;
$spread = false;
foreach ($_totals as $key => $value) {
$x = 0;
foreach ($value as $v) {
if ($x == 0) {
$x = $v;
} else {
$x -= $v;
}
}
$x = abs($x);
if ($x < $tmp) {
$spread = $key;
$tmp = $x;
}
}
}
$return = [];
if (isset($_totals[$spread])) {
$return['over'] = $_totals[$spread]['over'];
$return['under'] = $_totals[$spread]['under'];
$return['margin'] = (float) Margin::calculate($return, 1);
$return['total'] = $spread;
}
return $return;
}
}
@@ -0,0 +1,53 @@
<?php
namespace App\Console\Commands\Grapper\Magloo\Odds;
use App\Utilities\Margin;
class FilterTotalsQ1
{
public static function get($_array, $sport_id)
{
$_totals = [];
foreach ($_array as $total => $value) {
if (fmod(abs($total), 1) == 0.5) {
$t = explode('_', $total);
$total = $t[1];
if ($value[12] > 1 and $value[13] > 1) {
$_totals[$total]['over'] = $value[12];
$_totals[$total]['under'] = $value[13];
}
}
}
if ($sport_id == 1) {
$spread = '2.5';
} else {
$tmp = 10000;
$spread = false;
foreach ($_totals as $key => $value) {
$x = 0;
foreach ($value as $k => $v) {
if ($x == 0) {
$x = $v;
} else {
$x -= $v;
}
}
$x = abs($x);
if ($x < $tmp) {
$spread = $key;
$tmp = $x;
}
}
}
$return = [];
if (isset($_totals[$spread])) {
$return['over'] = $_totals[$spread]['over'];
$return['under'] = $_totals[$spread]['under'];
$return['margin'] = (float) Margin::calculate($return, 1);
$return['total'] = $spread;
}
return $return;
}
}