小碗熊cms5.0火車頭采集器免登陸發布模塊api

2021-01-14 162 19 編輯:蜀戎seo 來源:本站

/app/api/controller/Postbot.php

接口文件放置位置


模塊不需要登錄, 模塊配置哪里直接選擇不登錄


發布模塊的表單字段及說明:

1. book_name 漫畫名

2. nick_name 漫畫別名

3. tags 分類,多個分類用|隔開

4. author 作者名字

5. end 狀態,1代表完結,0代表連載中

6. cover_url 封面圖遠程地址

7. chapter_name 章節名

8. area_id 地區id

9. images 由圖片標簽組成的字符串,示例:

自動檢測

<img src="http://www.m.com/1.jpg"><img src="http://www.m.com/2.jpg"><img src="http://www.m.com/3.jpg">

11. summary 漫畫簡介

12. api_key 后臺配置的api_key

13. src 用來區別采集源,自己寫

14. src_url 用來唯一定義每個漫畫,可以是該漫畫的url,也可以是該漫畫在被采集站的id

15. c_src_url 用來唯一定義每個章節,與src_url同理

<?php
namespace apppicontroller;

use appmodelAuthor;
use appmodelBook;
use appmodelPhoto;
use thinkController;
use thinkRequest;
use appmodelChapter;
use appservicechapterService;
use appservicephotoService;

class Postbot
{
    protected $chapterService;
    protected $photoService;


    public function initialize()
    {
        $this->chapterService = new ppserviceChapterService();
        $this->photoService = new ppservicePhotoService();
    }

    public function save(Request $request)
    {
        if ($request->isPost()) {
            $data = $request->param();
            $key = $data['api_key'];
            if (empty($key) || is_null($key)) {
                return 'api密鑰不能為空!';
            }
            if ($key != config('site.api_key')) {
                return 'api密鑰錯誤!';
            }

            $book = Book::where('book_name', '=', trim($data['book_name']))->where('unique_id', '=', trim($data['unique_id']))->find();
            if (!$book) { //如果漫畫不存在
                $author = Author::where('author_name', '=', trim($data['author']))->find();
                if (is_null($author)) {//如果作者不存在
                    $author = new Author();
                    $author->author_name = $data['author'] ?: '俠名';
                    $author->save();
                }
                $book = new Book();
                $book->unique_id = $data['unique_id'];
                $book->author_id = $author->id;
                $book->author_name = $data['author'] ?: '俠名';
                $book->area_id = trim($data['area_id']);
                $book->book_name = trim($data['book_name']);
                if (!empty($data['nick_name']) || !is_null($data['nick_name'])) {
                    $book->nick_name = trim($data['nick_name']);
                }
                $book->tags = trim($data['tags']);
                $book->end = trim($data['end']);
                $book->start_pay = trim($data['start_pay']);
                $book->money = trim($data['money']);
//                $info = $this->getImage($data['cover_url'], './img/' . date("Ymd"));
                $book->cover_url = trim($data['cover_url']);
                $book->summary = trim($data['summary']);
                $book->last_time = time();
                //      $book->update_week = rand(1, 7);
                //      $book->click = rand(1000, 9999);
                $book->save();
            }
            $map[] = ['chapter_name', '=', trim($data['chapter_name'])];
            $map[] = ['book_id', '=', $book->id];
            $chapter = Chapter::where($map)->find();
            if (!$chapter) {
                $chapter = new Chapter();
                $chapter->chapter_name = trim($data['chapter_name']);
                $chapter->book_id = $book->id;
                $lastChapterOrder = 0;

                if ($data['chapter_order']) {
                    $chapter->chapter_order = (int)$data['chapter_order'];
                } else {
                    $lastChapter = $this->getLastChapter($book['id']);
                    if ($lastChapter) {
                        $lastChapterOrder = $lastChapter->chapter_order;
                    }
                    $chapter->chapter_order = $lastChapterOrder + 1;
                }
                $chapter->update_time = time();
                $chapter->save();
            }
            $book->last_time = time();
            $book->save();
            $preg = '/srcs*=s*['"]?([^'"]*)['"]?/i';
            preg_match_all($preg, $data['images'], $img_urls);
            $lastOrder = 0;
            $lastPhoto = $this->getLastPhoto($chapter->id);
            if ($lastPhoto) {
                $lastOrder = $lastPhoto->pic_order + 1;
            }
            foreach ($img_urls[1] as $img_url) {
                $photo = new Photo();
                $photo->chapter_id = $chapter->id;
                $photo->pic_order = $lastOrder;
//                $info = $this->getImage($img_url, './img/' . date("Ymd"));

                $photo->img_url = $img_url;
                $photo->save();
                $lastOrder++;
            }
            echo "操作成功";
        }

    }

    public function getLastChapter($book_id)
    {
        return Chapter::where('book_id', '=', $book_id)->order('chapter_order', 'desc')->limit(1)->find();
    }

    public function getLastPhoto($chapter_id)
    {
        return Photo::where('chapter_id', '=', $chapter_id)->order('id', 'desc')->limit(1)->find();
    }

    /*功能:php完美實現下載遠程圖片保存到本地
  *參數:文件url,保存文件目錄,保存文件名稱,使用的下載方式
  *當保存文件名稱為空時則使用遠程文件原來的名稱
  */
    function getImage($url, $save_dir = '/public/img/', $filename = '', $type = 1)
    {
        if (trim($url) == '') {
            return array('file_name' => '', 'save_path' => '', 'error' => 1);
        }
        if (trim($save_dir) == '') {
            $save_dir = './';
        }

        $url = str_replace('jpg
', 'jpg', $url);

        file_put_contents("result.txt", "url:" . $url . "
", FILE_APPEND);


        if (trim($filename) == '') {//保存文件名
            $ext = strrchr($url, '.');
//            if($ext!='.gif'&&$ext!='.jpg'){
//                return array('file_name'=>'','save_path'=>'','error'=>3);
//            }
            $filename = time() . rand(100000, 999999) . $ext;
        }
        if (0 !== strrpos($save_dir, '/')) {
            $save_dir .= '/';
        }
        //創建保存目錄
        if (!file_exists($save_dir) && !mkdir($save_dir, 0777, true)) {
            return array('file_name' => '', 'save_path' => '', 'error' => 5);
        }
        //獲取遠程文件所采用的方法
        if ($type) {
            $img =$this-> http_curl($url);
            !$img && $img = $this->http_curl($url);
            !$img && $img = $this->http_curl($url);
        } else {
            ob_start();
            readfile($url);
            $img = ob_get_contents();
            ob_end_clean();
        }
        //$size=strlen($img);

//        dump($img);die;/
        //文件大小

//        dump($save_dir.$filename);die;
        $fp2 = @fopen($save_dir . $filename, 'a');
        fwrite($fp2, $img);
        fclose($fp2);
        unset($img, $url);
        return array('file_name' => $filename, 'save_path' => str_replace('./', '/', $save_dir . $filename), 'error' => 0);
    }


    function http_curl($url)
    {

        $ch = curl_init();
        $timeout = 5;
        $aHeader = array('Referer: https://www.baidu.com/');
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        $img = curl_exec($ch);
        curl_close($ch);
        return $img;
    }


}

相關知識點: 小碗熊cms5.0 小碗熊cms5.0api
本站文章均為蜀戎網絡摘自權威資料,書籍,或網絡原創文章,如有版權糾紛或者違規問題,請即刻聯系我們刪除,未經允許禁止復制轉載!感謝...

在線
客服

在線客服服務時間:9:00-21:00

客服
熱線

13227777380
7*24小時客服服務熱線

客服
微信

掃一掃微信咨詢
頂部
最近2019年免费中文字幕电影,最近更新2018中文国语字幕,最近中文字幕2018高清一页,一二三四免费观看视频中文版在线宜宾蜀戎网络公司