Files
backend/app/Command/FooCommand.php
2025-06-18 10:31:43 +08:00

185 lines
5.9 KiB
PHP
Executable File

<?php
declare(strict_types=1);
namespace App\Command;
use App\Command\spider\VogueCommand;
use App\FormModel\spider\ReviewModel;
use App\Helpers\AppHelper;
use App\Helpers\TitleHelper;
use App\Model\AppArticle;
use App\Model\AppBrand;
use App\Model\AppSpiderArticle;
use Co\WaitGroup;
use GuzzleHttp\RequestOptions;
use Hyperf\Collection\Collection;
use Hyperf\Command\Command as HyperfCommand;
use Hyperf\Command\Annotation\Command;
use Hyperf\Context\ApplicationContext;
use Hyperf\Coroutine\Coroutine;
use Hyperf\DbConnection\Db;
use Hyperf\Logger\LoggerFactory;
use Laminas\Stdlib\ArrayUtils;
use Psr\Container\ContainerInterface;
use Psr\Log\LoggerInterface;
use Spatie\Crawler\Crawler;
use Swoole\Timer;
use function Hyperf\Coroutine\co;
#[Command]
class FooCommand extends HyperfCommand
{
protected LoggerInterface $logger;
protected $reids;
public function __construct(protected ContainerInterface $container, LoggerFactory $loggerFactory)
{
parent::__construct('demo:command');
$this->logger = $loggerFactory->get('log', 'command');
}
public function configure()
{
parent::configure();
$this->setDescription('Hyperf Demo Command');
}
public function handle()
{
$this->line('Hello Hyperf!', 'info');
// Crawler::create([
// RequestOptions::TIMEOUT => 30.0, // 请求最大持续时间
// RequestOptions::CONNECT_TIMEOUT => 10.0, // 连接超时
// ])->setCrawlObserver(new TestClass())->startCrawling('https://theimpression.com/milan-street-style-fall-2025-day-6/');
$query = AppArticle::where('id', '>', 1);
// $model = new ReviewModel();
$map = [
// 'Fall 1996 Ready-to-Wear' => '/Fall ([0-9]*?) Ready-to-Wear/',
'/Fall ([0-9]*?) Ready-to-Wear/' => [
'trans' => '秋季成衣',
'style' => 0,
'location' => 0,
],
'/Spring ([0-9]*?) Ready-to-Wear/' => [
'trans' => '春季成衣',
'style' => 0,
'location' => 0,
],
'/Pre-Fall ([0-9]*?)/' => [
'trans' => '早秋',
'style' => 0,
'location' => 0,
],
'/Australia Resort ([0-9]*?)/' => [
'trans' => '时装',
'style' => 1,
'location' => 1,
],
'/Fall ([0-9]*?) Menswear/' => [
'trans' => '秋季男装',
'style' => 0,
'location' => 1, // 澳大利亚
],
'/Ukraine Fall ([0-9]*?)/' => [
'trans' => '秋季',
'style' => 0,
'location' => 2, // 乌克兰
],
'/Kiev Fall ([0-9]*?)/' => [
'trans' => '秋季',
'style' => 0,
'location' => 3, // 基辅
],
'/Stockholm Fall ([0-9]*?)/' => [
'trans' => '秋季',
'style' => 0,
'location' => 4, // 斯德哥尔摩
],
'/Tokyo Fall ([0-9]*?)/' => [
'trans' => '秋季',
'style' => 0,
'location' => 5, // 东京
],
'/Berlin Fall ([0-9]*?)/' => [
'trans' => '秋季',
'style' => 0,
'location' => 6, // 柏林
],
'/Copenhagen Fall ([0-9]*?)/' => [
'trans' => '秋季',
'style' => 0,
'location' => 7, // 哥本哈根
],
'/([0-9]*?) Spring Summer/' => [
'trans' => '春夏',
'style' => 0,
'location' => 0,
],
'/([0-9]*?) Autumn Winter/' => [
'trans' => '秋冬',
'style' => 0,
'location' => 0,
],
];
//
// var_dump(TitleHelper::translate('Pre-Fall 2019'));die;
foreach ($query->cursor() as $item) {
echo '正在同步' . $item->id . PHP_EOL;
if (in_array($item->title, ['春季', ' 春季', '秋季', ' 秋季', '早秋', ' 早秋', '时装', ' 时装']) || stripos($item->title, '|') !== false) {
$originTitle = AppSpiderArticle::find($item->spider_article_id)->title;
if ($title = TitleHelper::translate($originTitle)) {
var_dump($title);
$item->title = $title;
$item->save();
}
} else {
if ($title = TitleHelper::translate($item->title)) {
$item->title = $title;
$item->save();
}
}
// $model = AppArticle::find($item->id);
// $model->aid = strtr(uniqid(more_entropy:true), [
// '.' => ''
// ]);
//// $model->description = '1';
// $model->save();
// foreach ($map as $mapPreg => $mapItem) {
//
// preg_match_all($mapPreg, $item->title, $matches);
//
// if (count($matches) > 1 && $matches[1]) {
// echo current($matches[1]) . " {$mapItem['trans']}" . PHP_EOL;
// $model = AppArticle::find($item->id);
// $model->title = current($matches[1]) . " {$mapItem['trans']}";
// $model->location = $mapItem['location'];
// $model->style = $mapItem['style'];
//
// echo 'save';
// $model->save();
// continue;
// }
}
//
//// $model->pass($item->id);
////
////// var_dump($item->created_at->date);
////// $model->deleted_at = $item->created_at->timestamp;
////// var_dump($model->save());
// }
// Fall 1996 Ready-to-Wear
// Spring 2025 Ready-to-Wear
// Pre-Fall 2025
}
}