first commit
This commit is contained in:
184
app/Command/FooCommand.php
Executable file
184
app/Command/FooCommand.php
Executable file
@ -0,0 +1,184 @@
|
||||
<?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
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user