Untitled

 avatar
unknown
php
3 years ago
5.9 kB
4
Indexable
<?php

namespace Crawler;

use Symfony\Component\DomCrawler\Crawler;
use Curl\Curl;

class Tumanhwas
{
    public $referer = 'https://tumanhwas.club';
    public $proxy = false;  
    public $curl;

    function __construct()
    {
        $this->curl = new Curl();
        $this->curl->setReferrer($this->referer);
    }

    function list($page)
    {

        $url = "https://tumanhwas.club/list-manga";

        $curl_respone = $this->curl($url);
        if ($curl_respone) {
            $crawler = new Crawler($curl_respone);

            $data = $crawler->filter('.recoment_box .story_item .story_images a')->each(function (Crawler $node) {
                return trim($node->attr('href'));
            });
        }
        //print_r($data);
        return $data;
    }

    function info($url)
    {
        $total_curl = 0;
        $curl_respone = $this->curl($url);
        $is_curl = true;

        if ($curl_respone) {
            $crawler = new Crawler($curl_respone);
            $manga = $crawler->filter('.iedu_header');
            if ($manga->count() <= 0) {
                return die('Có lỗi khi lấy dữ liệu!');
            }

            $outerHtml = $manga->eq(0)->outerHtml();


            $data['name'] = $manga->filter('.detail_name h1')->text();


            $data['other_name'] = remove_html(explode_by('Títulos alternativos</div>', '</span>', $outerHtml));
            $data['other_name'] = $data['other_name'] === 'Updating' ? NULL : $data['other_name'];

            if($crawler->filter('meta[property="og:image"]')->count() > 0){
                $data['cover'] = $crawler->filter('meta[property="og:image"]')->eq(0)->attr('content');
            } else {
                $data['cover'] = $crawler->filter('.detail_avatar img')->attr('src');
            }

            $data['description'] = $crawler->filter('.detail_reviewContent')->text();
            
            $data['status'] = remove_html(explode_by('Status</div>', '</span>',  $outerHtml));
            $data['status'] = slugGenerator($data['status']) == 'On Going' ? 'completed' : 'on-going';

            // $data['type'] = remove_html(explode_by("Type\n</h5>\n</div>", '</div>', $outerHtml));
            // $data['type'] = slugGenerator($data['type']) == 'Manhwa' ? 'manga' : 'manhwa';

            $data['taxonomy']['source'][] = $url;


            $data['taxonomy']['authors'] = remove_html(explode_by('Autor</div>', '</a></div>', $outerHtml));
            $data['taxonomy']['authors'] = $data['taxonomy']['authors'] !== "Updating" ? $data['taxonomy']['authors'] : NULL;

            $data['taxonomy']['genres'] = explode_by('Géneros</div>', '</div>', $outerHtml);
            $data['taxonomy']['genres'] = remove_html($data['taxonomy']['genres']);
            $data['taxonomy']['genres'] = explode('-', $data['taxonomy']['genres']);
            $data['taxonomy']['genres'] = array_filter(array_map('trim', $data['taxonomy']['genres']), 'strlen');

            // $data['taxonomy']['translation'] = $manga->filter('.artist-content a')->each(function (Crawler $node) {
            //     return trim($node->text());
            // });

            $data['list_chapter'] = $crawler->filter('.detail_chapterContent .chapter_box ul li .chapter_num')->each(function (Crawler $node) {
                // if($node->count() <= 0){
                //     return null;
                // }

                // $node = $node->filter("a")->eq(0);
                
                $chapter['name'] = mb_convert_case(trim($node->text()), MB_CASE_TITLE, "UTF-8");

                if ((preg_match('#(chapter|chương|chap|capítulos)(.[\d.]+)#is', $chapter['name'], $name)  || preg_match('#([C]+)([\d.]+)#is', $chapter['name'], $name)) && !empty($name[2])) {
                    $chapter['name'] = 'Capítulos '. trim($name[2]);
                } elseif(is_numeric($chapter['name'])){
                    $chapter['name'] = 'Capítulos '. trim($chapter['name']);
                }

                $chapter['url'] = 'https://tumanhwas.club' . trim($node->attr('href'));

                return $chapter;
            });

            $data['list_chapter'] = array_reverse(array_filter($data['list_chapter']));
            return $data;
        }


    }

    function content($url)
    {
        $curl_respone = $this->curl($url);


        if ($curl_respone) {
            $crawler = new Crawler($curl_respone);
            $chapter['type'] = 'image';
            $chapter['content'] = $crawler->filter('.chapter_boxImages .image_story.imageChap img')->each(function (Crawler $node) {
                //return $this->AddProxy(trim($node->attr('data-src')));
                return trim($node->attr('src'));
            });

            return $chapter;
        }

        return exit("lỗi");
    }

    // function AddProxy($url)
    // {
    //     $url = trim($url);
    //     $url = "https://thcomic.com/proxy/index.php?url=" . base64_encode($url) . "&proxysite=zinmanga";
    //     return $url;
    // }

    function change_category($key){
        $key = trim($key);

        return mb_convert_case(
            [
            ]
            [$key] ?? $key, MB_CASE_TITLE, "UTF-8");
    }

    function curl($url){
        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($curl, CURLOPT_REFERER, $this->referer);

        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

        $resp = curl_exec($curl);
        curl_close($curl);

        return $resp;
    }
}

Editor is loading...