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
+513 -356

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;
}
}
}
@@ -0,0 +1,53 @@
<?php
namespace App\Console\Commands\DbMapper\Tasks\Helper;
class ExplodeString
{
public static function grap($str)
{
$tmp = str_replace(',', ' ', $str);
// $tmp = str_replace('-', ' ', $tmp);
$tmp = str_replace('/', ' ', $tmp);
$tmp = preg_replace('"\([^\)]*\)"', '', $tmp);
$tmp = preg_replace('/[^a-zA-Z0-9 ] /', '', $tmp);
$tmp = str_replace(' ', ' ', $tmp);
$elements = explode(' ', $tmp);
$_return = [];
foreach ($elements as $value) {
if (\strlen($value) > 3) {
$_return[] = $value;
}
}
usort($_return, function ($a, $b) {
return strlen($b) <=> strlen($a);
});
$remove = [
'fc',
'city',
'new',
'real',
'united',
'dinamo',
'town',
'club',
'union',
'sport',
'sports',
'basket',
'hapoel',
'maccabi',
'east'];
return array_diff($_return, $remove);
}
}
@@ -0,0 +1,44 @@
<?php
namespace App\Console\Commands\DbMapper\Tasks\Helper;
use App\Models\CountriesItalian;
use App\Models\Country;
class FindCountry
{
public static function run(&$event)
{
if ($event['provider_id'] == 10) {
// GOLDBET
$country = CountriesItalian::where('it', $event['country'])->value('en');
$event['txodds_country_id'] = Country::where('name', $country)->value('id');
} else {
$country = self::fix_country($event['country']);
$event['txodds_country_id'] = Country::where('name', $country)->value('id');
}
}
public static function fix_country($country)
{
switch ($country) {
case 'Internazionale':
case 'International Club':
case 'Internazionali Di Club':
case 'FIBA Intercontinental Cup':
return 'International';
case 'Euro Cup':
case 'Euro Cup Women':
case 'Euroleague':
case 'Euroleague Women':
return 'Europe';
case 'WNBA':
return 'USA';
default:
return $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);
}
}