wip grapper
This commit is contained in:
1 parent
417ba0707d
commit
b01d336a05
17 files changed
+9883
-177
No files matched your search
@@ -3,6 +3,7 @@
|
||||
namespace App\Console\Commands\Grapper;
|
||||
|
||||
use App\Console\Commands\Grapper\Sofascore\Events;
|
||||
use App\Console\Commands\Grapper\Sofascore\Special;
|
||||
use App\Console\Commands\Grapper\Sofascore\Tournament;
|
||||
use App\Console\Commands\Nuh;
|
||||
use App\Models\SofaScoreCategorie;
|
||||
@@ -10,13 +11,14 @@ use App\Models\SofaScoreDay;
|
||||
use App\Models\SofaScoreDayTournament;
|
||||
use App\Models\SofaScoreTournament;
|
||||
use App\Utilities\Notice;
|
||||
use DateTime;
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
class Sofascore
|
||||
{
|
||||
public static $auth_header = [];
|
||||
|
||||
public static $base_url = '';
|
||||
|
||||
public static $_days = [];
|
||||
public static $sport = [1];
|
||||
|
||||
public static function switch()
|
||||
@@ -31,6 +33,23 @@ class Sofascore
|
||||
Notice::note('Table SofaScoreDay, SofaScoreDayTournament, SofaScoreTournament, SofaScoreCategorie truncated!', 'b', 1);
|
||||
}
|
||||
|
||||
if (Nuh::$options['t']) {
|
||||
self::$_days[] = Carbon::now()->format('Y-m-d');
|
||||
} else if (Nuh::$options['day']) {
|
||||
if (self::validateDate(Nuh::$options['day'])) {
|
||||
self::$_days[] = Nuh::$options['day'];
|
||||
} else {
|
||||
Notice::note('date not valid ' . Nuh::$options['day'], 'r', 1);
|
||||
}
|
||||
} else if (Nuh::$options['days']) {
|
||||
$to = Carbon::now()->subDays(Nuh::$options['days']);
|
||||
$from = Carbon::now()->subDay();
|
||||
while ($from >= $to) {
|
||||
self::$_days[] = $from->format('Y-m-d');
|
||||
$from->subDay();
|
||||
}
|
||||
}
|
||||
|
||||
if ($debug) {
|
||||
Notice::note(Nuh::$options['sport'] . ' ' . Nuh::$options['name'], 'b');
|
||||
}
|
||||
@@ -42,10 +61,19 @@ class Sofascore
|
||||
case 'EVENTS':
|
||||
Events::load();
|
||||
break;
|
||||
case 'SPECIAL':
|
||||
Special::load();
|
||||
break;
|
||||
|
||||
default:
|
||||
// code...
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public static function validateDate($date, $format = 'Y-m-d')
|
||||
{
|
||||
$d = DateTime::createFromFormat($format, $date);
|
||||
return $d && $d->format($format) == $date;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
/grapped
|
||||
/worldcup-teams
|
||||
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Grapper\Sofascore;
|
||||
|
||||
use App\Utilities\Notice;
|
||||
use App\Console\Commands\Nuh;
|
||||
|
||||
|
||||
class CurlSofa
|
||||
{
|
||||
|
||||
public static $testfile = '/Console/Commands/Grapper/Sofascore/test/';
|
||||
public static function load(string $url)
|
||||
{
|
||||
$debug = Nuh::$options['d'] ?? 0;
|
||||
$save = Nuh::$options['s'] ?? 0;
|
||||
$read = Nuh::$options['r'] ?? 0;
|
||||
|
||||
if ($debug) {
|
||||
Notice::note($url, 'b');
|
||||
}
|
||||
|
||||
if ($read) {
|
||||
if ($debug) {
|
||||
Notice::note('data read localy', 'bb');
|
||||
}
|
||||
$filename = app_path() . self::$testfile . strtolower(str_replace(' ', '_', Nuh::$options['name'])) . '.json';
|
||||
|
||||
$data = file_get_contents($filename);
|
||||
|
||||
return json_decode($data, true);
|
||||
}
|
||||
|
||||
$headers = [
|
||||
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:139.0) Gecko/20100101 Firefox/139.0',
|
||||
'Accept: */*',
|
||||
'Accept-Language: de,en-US;q=0.7,en;q=0.3',
|
||||
'Accept-Encoding: gzip, deflate, br, zstd',
|
||||
'Referer: https://www.sofascore.com/',
|
||||
'X-Requested-With: 5c6b10',
|
||||
'DNT: 1',
|
||||
'Sec-GPC: 1',
|
||||
'Connection: keep-alive',
|
||||
'Sec-Fetch-Dest: empty',
|
||||
'Sec-Fetch-Mode: cors',
|
||||
'Sec-Fetch-Site: same-origin',
|
||||
'Priority: u=4',
|
||||
'Pragma: no-cache',
|
||||
'Cache-Control: no-cache',
|
||||
'TE: trailers'
|
||||
];
|
||||
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
|
||||
$data = curl_exec($ch);
|
||||
|
||||
$data = gzdecode($data);
|
||||
|
||||
if ($save) {
|
||||
$filename = app_path() . self::$testfile . strtolower(str_replace(' ', '_', Nuh::$options['name'])) . '.json';
|
||||
|
||||
file_put_contents($filename, $data);
|
||||
|
||||
Notice::note('data saved localy', 'bp');
|
||||
}
|
||||
|
||||
$data = json_decode($data, true);
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
@@ -2,108 +2,123 @@
|
||||
|
||||
namespace App\Console\Commands\Grapper\Sofascore;
|
||||
|
||||
use App\Console\Commands\Curl;
|
||||
use App\Console\Commands\Grapper\Sofascore;
|
||||
use App\Console\Commands\Nuh;
|
||||
use App\Models\Country;
|
||||
use App\Models\SofaScoreCategorie;
|
||||
use App\Models\SofaScoreDay;
|
||||
use App\Models\SofaScoreTournament;
|
||||
use App\Models\Sport;
|
||||
use App\Models\SofaScoreDayTournament;
|
||||
use App\Utilities\Notice;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\File;
|
||||
|
||||
class Events
|
||||
{
|
||||
public static $auth_header = [];
|
||||
public static $max_days = 30;
|
||||
public static Carbon $days_back;
|
||||
|
||||
public static $base_url = '';
|
||||
|
||||
public static $sport = [1];
|
||||
public static $storage_path = '/Console/Commands/Grapper/Sofascore/grapped/';
|
||||
|
||||
public static function load()
|
||||
{
|
||||
self::$days_back = Carbon::now()->subDays(self::$max_days);
|
||||
|
||||
$debug = Nuh::$options['d'] ?? 0;
|
||||
|
||||
$sport_id = Nuh::$options['sport_id'];
|
||||
|
||||
$sport = Sport::where('id', $sport_id)->first();
|
||||
foreach (Sofascore::$_days as $day) {
|
||||
|
||||
$dates = Carbon::now();
|
||||
$ss_days = SofaScoreDayTournament::with('tournament')
|
||||
->whereHas('tournament', function ($query) use ($sport_id) {
|
||||
$query->where('sport_id', $sport_id);
|
||||
})
|
||||
->where('day', $day)->get();
|
||||
|
||||
// to grap event id
|
||||
// https://www.sofascore.com/api/v1/unique-tournament/2480/scheduled-events/2022-05-19
|
||||
// https://www.sofascore.com/api/v1/unique-tournament/2480/scheduled-events/2026-05-31
|
||||
foreach ($ss_days as $ss_day) {
|
||||
|
||||
// per event
|
||||
// https://www.sofascore.com/api/v1/event/16198485/statistics
|
||||
// https://www.sofascore.com/api/v1/event/16198485/odds/1/all
|
||||
$years_back = 7;
|
||||
$sofa_score_categorie_id = $ss_day->tournament->sofa_score_categorie_id;
|
||||
|
||||
$dates = Carbon::now()->subYears($years_back);
|
||||
$url = Nuh::$options['base_url'] . "api/v1/category/$sofa_score_categorie_id/scheduled-events/$day";
|
||||
|
||||
SofaScoreTournament::truncate();
|
||||
SofaScoreCategorie::truncate();
|
||||
|
||||
foreach ($sportmap as $sport) {
|
||||
|
||||
while ($dates <= Carbon::now()) {
|
||||
|
||||
$day = $dates->format('Y-m-d');
|
||||
|
||||
SofaScoreDay::updateOrCreate(['day' => $day], [$sport->ss_slug => 1]);
|
||||
|
||||
$page = 1;
|
||||
|
||||
while ($page) {
|
||||
$url = Nuh::$options['base_url'] . "api/v1/sport/$sport->ss_slug/scheduled-tournaments/$day/page/$page";
|
||||
|
||||
$data = Curl::load($url);
|
||||
|
||||
if ($data['hasNextPage']) {
|
||||
$page++;
|
||||
} else {
|
||||
$page = false;
|
||||
}
|
||||
|
||||
foreach ($data['scheduled'] as $row) {
|
||||
|
||||
if (isset($row['tournament']['uniqueTournament'])) {
|
||||
$tournament = $row['tournament']['uniqueTournament'];
|
||||
} else {
|
||||
$tournament = $row['tournament'];
|
||||
}
|
||||
|
||||
$category = $tournament['category'];
|
||||
|
||||
/**
|
||||
* CATEGORY
|
||||
*/
|
||||
$country_id = Country::where('name', $category['name'])->value('id');
|
||||
$call = SofaScoreCategorie::updateOrCreate([
|
||||
'id' => (int) $category['id'],
|
||||
'country_id' => (int) $country_id,
|
||||
'slug' => $category['slug'],
|
||||
], [
|
||||
'name' => $category['name'],
|
||||
]);
|
||||
|
||||
/**
|
||||
* TOURNAMENT
|
||||
*/
|
||||
$sofa_score_categorie_id = $call->id;
|
||||
SofaScoreTournament::updateOrCreate([
|
||||
'id' => (int) $tournament['id'],
|
||||
'day' => $day,
|
||||
], [
|
||||
'sport_id' => (int) $sport->id,
|
||||
'sofa_score_categorie_id' => (int) $sofa_score_categorie_id,
|
||||
'name' => $tournament['name'],
|
||||
'slug' => $tournament['slug'],
|
||||
]);
|
||||
}
|
||||
$rand = rand(500000, 1000000);
|
||||
if ($debug) {
|
||||
Notice::note("Sleep $rand msec", 'y');
|
||||
}
|
||||
usleep($rand);
|
||||
|
||||
Notice::note('All day grapped', 'g', 1);
|
||||
$data = CurlSofa::load($url);
|
||||
|
||||
Nuh::$options['s'] = 0;
|
||||
|
||||
Nuh::$options['r'] = 0;
|
||||
|
||||
foreach ($data['events'] as $event) {
|
||||
|
||||
if ($event['season']['name'] != "World Cup 2026") {
|
||||
Notice::note("All World Cup 2026 for " . $ss_day->day . ' grapped', 'bb', 1);
|
||||
}
|
||||
|
||||
$folder = app_path() . self::$storage_path . $ss_day->day . '/' . $event['tournament']['slug'] . '/' . $event['slug'];
|
||||
|
||||
File::makeDirectory($folder, 0775, true, true);
|
||||
|
||||
/*********************************
|
||||
* EVENT event
|
||||
*********************************/
|
||||
|
||||
File::put($folder . '/event.json', json_encode($event));
|
||||
|
||||
|
||||
/*********************************
|
||||
* EVENT statistics
|
||||
*********************************/
|
||||
$event_id = $event['id'];
|
||||
|
||||
$url = Nuh::$options['base_url'] . "api/v1/event/$event_id/statistics";
|
||||
|
||||
$rand = rand(500000, 1000000);
|
||||
if ($debug) {
|
||||
Notice::note("Sleep $rand msec", 'y');
|
||||
}
|
||||
usleep($rand);
|
||||
|
||||
$data = CurlSofa::load($url);
|
||||
|
||||
File::put($folder . '/statistics.json', json_encode($data));
|
||||
|
||||
/*********************************
|
||||
* EVENT lineups
|
||||
*********************************/
|
||||
$event_id = $event['id'];
|
||||
|
||||
$url = Nuh::$options['base_url'] . "api/v1/event/$event_id/lineups";
|
||||
|
||||
$rand = rand(500000, 1000000);
|
||||
if ($debug) {
|
||||
Notice::note("Sleep $rand msec", 'y');
|
||||
}
|
||||
usleep($rand);
|
||||
|
||||
$data = CurlSofa::load($url);
|
||||
|
||||
File::put($folder . '/lineups.json', json_encode($data));
|
||||
|
||||
|
||||
/*********************************
|
||||
* EVENT lineups
|
||||
*********************************/
|
||||
$event_id = $event['id'];
|
||||
|
||||
$url = Nuh::$options['base_url'] . "api/v1/event/$event_id/odds/1/all";
|
||||
|
||||
$rand = rand(500000, 1000000);
|
||||
if ($debug) {
|
||||
Notice::note("Sleep $rand msec", 'y');
|
||||
}
|
||||
usleep($rand);
|
||||
|
||||
$data = CurlSofa::load($url);
|
||||
|
||||
File::put($folder . '/odds.json', json_encode($data));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Grapper\Sofascore;
|
||||
|
||||
use App\Console\Commands\Grapper\Sofascore;
|
||||
use App\Console\Commands\Nuh;
|
||||
use App\Models\SofaScoreDayTournament;
|
||||
use App\Utilities\Notice;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\File;
|
||||
|
||||
ini_set('magic_quotes_runtime', false);
|
||||
|
||||
class SPECIAL
|
||||
{
|
||||
|
||||
public static $max_days = 30;
|
||||
public static Carbon $days_back;
|
||||
|
||||
public static $storage_path = '/Console/Commands/Grapper/Sofascore/worldcup-teams/';
|
||||
|
||||
public static function load()
|
||||
{
|
||||
$debug = Nuh::$options['d'] ?? 0;
|
||||
|
||||
$url = Nuh::$options['base_url'] . "/api/v1/world-cup/meet-the-team";
|
||||
|
||||
$rand = rand(500000, 1000000);
|
||||
if ($debug) {
|
||||
Notice::note("Sleep $rand msec", 'y');
|
||||
}
|
||||
usleep($rand);
|
||||
|
||||
$data = CurlSofa::load($url);
|
||||
|
||||
$teams = [];
|
||||
|
||||
foreach ($data['groups'] as $groups) {
|
||||
foreach ($groups['teams'] as $team) {
|
||||
$teams[] = [
|
||||
'id' => $team['team']['id'],
|
||||
'slug' => $team['team']['slug'],
|
||||
'name' => $team['team']['name']
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($teams as $team) {
|
||||
|
||||
Nuh::$options['s'] = 0;
|
||||
|
||||
Nuh::$options['r'] = 0;
|
||||
|
||||
$url = 'https://www.sofascore.com/api/v1/team/' . $team['id'] . '/events/last/0';
|
||||
|
||||
$data = CurlSofa::load($url);
|
||||
|
||||
foreach ($data['events'] as $event) {
|
||||
// "id" => 12749524
|
||||
// "slug" => "mexico-usa"
|
||||
// "startTimestamp" => 1729045800
|
||||
|
||||
$event_id = $event['id'];
|
||||
|
||||
/*********************************
|
||||
* Folder
|
||||
*********************************/
|
||||
|
||||
$starttime = Carbon::createFromTimestamp($event['startTimestamp'])->format('Y-m-d');
|
||||
|
||||
$folder = app_path() . self::$storage_path . $starttime . '/' . $event['tournament']['slug'] . '/' . $event['slug'];
|
||||
|
||||
File::makeDirectory($folder, 0775, true, true);
|
||||
|
||||
/*********************************
|
||||
* EVENT event basic
|
||||
*********************************/
|
||||
|
||||
File::put($folder . '/event.json', json_encode($event));
|
||||
|
||||
/*********************************
|
||||
* EVENT statistics
|
||||
*********************************/
|
||||
|
||||
$url = Nuh::$options['base_url'] . "api/v1/event/$event_id/statistics";
|
||||
|
||||
$rand = rand(500000, 1000000);
|
||||
if ($debug) {
|
||||
Notice::note("Sleep $rand msec", 'y');
|
||||
}
|
||||
usleep($rand);
|
||||
|
||||
$data = CurlSofa::load($url);
|
||||
|
||||
File::put($folder . '/statistics.json', json_encode($data));
|
||||
|
||||
/*********************************
|
||||
* EVENT lineups
|
||||
*********************************/
|
||||
|
||||
$url = Nuh::$options['base_url'] . "api/v1/event/$event_id/lineups";
|
||||
|
||||
$rand = rand(500000, 1000000);
|
||||
if ($debug) {
|
||||
Notice::note("Sleep $rand msec", 'y');
|
||||
}
|
||||
usleep($rand);
|
||||
|
||||
$data = CurlSofa::load($url);
|
||||
|
||||
File::put($folder . '/lineups.json', json_encode($data));
|
||||
|
||||
/*********************************
|
||||
* EVENT lineups
|
||||
*********************************/
|
||||
$event_id = $event['id'];
|
||||
|
||||
$url = Nuh::$options['base_url'] . "api/v1/event/$event_id/odds/1/all";
|
||||
|
||||
$rand = rand(500000, 1000000);
|
||||
if ($debug) {
|
||||
Notice::note("Sleep $rand msec", 'y');
|
||||
}
|
||||
usleep($rand);
|
||||
|
||||
$data = CurlSofa::load($url);
|
||||
|
||||
File::put($folder . '/odds.json', json_encode($data));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Console\Commands\Grapper\Sofascore;
|
||||
|
||||
use App\Console\Commands\Curl;
|
||||
use App\Console\Commands\Grapper\Sofascore;
|
||||
use App\Console\Commands\Nuh;
|
||||
use App\Models\Country;
|
||||
use App\Models\SofaScoreCategorie;
|
||||
@@ -16,8 +17,12 @@ use Illuminate\Support\Facades\Log;
|
||||
|
||||
class Tournament
|
||||
{
|
||||
public static $max_days = 30;
|
||||
public static Carbon $days_back;
|
||||
public static function load()
|
||||
{
|
||||
self::$days_back = Carbon::now()->subDays(self::$max_days);
|
||||
|
||||
$debug = Nuh::$options['d'] ?? 0;
|
||||
|
||||
$force = Nuh::$options['f'] ?? 0;
|
||||
@@ -26,16 +31,10 @@ class Tournament
|
||||
|
||||
$sport = Sport::where('id', $sport_id)->first();
|
||||
|
||||
$_days = self::days($sport);
|
||||
|
||||
dd($_days);
|
||||
|
||||
while ($grapping_date >= $days_back) {
|
||||
foreach (Sofascore::$_days as $day) {
|
||||
|
||||
$tournaments_counter = 0;
|
||||
|
||||
$day = $grapping_date->format('Y-m-d');
|
||||
|
||||
/**
|
||||
* grap only one time/sport check
|
||||
*/
|
||||
@@ -56,7 +55,7 @@ class Tournament
|
||||
}
|
||||
usleep($rand);
|
||||
|
||||
$data = Curl::load($url);
|
||||
$data = CurlSofa::load($url);
|
||||
|
||||
if ($data['hasNextPage']) {
|
||||
$page++;
|
||||
@@ -64,6 +63,8 @@ class Tournament
|
||||
$page = false;
|
||||
}
|
||||
|
||||
$page = false;
|
||||
|
||||
foreach ($data['scheduled'] as $row) {
|
||||
|
||||
if (isset($row['tournament']['uniqueTournament'])) {
|
||||
@@ -119,6 +120,8 @@ class Tournament
|
||||
$country_id = Country::where('name', trim(str_replace($find, $replace, $category['name'])))->value('id');
|
||||
}
|
||||
|
||||
// dd($category, $country_id);
|
||||
|
||||
if (! $country_id) {
|
||||
// platzhalter fix later sofa_score_categories => txodds countries
|
||||
// CATEGORY find <-> replace
|
||||
@@ -153,6 +156,7 @@ class Tournament
|
||||
/**
|
||||
* DAY TOURNAMENT
|
||||
*/
|
||||
|
||||
SofaScoreDayTournament::updateOrCreate([
|
||||
'tournament_id' => (int) $tournament['id'],
|
||||
'day' => $day,
|
||||
@@ -163,34 +167,11 @@ class Tournament
|
||||
|
||||
SofaScoreDay::updateOrCreate(['day' => $day], [$sport->ss_slug => 1]);
|
||||
}
|
||||
|
||||
if (Nuh::$options['test']) {
|
||||
Notice::note('Test exit after one day', 'b', 1);
|
||||
}
|
||||
} else {
|
||||
if ($debug) {
|
||||
Notice::note('Having Sport: ' . Nuh::$options['sport'] . ' Day: ' . $day, 'b');
|
||||
Notice::note(Nuh::$options['sport'] . ' ' . $day, 'b');
|
||||
}
|
||||
}
|
||||
$grapping_date->subDay();
|
||||
}
|
||||
}
|
||||
|
||||
public static function days(Sport $sport)
|
||||
{
|
||||
$d = Carbon::now()->subDay();
|
||||
Notice::note($d->format('d. m. Y'), 'b');
|
||||
|
||||
$loop = true;
|
||||
while ($loop) {
|
||||
if (!SofaScoreDay::where('day', $d)->first()) {
|
||||
// SofaScoreDay::insert(['day' => $d]);
|
||||
$d->subDay();
|
||||
} else {
|
||||
$loop = false;
|
||||
}
|
||||
Notice::note($d->format('d. m. Y'), 'g');
|
||||
}
|
||||
return SofaScoreDay::where($sport->ss_slug, 0)->get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"events":[{"eventState":{},"tournament":{"name":"FIFA World Cup, Group B","slug":"world-championship-gr-b","category":{"name":"World","slug":"world","sport":{"name":"Football","slug":"football","id":1},"priority":20,"country":{},"id":1468,"flag":"international","fieldTranslations":{"nameTranslation":{"ar":"\u0627\u0644\u0639\u0627\u0644\u0645","hi":"\u0935\u093f\u0936\u094d\u0935","bn":"\u09ac\u09bf\u09b6\u09cd\u09ac","ru":"\u041c\u0438\u0440"},"shortNameTranslation":{}}},"uniqueTournament":{"name":"FIFA World Cup","slug":"world-championship","primaryColorHex":"#d20a11","secondaryColorHex":"#e8bb57","category":{"name":"World","slug":"world","sport":{"name":"Football","slug":"football","id":1},"priority":20,"country":{},"id":1468,"flag":"international","fieldTranslations":{"nameTranslation":{"ar":"\u0627\u0644\u0639\u0627\u0644\u0645","hi":"\u0935\u093f\u0936\u094d\u0935","bn":"\u09ac\u09bf\u09b6\u09cd\u09ac","ru":"\u041c\u0438\u0440"},"shortNameTranslation":{}}},"userCount":1344736,"hasPerformanceGraphFeature":false,"country":{},"id":16,"hasEventPlayerStatistics":true,"displayInverseHomeAwayTeams":false,"fieldTranslations":{"nameTranslation":{"pt-pt":"Mundial","ar":"\u0643\u0623\u0633 \u0627\u0644\u0639\u0627\u0644\u0645","bn":"\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09b2\u09cd\u09a1 \u099a\u09cd\u09af\u09be\u09ae\u09cd\u09aa\u09bf\u09af\u09bc\u09a8\u09b6\u09bf\u09aa","hi":"\u0935\u0930\u094d\u0932\u094d\u0921 \u091a\u0948\u0902\u092a\u093f\u092f\u0928\u0936\u093f\u092a","hr":"FIFA Svjetsko prvenstvo","az":"F\u0130FA D\u00fcnya Kuboku","nl":"Wereldkampioenschap","fr":"Coupe du monde","de":"Weltmeisterschaft","el":"\u03a0\u03b1\u03b3\u03ba\u03cc\u03c3\u03bc\u03b9\u03bf \u039a\u03cd\u03c0\u03b5\u03bb\u03bb\u03bf","hu":"FIFA Vil\u00e1gbajnoks\u00e1g","id":"Piala Dunia FIFA","it":"Coppa del Mondo FIFA","ja":"FIFA\u30ef\u30fc\u30eb\u30c9\u30ab\u30c3\u30d7","ko":"FIFA \uc6d4\ub4dc\ucef5","no":"Verdensmesterskapet","pl":"Mistrzostwa \u015awiata","pt":"Copa do Mundo FIFA","ro":"Campionatul Mondial","es":"Copa Mundial","es-la":"Copa Mundial","sv":"V\u00e4rldsm\u00e4sterskapet","th":"\u0e1f\u0e38\u0e15\u0e1a\u0e2d\u0e25\u0e42\u0e25\u0e01","tr":"FIFA D\u00fcnya Kupas\u0131","vi":"Gi\u1ea3i V\u00f4 \u0110\u1ecbch Th\u1ebf Gi\u1edbi","ru":"\u0427\u0435\u043c\u043f\u0438\u043e\u043d\u0430\u0442 \u043c\u0438\u0440\u0430","sr":"\u0421\u0432\u0435\u0442\u0441\u043a\u043e \u043f\u0440\u0432\u0435\u043d\u0441\u0442\u0432\u043e"},"shortNameTranslation":{}}},"priority":812,"isGroup":true,"groupName":"Group B","groupSign":"B","isLive":false,"id":3955,"fieldTranslations":{"nameTranslation":{"ar":"\u0628\u0637\u0648\u0644\u0629 \u0627\u0644\u0639\u0627\u0644\u0645\u060c \u0627\u0644\u0645\u062c\u0645\u0648\u0639\u0629 B","bn":"\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09b2\u09cd\u09a1 \u099a\u09cd\u09af\u09be\u09ae\u09cd\u09aa\u09bf\u09af\u09bc\u09a8\u09b6\u09bf\u09aa, \u0997\u09cd\u09b0. \u09ac\u09bf","hr":"FIFA Svjetsko prvenstvo, Grupa B","az":"F\u0130FA D\u00fcnya Kuboku, Qrup B","nl":"Wereldkampioenschap, Groep B","fr":"Coupe du monde, Groupe B","de":"Weltmeisterschaft, Gruppe B","el":"\u03a0\u03b1\u03b3\u03ba\u03cc\u03c3\u03bc\u03b9\u03bf \u039a\u03cd\u03c0\u03b5\u03bb\u03bb\u03bf, \u038c\u03bc\u03b9\u03bb\u03bf\u03c2 B","hu":"Vil\u00e1gbajnoks\u00e1g, Csoport B","id":"Piala Dunia FIFA, Grup B","it":"Coppa del Mondo, Gruppo B","ja":"FIFA\u30ef\u30fc\u30eb\u30c9\u30ab\u30c3\u30d7, \u30b0\u30eb\u30fc\u30d7B","ko":"FIFA \uc6d4\ub4dc\ucef5, \uadf8\ub8f9 B","no":"Verdensmesterskapet, Gruppe B","pl":"Mistrzostwa \u015awiata, Grupa B","pt":"Copa do Mundo FIFA, Grupo B","ro":"Campionatul Mondial, Grupa B","es":"Copa Mundial, Grupo B","es-la":"Copa Mundial, Grupo B","pt-pt":"Mundial, Grupo B","ru":"\u0427\u0435\u043c\u043f\u0438\u043e\u043d\u0430\u0442 \u043c\u0438\u0440\u0430, \u0413\u0440\u0443\u043f\u043f\u0430 B","hi":"\u0935\u0930\u094d\u0932\u094d\u0921 \u091a\u0948\u0902\u092a\u093f\u092f\u0928\u0936\u093f\u092a, \u0917\u094d\u0930\u0947\u0921 \u092c\u0940","sv":"V\u00e4rldsm\u00e4sterskapet, Grupp B","th":"\u0e1f\u0e38\u0e15\u0e1a\u0e2d\u0e25\u0e42\u0e25\u0e01, \u0e01\u0e25\u0e38\u0e48\u0e21 B","tr":"FIFA D\u00fcnya Kupas\u0131, Grup B","vi":"Gi\u1ea3i V\u00f4 \u0110\u1ecbch Th\u1ebf Gi\u1edbi, B\u1ea3ng B","sr":"\u0421\u0432\u0435\u0442\u0441\u043a\u043e \u043f\u0440\u0432\u0435\u043d\u0441\u0442\u0432\u043e, \u0413\u0440\u0443\u043f\u0430 \u0411"},"shortNameTranslation":{}}},"season":{"name":"World Cup 2026","year":"2026","editor":false,"seasonCoverageInfo":{},"id":58210},"roundInfo":{"round":1},"customId":"EObscVb","status":{"code":100,"description":"Ended","type":"finished"},"winnerCode":3,"homeTeam":{"name":"Canada","slug":"canada","shortName":"Canada","gender":"M","sport":{"name":"Football","slug":"football","id":1},"userCount":131198,"nameCode":"CAN","ranking":30,"disabled":false,"national":true,"type":0,"country":{"alpha2":"CA","alpha3":"CAN","name":"Canada","slug":"canada"},"id":4752,"subTeams":[],"teamColors":{"primary"Line truncated
|
||||
File renamed without changes.
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
{"scheduled":[{"tournament":{"name":"FIFA World Cup, Group B","slug":"world-championship-gr-b","category":{"name":"World","slug":"world","sport":{"name":"Football","slug":"football","id":1},"priority":20,"id":1468,"flag":"international","fieldTranslations":{"nameTranslation":{"ar":"\u0627\u0644\u0639\u0627\u0644\u0645","bn":"\u09ac\u09bf\u09b6\u09cd\u09ac","hi":"\u0935\u093f\u0936\u094d\u0935","ru":"\u041c\u0438\u0440"},"shortNameTranslation":{}}},"uniqueTournament":{"name":"FIFA World Cup","slug":"world-championship","category":{"name":"World","slug":"world","sport":{"name":"Football","slug":"football","id":1},"priority":20,"id":1468,"flag":"international","fieldTranslations":{"nameTranslation":{"ar":"\u0627\u0644\u0639\u0627\u0644\u0645","bn":"\u09ac\u09bf\u09b6\u09cd\u09ac","hi":"\u0935\u093f\u0936\u094d\u0935","ru":"\u041c\u0438\u0440"},"shortNameTranslation":{}}},"userCount":1344736,"hasPerformanceGraphFeature":false,"id":16,"hasEventPlayerStatistics":true,"displayInverseHomeAwayTeams":false,"fieldTranslations":{"nameTranslation":{"ar":"\u0643\u0623\u0633 \u0627\u0644\u0639\u0627\u0644\u0645","az":"F\u0130FA D\u00fcnya Kuboku","bn":"\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09b2\u09cd\u09a1 \u099a\u09cd\u09af\u09be\u09ae\u09cd\u09aa\u09bf\u09af\u09bc\u09a8\u09b6\u09bf\u09aa","de":"Weltmeisterschaft","el":"\u03a0\u03b1\u03b3\u03ba\u03cc\u03c3\u03bc\u03b9\u03bf \u039a\u03cd\u03c0\u03b5\u03bb\u03bb\u03bf","es":"Copa Mundial","es-la":"Copa Mundial","fr":"Coupe du monde","hi":"\u0935\u0930\u094d\u0932\u094d\u0921 \u091a\u0948\u0902\u092a\u093f\u092f\u0928\u0936\u093f\u092a","hr":"FIFA Svjetsko prvenstvo","hu":"FIFA Vil\u00e1gbajnoks\u00e1g","id":"Piala Dunia FIFA","it":"Coppa del Mondo FIFA","ja":"FIFA\u30ef\u30fc\u30eb\u30c9\u30ab\u30c3\u30d7","ko":"FIFA \uc6d4\ub4dc\ucef5","nl":"Wereldkampioenschap","no":"Verdensmesterskapet","pl":"Mistrzostwa \u015awiata","pt":"Copa do Mundo FIFA","pt-pt":"Mundial","ro":"Campionatul Mondial","ru":"\u0427\u0435\u043c\u043f\u0438\u043e\u043d\u0430\u0442 \u043c\u0438\u0440\u0430","sr":"\u0421\u0432\u0435\u0442\u0441\u043a\u043e \u043f\u0440\u0432\u0435\u043d\u0441\u0442\u0432\u043e","sv":"V\u00e4rldsm\u00e4sterskapet","th":"\u0e1f\u0e38\u0e15\u0e1a\u0e2d\u0e25\u0e42\u0e25\u0e01","tr":"FIFA D\u00fcnya Kupas\u0131","vi":"Gi\u1ea3i V\u00f4 \u0110\u1ecbch Th\u1ebf Gi\u1edbi"},"shortNameTranslation":{}}},"priority":812,"groupSign":"B","id":3955,"fieldTranslations":{"nameTranslation":{"ar":"\u0628\u0637\u0648\u0644\u0629 \u0627\u0644\u0639\u0627\u0644\u0645\u060c \u0627\u0644\u0645\u062c\u0645\u0648\u0639\u0629 B","bn":"\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09b2\u09cd\u09a1 \u099a\u09cd\u09af\u09be\u09ae\u09cd\u09aa\u09bf\u09af\u09bc\u09a8\u09b6\u09bf\u09aa, \u0997\u09cd\u09b0. \u09ac\u09bf","hr":"FIFA Svjetsko prvenstvo, Grupa B","az":"F\u0130FA D\u00fcnya Kuboku, Qrup B","nl":"Wereldkampioenschap, Groep B","fr":"Coupe du monde, Groupe B","de":"Weltmeisterschaft, Gruppe B","el":"\u03a0\u03b1\u03b3\u03ba\u03cc\u03c3\u03bc\u03b9\u03bf \u039a\u03cd\u03c0\u03b5\u03bb\u03bb\u03bf, \u038c\u03bc\u03b9\u03bb\u03bf\u03c2 B","hu":"Vil\u00e1gbajnoks\u00e1g, Csoport B","id":"Piala Dunia FIFA, Grup B","it":"Coppa del Mondo, Gruppo B","ja":"FIFA\u30ef\u30fc\u30eb\u30c9\u30ab\u30c3\u30d7, \u30b0\u30eb\u30fc\u30d7B","ko":"FIFA \uc6d4\ub4dc\ucef5, \uadf8\ub8f9 B","no":"Verdensmesterskapet, Gruppe B","pl":"Mistrzostwa \u015awiata, Grupa B","pt":"Copa do Mundo FIFA, Grupo B","ro":"Campionatul Mondial, Grupa B","es":"Copa Mundial, Grupo B","es-la":"Copa Mundial, Grupo B","pt-pt":"Mundial, Grupo B","ru":"\u0427\u0435\u043c\u043f\u0438\u043e\u043d\u0430\u0442 \u043c\u0438\u0440\u0430, \u0413\u0440\u0443\u043f\u043f\u0430 B","hi":"\u0935\u0930\u094d\u0932\u094d\u0921 \u091a\u0948\u0902\u092a\u093f\u092f\u0928\u0936\u093f\u092a, \u0917\u094d\u0930\u0947\u0921 \u092c\u0940","sv":"V\u00e4rldsm\u00e4sterskapet, Grupp B","th":"\u0e1f\u0e38\u0e15\u0e1a\u0e2d\u0e25\u0e42\u0e25\u0e01, \u0e01\u0e25\u0e38\u0e48\u0e21 B","tr":"FIFA D\u00fcnya Kupas\u0131, Grup B","vi":"Gi\u1ea3i V\u00f4 \u0110\u1ecbch Th\u1ebf Gi\u1edbi, B\u1ea3ng B","sr":"\u0421\u0432\u0435\u0442\u0441\u043a\u043e \u043f\u0440\u0432\u0435\u043d\u0441\u0442\u0432\u043e, \u0413\u0440\u0443\u043f\u0430 \u0411"},"shortNameTranslation":{}}},"timezoneEventCount":{"-43200":1,"-39600":1,"-36000":1,"-34200":1,"-32400":1,"-28800":1,"-25200":1,"-21600":1,"-18000":1,"-16200":1,"-14400":1,"-12600":1,"-10800":1,"-9000":1,"-7200":1,"-3600":1,"0":1,"3600":1,"7200":1,"10800":1,"12600":1,"14400":1,"16200":1,"18000":1,"19800":1,"20700":1,"21600":1,"23400":1,"25200":1,"28800":1,"30600":1,"31500":1,"32400":1,"34200":1,"36000":1,"37800":1,"39600":1,"43200":1,"45900":1,"46800":1,"49500":1,"50400":1}},{"tournament":{"name":"FIFA World Cup, Group C","slug":"world-championship-gr-c","category":{"name":"World","slug":"world","sport":{"name":"Football","slug":"football","id":1},"priority":20,"id":1468,"flag":"international","fieldTranslations":{"nameTranslation":{"ar":"\u062Line truncated
|
||||
Reference in new issue
Block a user