new garpper tasks

This commit is contained in:
salam committed 2026-07-01 08:08:54 +02:00
1 parent c6255be910
commit be2a16a812
13 files changed
+408 -52

No files matched your search

+15 -4
View File
@@ -2,8 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>sofascore grapper</key> <key>Sofascore Grapper</key>
<string>COM.NUH.GRAPPER</string> <string>com.sofascore.grapper</string>
<key>ProgramArguments</key> <key>ProgramArguments</key>
<array> <array>
<string>/Users/hermanntelser/Sites/nuhodds_fi4/setup.sh 13</string> <string>/Users/hermanntelser/Sites/nuhodds_fi4/setup.sh 13</string>
@@ -11,9 +11,20 @@
<key>StartCalendarInterval</key> <key>StartCalendarInterval</key>
<dict> <dict>
<key>Hour</key> <key>Hour</key>
<integer>02</integer> <integer>2</integer>
<key>Minute</key> <key>Minute</key>
<integer>15</integer> <integer>30</integer>
</dict> </dict>
</dict> </dict>
</plist> </plist>
1) Sicher an diesem Ort:
Für einen bestimmten Benutzer: ~/Library/LaunchAgents/
Für alle Benutzer (Systemweit): /Library/LaunchAgents/
Für das gesamte Betriebssystem: /Library/LaunchDaemons/
2) Die Datei: Speichern Sie den Code oben in einer
.plist-Datei (z.B. com.beispiel.skript.plist).
3) Aktivieren: Laden Sie den Prozess im Terminal mit dem Befehl:
launchctl load ~/Library/LaunchAgents/com.beispiel.skript.plist
@@ -172,8 +172,9 @@ class SupervisorsTable
->allowOptionsHtml() ->allowOptionsHtml()
->native(false) ->native(false)
->options([ ->options([
'0' => '<span class="text-amber-500">Cronjob</span>', '0' => '<span class="text-amber-600">Cronjob</span>',
'1' => '<span class="text-blue-500">Supervisor</span>', '1' => '<span class="text-blue-600">Supervisor</span>',
'2' => '<span class="text-green-600">LaunchAgents</span>',
]), ]),
ToggleColumn::make('is_active')->label('Active')->tooltip(('On/Off'))->onColor('success')->offColor('danger'), ToggleColumn::make('is_active')->label('Active')->tooltip(('On/Off'))->onColor('success')->offColor('danger'),
TextColumn::make('runtime')->badge()->prefix('Runtime: '), TextColumn::make('runtime')->badge()->prefix('Runtime: '),
@@ -190,6 +191,7 @@ class SupervisorsTable
TernaryFilter::make('is_active'), TernaryFilter::make('is_active'),
], layout: FiltersLayout::AboveContent) ], layout: FiltersLayout::AboveContent)
->deferFilters(false) ->deferFilters(false)
->persistFiltersInSession()
->recordActions([ ->recordActions([
EditAction::make()->hiddenLabel(), EditAction::make()->hiddenLabel(),
DeleteAction::make()->hiddenLabel(), DeleteAction::make()->hiddenLabel(),
@@ -0,0 +1,11 @@
<?php
namespace App\Filament\Clusters\StaticData\Resources\SofaScoreTasks\Pages;
use App\Filament\Clusters\StaticData\Resources\SofaScoreTasks\SofaScoreTaskResource;
use Filament\Resources\Pages\CreateRecord;
class CreateSofaScoreTask extends CreateRecord
{
protected static string $resource = SofaScoreTaskResource::class;
}
@@ -0,0 +1,19 @@
<?php
namespace App\Filament\Clusters\StaticData\Resources\SofaScoreTasks\Pages;
use App\Filament\Clusters\StaticData\Resources\SofaScoreTasks\SofaScoreTaskResource;
use Filament\Actions\DeleteAction;
use Filament\Resources\Pages\EditRecord;
class EditSofaScoreTask extends EditRecord
{
protected static string $resource = SofaScoreTaskResource::class;
protected function getHeaderActions(): array
{
return [
DeleteAction::make(),
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Filament\Clusters\StaticData\Resources\SofaScoreTasks\Pages;
use App\Filament\Clusters\StaticData\Resources\SofaScoreTasks\SofaScoreTaskResource;
use Filament\Actions\CreateAction;
use Filament\Resources\Pages\ListRecords;
class ListSofaScoreTasks extends ListRecords
{
protected static string $resource = SofaScoreTaskResource::class;
protected function getHeaderActions(): array
{
return [
CreateAction::make()
->label('New Task')
->icon('phosphor-plus')
->createAnother(false),
];
}
}
@@ -0,0 +1,41 @@
<?php
namespace App\Filament\Clusters\StaticData\Resources\SofaScoreTasks\Schemas;
use App\Models\Sport;
use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\Select;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Schemas\Schema;
class SofaScoreTaskForm
{
public static function configure(Schema $schema): Schema
{
return $schema
->columns(1)
->components([
Select::make('sport_id')
->default(1)
->selectablePlaceholder(false)
->label('Sport')
->options(Sport::where('is_active', 1)->pluck('name', 'id')),
Select::make('mode')
->live()
->native()
->allowHtml()
->required()
->options([
'yesterday' => '<span class="text-amber-600">Every yesterday</span>',
'date' => '<span class="text-blue-600">Grap a date</span>',
'range' => '<span class="text-green-600">Grap a date range</span>',
]),
DatePicker::make('day_from')
->native()
->visible(fn (Get $get): bool => in_array($get('mode'), ['date', 'range'])),
DatePicker::make('day_to')
->native()
->visible(fn (Get $get): bool => $get('mode') === 'range'),
]);
}
}
@@ -0,0 +1,57 @@
<?php
namespace App\Filament\Clusters\StaticData\Resources\SofaScoreTasks;
use App\Filament\Clusters\StaticData\Resources\SofaScoreTasks\Pages\ListSofaScoreTasks;
use App\Filament\Clusters\StaticData\Resources\SofaScoreTasks\Schemas\SofaScoreTaskForm;
use App\Filament\Clusters\StaticData\Resources\SofaScoreTasks\Tables\SofaScoreTasksTable;
use App\Filament\Clusters\StaticData\StaticDataCluster;
use App\Models\SofaScoreTask;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Tables\Table;
use UnitEnum;
class SofaScoreTaskResource extends Resource
{
protected static ?string $model = SofaScoreTask::class;
protected static ?string $cluster = StaticDataCluster::class;
protected static ?string $navigationLabel = 'SofaScore Tasks';
protected static ?string $modelLabel = 'SofaScore Tasks';
protected static ?int $navigationSort = 0;
protected static string|UnitEnum|null $navigationGroup = 'Statistiko';
public static function form(Schema $schema): Schema
{
return SofaScoreTaskForm::configure($schema);
}
public static function table(Table $table): Table
{
return SofaScoreTasksTable::configure($table);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getNavigationBadge(): ?string
{
return parent::getEloquentQuery()->count();
}
public static function getPages(): array
{
return [
'index' => ListSofaScoreTasks::route('/'),
];
}
}
@@ -0,0 +1,48 @@
<?php
namespace App\Filament\Clusters\StaticData\Resources\SofaScoreTasks\Tables;
use Filament\Actions\EditAction;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Columns\ToggleColumn;
use Filament\Tables\Table;
class SofaScoreTasksTable
{
public static function configure(Table $table): Table
{
return $table
->columns([
IconColumn::make('sport.icon')
->label('')
->grow(false)
->width(30)
->icon(fn ($record) => $record->sport->icon),
TextColumn::make('sport.name'),
TextColumn::make('mode')
->label('Grapping dates')
->badge()
->color(fn ($state): string => match ($state) {
'yesterday' => 'warning',
'date' => 'primary',
'range' => 'success',
})
->formatStateUsing(fn (string $state, $record): string => match ($state) {
'yesterday' => 'Every yesterday',
'date' => $record->day_from->format('Y-m-d'),
'range' => $record->day_from.' - '.$record->day_to,
}),
ToggleColumn::make('is_active')->alignCenter(),
ToggleColumn::make('run_slow')->alignCenter(),
ToggleColumn::make('run_repeatedly')->alignCenter(),
ToggleColumn::make('compleated')->alignCenter(),
])
->filters([
//
])
->recordActions([
EditAction::make(),
]);
}
}
+27
View File
@@ -0,0 +1,27 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class SofaScoreTask extends Model
{
protected $fillable = [
'name',
'mode',
'sport_id',
'day_from',
'day_to',
'is_active',
'compleated',
'run_repeatedly',
'run_slow',
'last_start',
'last_end',
];
public function sport()
{
return $this->belongsTo(Sport::class);
}
}
Generated
+114 -34
View File
@@ -396,16 +396,16 @@
}, },
{ {
"name": "blade-ui-kit/blade-icons", "name": "blade-ui-kit/blade-icons",
"version": "1.10.0", "version": "1.10.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/driesvints/blade-icons.git", "url": "https://github.com/driesvints/blade-icons.git",
"reference": "74189a80bbaa4966aebaee54fec3a3c2ef0a5f3a" "reference": "6e072d021ea6249986c330b93293c33d0c4f0e34"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/driesvints/blade-icons/zipball/74189a80bbaa4966aebaee54fec3a3c2ef0a5f3a", "url": "https://api.github.com/repos/driesvints/blade-icons/zipball/6e072d021ea6249986c330b93293c33d0c4f0e34",
"reference": "74189a80bbaa4966aebaee54fec3a3c2ef0a5f3a", "reference": "6e072d021ea6249986c330b93293c33d0c4f0e34",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -473,7 +473,7 @@
"type": "paypal" "type": "paypal"
} }
], ],
"time": "2026-04-23T19:03:45+00:00" "time": "2026-06-30T09:44:12+00:00"
}, },
{ {
"name": "brick/math", "name": "brick/math",
@@ -2196,16 +2196,16 @@
}, },
{ {
"name": "guzzlehttp/guzzle", "name": "guzzlehttp/guzzle",
"version": "7.12.3", "version": "7.13.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/guzzle.git", "url": "https://github.com/guzzle/guzzle.git",
"reference": "9aa17bcdd777ee31df9fc83c337ca4ca2340def3" "reference": "55901a76dfd2006a0cc012b9e3c5b487f796478d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/9aa17bcdd777ee31df9fc83c337ca4ca2340def3", "url": "https://api.github.com/repos/guzzle/guzzle/zipball/55901a76dfd2006a0cc012b9e3c5b487f796478d",
"reference": "9aa17bcdd777ee31df9fc83c337ca4ca2340def3", "reference": "55901a76dfd2006a0cc012b9e3c5b487f796478d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2224,7 +2224,7 @@
"bamarni/composer-bin-plugin": "^1.8.2", "bamarni/composer-bin-plugin": "^1.8.2",
"ext-curl": "*", "ext-curl": "*",
"guzzle/client-integration-tests": "3.0.2", "guzzle/client-integration-tests": "3.0.2",
"guzzlehttp/test-server": "^0.5.1", "guzzlehttp/test-server": "^0.6",
"php-http/message-factory": "^1.1", "php-http/message-factory": "^1.1",
"phpunit/phpunit": "^8.5.52 || ^9.6.34", "phpunit/phpunit": "^8.5.52 || ^9.6.34",
"psr/log": "^1.1 || ^2.0 || ^3.0" "psr/log": "^1.1 || ^2.0 || ^3.0"
@@ -2304,7 +2304,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/guzzle/guzzle/issues", "issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.12.3" "source": "https://github.com/guzzle/guzzle/tree/7.13.1"
}, },
"funding": [ "funding": [
{ {
@@ -2320,7 +2320,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2026-06-23T15:29:02+00:00" "time": "2026-06-29T20:14:18+00:00"
}, },
{ {
"name": "guzzlehttp/promises", "name": "guzzlehttp/promises",
@@ -4457,24 +4457,24 @@
}, },
{ {
"name": "mongodb/mongodb", "name": "mongodb/mongodb",
"version": "2.2.0", "version": "2.3.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/mongodb/mongo-php-library.git", "url": "https://github.com/mongodb/mongo-php-library",
"reference": "bbb13f969e37e047fd822527543df55fdc1c9298" "reference": "12e56461166d915e3dd8e4969ad0940ed5207d88"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/bbb13f969e37e047fd822527543df55fdc1c9298", "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/12e56461166d915e3dd8e4969ad0940ed5207d88",
"reference": "bbb13f969e37e047fd822527543df55fdc1c9298", "reference": "12e56461166d915e3dd8e4969ad0940ed5207d88",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"composer-runtime-api": "^2.0", "composer-runtime-api": "^2.0",
"ext-mongodb": "^2.2", "ext-mongodb": "^2.3",
"php": "^8.1", "php": "^8.1",
"psr/log": "^1.1.4|^2|^3", "psr/log": "^1.1.4|^2|^3",
"symfony/polyfill-php85": "^1.32" "symfony/polyfill-php85": "^1.33"
}, },
"replace": { "replace": {
"mongodb/builder": "*" "mongodb/builder": "*"
@@ -4526,11 +4526,7 @@
"mongodb", "mongodb",
"persistence" "persistence"
], ],
"support": { "time": "2026-04-28T12:50:06+00:00"
"issues": "https://github.com/mongodb/mongo-php-library/issues",
"source": "https://github.com/mongodb/mongo-php-library/tree/2.2.0"
},
"time": "2026-02-11T11:39:56+00:00"
}, },
{ {
"name": "monolog/monolog", "name": "monolog/monolog",
@@ -5957,16 +5953,16 @@
}, },
{ {
"name": "psy/psysh", "name": "psy/psysh",
"version": "v0.12.23", "version": "v0.12.24",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/bobthecow/psysh.git", "url": "https://github.com/bobthecow/psysh.git",
"reference": "4dcc0f08047d52bbde475eda481146fd8e27e1a4" "reference": "ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/4dcc0f08047d52bbde475eda481146fd8e27e1a4", "url": "https://api.github.com/repos/bobthecow/psysh/zipball/ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1",
"reference": "4dcc0f08047d52bbde475eda481146fd8e27e1a4", "reference": "ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -6030,9 +6026,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/bobthecow/psysh/issues", "issues": "https://github.com/bobthecow/psysh/issues",
"source": "https://github.com/bobthecow/psysh/tree/v0.12.23" "source": "https://github.com/bobthecow/psysh/tree/v0.12.24"
}, },
"time": "2026-05-23T13:41:31+00:00" "time": "2026-06-29T15:41:09+00:00"
}, },
{ {
"name": "ralouphie/getallheaders", "name": "ralouphie/getallheaders",
@@ -8027,6 +8023,90 @@
], ],
"time": "2026-04-10T16:19:22+00:00" "time": "2026-04-10T16:19:22+00:00"
}, },
{
"name": "symfony/polyfill-iconv",
"version": "v1.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-iconv.git",
"reference": "2c5729fd241b4b22f6e4b436bc3354a4f262df57"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/2c5729fd241b4b22f6e4b436bc3354a4f262df57",
"reference": "2c5729fd241b4b22f6e4b436bc3354a4f262df57",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"provide": {
"ext-iconv": "*"
},
"suggest": {
"ext-iconv": "For best performance"
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Iconv\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Iconv extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"iconv",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-iconv/tree/v1.37.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2026-04-10T16:19:22+00:00"
},
{ {
"name": "symfony/polyfill-intl-grapheme", "name": "symfony/polyfill-intl-grapheme",
"version": "v1.38.1", "version": "v1.38.1",
@@ -11677,11 +11757,11 @@
}, },
{ {
"name": "phpstan/phpstan", "name": "phpstan/phpstan",
"version": "2.2.2", "version": "2.2.3",
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/e5cc34d491a90e79c216d824f60fe21fd4d93bd6", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/4048833dd47b377287818841877fb3087289509c",
"reference": "e5cc34d491a90e79c216d824f60fe21fd4d93bd6", "reference": "4048833dd47b377287818841877fb3087289509c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -11737,7 +11817,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2026-06-05T09:00:01+00:00" "time": "2026-06-30T21:15:26+00:00"
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
@@ -0,0 +1,38 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('sofa_score_tasks', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('mode');
$table->integer('sport_id')->index()->references('id')->on('sports');
$table->date('day_from')->nullable();
$table->date('day_to')->nullable();
$table->boolean('is_active')->default(0);
$table->boolean('compleated')->default(0);
$table->boolean('run_repeatedly')->default(0);
$table->boolean('run_slow')->default(0);
$table->dateTime('last_start')->nullable();
$table->dateTime('last_end')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('sofa_score_tasks');
}
};
+12 -12
View File
@@ -152,23 +152,23 @@ case "$1" in
"13") "13")
## AUTO GRAPPER SOFASCORE ## AUTO GRAPPER SOFASCORE
# -i ~/.ssh/id_rsa # -i ~/.ssh/id_rsa
echo "\n⚽ close all open vpn" # echo "\n⚽ close all open vpn"
killall ssh # killall ssh
echo "\n⚽ open vpn tunnel to prod" # echo "\n⚽ open vpn tunnel to prod"
ssh -f -N -L 13306:127.0.0.1:3306 -p 58371 root@162.55.242.190 # ssh -f -N -L 13306:127.0.0.1:3306 -p 58371 root@162.55.242.190
echo "\n⚽ copy active tournaments" # echo "\n⚽ copy active tournaments"
php artisan nuh --d --f 73 --prc=2 # php artisan nuh --d --f 73 --prc=2
echo "\n⚽ close tunnel" # echo "\n⚽ close tunnel"
killall ssh # killall ssh
echo "\n⚽ grapp data sofascore" # echo "\n⚽ grapp data sofascore"
php artisan nuh --d --f --y 72 # php artisan nuh --d --f --y 72
echo "\n⚽ create zip archive" # echo "\n⚽ create zip archive"
php artisan nuh --d --f --y 73 --prc=3 # php artisan nuh --d --f --y 73 --prc=3
echo "\n⚽ mail archive" echo "\n⚽ mail archive"
php artisan nuh --d --f --y 73 --prc=4 php artisan nuh --d --f --y 73 --prc=4
Binary file not shown.