public function __construct() { $this->middleware('jwt.auth', ['except' => ['index', 'show']]); $this->middleware('throttle.api:60,1'); $this->middleware('obfuscate:article'); parent::__construct(); }
/** * Execute the console command. * * @return mixed */ public function handle() { $c = new ArticlesController(); $c->get_extra_content(); }
public function import_vnexpress($case = null) { Log::info("Do log import_vnexpress in " . date("Y-m-d H:i:s")); if (true) { //============ ============ // // if (empty($this->array_site)) { echo "List null"; return; } if (empty($case)) { echo "Nhap gia tri"; return; } switch ($case) { case "home": $array_site_a[0] = "http://vnexpress.net"; break; case "all": $array_site_a = $this->array_site; break; default: $array_site_a[0] = $this->array_site[(int) $case]; break; } // foreach tất cả phần tử trong mảng $this->array_site foreach ($array_site_a as $key_site => $value_site) { // Khởi tạo biến dom của link $value_site $dom = str_get_html(file_get_contents($value_site)); // Lấy ra tất cả các tag a có trong link $value_site $m = $dom->find("a"); $count_success = 0; // foreach tất cả các tag a có trong link $value_site foreach ($m as $key => $value) { if ($count_success > 20) { echo "Over 10 result" . PHP_EOL; continue; } // Nếu tồn tại href thì vào trong if (!empty($value->attr["href"])) { // Lấy các link có phần tử cuối là .html và độ dài từ 10 ký tự trở lên if (preg_match("/.{10,}\\.html\$/", $value->attr["href"])) { // Log ban đầu echo "=== Link: " . $value->attr["href"] . PHP_EOL; if (LOG_INFO_FLAG_IMPORT) { Log::info("Link: " . $value->attr["href"]); } //============ ============ // //Khởi tạo biến title //Phần tử trong có thể bao gồm //1: plaintex //2: img // Kiểm tra trong link có phải hình hay không if ($value->find("img", 0)) { // Đúng là hình if (!empty($value->find("img", 0)->attr["alt"])) { //Có alt gán biến title $title = $value->find("img", 0)->attr["alt"]; } else { //Nếu không có alt thì continue if (LOG_INFO_FLAG_IMPORT) { Log::info("exit :0 __ " . $value->attr["href"]); } continue; } } else { // Không phải hình $title = $value->innertext(); } // //============ ============ // Các trường hợp bắt lỗi // 1: Link đã có trong DB // 2: Chuỗi $title < 10 kỹ tự if (Articles::where("article_link", $value->attr["href"])->count() != 0 || strlen(trim($title)) < 10) { if (LOG_INFO_FLAG_IMPORT) { Log::info("exit :1 __ " . $title); } continue; } // Nếu link là đường dẫn tương đối thì thêm domain vào if (preg_match("/^\\//", $value->attr["href"])) { $value->attr["href"] = "http://vnexpress.net" . $value->attr["href"]; } //============ ============ ============ ============ // Khởi tạo biến $dom2 với nội dung theo link $value->attr["href"] // Bạn có thể dùng function get content của vihoangson // Gist.github: https://gist.github.com/vihoangson/647d856380ac5ca353b0 // Desc: Function lấy nội dung html của trang web khác bằng cUrl // Function curl_get($url) // $dom2 = str_get_html(file_get_contents($value->attr["href"])); $title = $title; $link = $value->attr["href"]; // Rửa tổng biến $content $content = ""; // Tìm phần tử đầu tiên trong dom có giá trị là #left_calculator if ($dom2->find("#left_calculator", 0)) { $content = $dom2->find("#left_calculator", 0)->innertext(); } //============ ============ ============ ============ // LẤY NỘI DUNG CHI TIẾT TRANG // $value->attr["href"] // Output: $title;$content;$link; //============ ============ ============ ============ // // Khởi tạo biến $dom2 với nội dung theo link $value->attr["href"] $dom2 = str_get_html(file_get_contents($value->attr["href"])); $title = $title; $link = $value->attr["href"]; // Rửa tổng biến $content $content = ""; //============ ============ // $name_dom_title // Biến bao của tag title // Lưu ý: có thể thay đổi khi layout trang đích thay đổi //============ ============ $name_dom_title = ".title_news h1"; //============ ============ // $name_dom_content // Biến bao của tag content // Lưu ý: có thể thay đổi khi layout trang đích thay đổi //============ ============ $name_dom_content = "#left_calculator"; // Tìm phần tử đầu tiên trong dom có giá trị là #left_calculator if ($dom2->find($name_dom_content, 0)) { $content = $dom2->find($name_dom_content, 0)->innertext(); } // //============ ============ ============ ============ // LẤY NỘI DUNG CHI TIẾT TRANG // $value->attr["href"] // Output: $title;$content;$link; //============ ============ ============ ============ //============ ============ // Save vào DB // if ($content == "") { $dom2->clear(); if (LOG_INFO_FLAG_IMPORT) { Log::info("exit : Content rỗng"); } continue; } $data = ["article_title" => $title, "article_content" => $content, "article_link" => $link]; if (Articles::create($data)) { echo "!!! Saved: " . $title . PHP_EOL; if (LOG_INFO_FLAG_IMPORT) { Log::info("!!! Saved: " . $title); } $count_success++; } else { if (LOG_INFO_FLAG_IMPORT) { Log::info("!!! Could't Save: " . $title); } } // //============ ============ } } } // End foreach $m } // End foreach $this->array_site // Dừng chương trình // Lấy bài viết top $this->vnexpress_set_important_news(); $c = new ArticlesController(); // Lấy phần mở đầu $c->get_extra_content(); // lấy hình ảnh chính $c->update_main_img(); die; // // ============ ============ } // End if }