OneOnline Support
This commit is contained in:
		
							
								
								
									
										72
									
								
								app/Console/Commands/ScrapeOneOnlineCommand.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								app/Console/Commands/ScrapeOneOnlineCommand.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | ||||
| <?php | ||||
|  | ||||
| namespace App\Console\Commands; | ||||
|  | ||||
| use Illuminate\Console\Command; | ||||
| use App\Services\OneOnlineService; | ||||
| use App\Topic; | ||||
| use App\Source; | ||||
|  | ||||
| class ScrapeOneOnlineCommand extends Command | ||||
| { | ||||
|     /** | ||||
|      * The name and signature of the console command. | ||||
|      * | ||||
|      * @var string | ||||
|      */ | ||||
|     protected $signature = 'scrape:oneonline'; | ||||
|  | ||||
|     /** | ||||
|      * The console command description. | ||||
|      * | ||||
|      * @var string | ||||
|      */ | ||||
|     protected $description = 'Scrape OneOnline'; | ||||
|  | ||||
|     /** | ||||
|      * Create a new command instance. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
|         parent::__construct(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Execute the console command. | ||||
|      * | ||||
|      * @return int | ||||
|      */ | ||||
|     public function handle() | ||||
|     { | ||||
|         $source = Source::where('slug', 'oneonline')->first(); | ||||
|  | ||||
|         $articles = (new OneOnlineService)->scrape(); | ||||
|  | ||||
|         foreach ($articles as $article) { | ||||
|  | ||||
|             // Attach the relationship between source and article and return the curren article instance | ||||
|             $articleModel = $source->articles()->updateOrCreate(["guid" => $article["guid"]], | ||||
|                 [ | ||||
|                 "title" => $article["title"], | ||||
|                 "url" => $article["url"], | ||||
|                 "author" => $article["author"], | ||||
|                 "featured_image" => $article["image"], | ||||
|                 "body" => $article["content"], | ||||
|                 "published_date" => $article["date"], | ||||
|                 "meta" => [ | ||||
|                     "title" => $article["og_title"] | ||||
|                 ] | ||||
|  | ||||
|             ]); | ||||
|  | ||||
|             collect($article["topics"])->each(function($topic) use ($articleModel) { | ||||
|                 $topicModel = Topic::firstOrCreate(["slug" => $topic["slug"]],["name" => $topic["name"]]); | ||||
|  | ||||
|                 $topicModel->articles()->syncWithoutDetaching($articleModel); | ||||
|             }); | ||||
|  | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user