185 lines
5.9 KiB
PHP
Executable File
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
|
|
|
|
}
|
|
}
|