Inheritance: extends Controller
 public function __construct()
 {
     $this->middleware('jwt.auth', ['except' => ['index', 'show']]);
     $this->middleware('throttle.api:60,1');
     $this->middleware('obfuscate:article');
     parent::__construct();
 }
Example #2
0
 /**
  * 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
 }