请选择 进入手机版 | 继续访问电脑版
香港到内陆最快网络

随随便便

 找回密码
 立即注册
搜索
查看: 148|回复: 0

[增涨姿势] Chevereto免费鉴黄接口

[复制链接]

23

主题

29

帖子

148

积分

管理员

风骚的小马哥

Rank: 9Rank: 9Rank: 9

积分
148
发表于 2020-5-11 11:31:32 | 显示全部楼层 |阅读模式

请注册后查看详细

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Chevereto免费鉴黄接口




图床程序:Chevereto
官网: https://chevereto.com/
价格: 单域名-24美金 | 多域名-48美金




鉴黄接口:ModerateContent
官网: https://moderatecontent.com/
价格: 公用资源-免费 | 独享资源-100万张/100美金(公用资源速度比较慢1.2~1.8S,收费资源平均0.6秒、3层监控、8数据中心可选)




对接方式:
安装Chevereto
在ModerateContent申请免费接口获取KEY

使用ModerateContent的免费套餐,通过ModerateContent的API接口,使你的Chevereto自动审核图片是否为成人内容,从而阻止或强制标记为NSFW.

                               
登录/注册后可看大图



1.修改Chevereto程序文件app/lib/classes/class.upload.php [412行]
  1.     // Size
  2.     if (!$this->options['max_size']) {
  3.         $this->options['max_size'] = self::getDefaultOptions()['max_size'];
  4.     }
  5.     if ($this->source_image_fileinfo["size"] > $this->options["max_size"]) {
  6.         throw new UploadException("File too big - max " . G\format_bytes($this->options["max_size"]), 313);
  7.     }

  8.     // BMP?
  9.     if ($this->source_image_fileinfo['extension'] == 'bmp') {
  10.         $this->ImageConvert = new ImageConvert($this->downstream, "png", $this->downstream);
  11.         $this->downstream = $this->ImageConvert->out;
  12.         $this->source_image_fileinfo = G\get_image_fileinfo($this->downstream);
  13.     }

  14.     // MODERATECONTENT PLUGIN
  15.     // MODERATECONTENT PLUGIN
  16.     // MODERATECONTENT PLUGIN
  17.     if (intval(Settings::get('moderatecontent')) != 0 && intval(Settings::get('moderatecontent_action_block_upload')) != 0){
  18.       require_once CHV_APP_PATH_LIB_VENDOR . 'moderatecontent/moderatecontent.php';
  19.       $response = ModerateContent::moderate_image($this->downstream);
  20.       if ($response->error_code == 0 && $response->moderation->rating_letter == "a"){
  21.         throw new UploadException("This image contains adult content", 1404);
  22.       }
  23.       if ($response->error_code == 0 && $response->moderation->rating_letter == "t" && intval(Settings::get('moderatecontent_include_teen')) != 0){
  24.         throw new UploadException("This image contains adult content", 1404);
  25.       }
  26.     }
  27.     // MODERATECONTENT PLUGIN
  28.     // MODERATECONTENT PLUGIN
  29.     // MODERATECONTENT PLUGIN
  30. }

  31. // Handle flood uploads
  32. protected static function handleFlood()
  33. {
  34.     $logged_user = Login::getUser();
复制代码


2.修改Chevereto程序文件app/lib/classes/class.image.php [1030行]
  1. public static function insert($image_upload, $values=[])
  2.     {
  3.         try {
  4.             $table_chv_image = self::$table_chv_image;
  5.             foreach ($table_chv_image as $k => $v) {
  6.                 $table_chv_image[$k] = 'image_' . $v;
  7.             }

  8.             // Remove eternal/useless Exif MakerNote
  9.             if ($image_upload['source']['image_exif']['MakerNote']) {
  10.                 unset($image_upload['source']['image_exif']['MakerNote']);
  11.             }

  12.             $original_exifdata = $image_upload['source']['image_exif'] ? json_encode(G\array_utf8encode($image_upload['source']['image_exif'])) : null;

  13.             // Fix some values
  14.             $values['nsfw'] = in_array(strval($values['nsfw']), ['0','1']) ? $values['nsfw'] : 0;

  15.             // MODERATECONTENT PLUGIN
  16.             // MODERATECONTENT PLUGIN
  17.             // MODERATECONTENT PLUGIN
  18.             if (intval(Settings::get('moderatecontent')) != 0 && intval($values['nsfw']) != 1 && intval(Settings::get('moderatecontent_action_flag_nsfw')) != 0){
  19.               require_once CHV_APP_PATH_LIB_VENDOR . 'moderatecontent/moderatecontent.php';
  20.               $response = ModerateContent::moderate_image($image_upload['uploaded']['file']);
  21.               if ($response->error_code == 0){
  22.                 if ($response->moderation->rating_letter == "a"){
  23.                   $values['nsfw'] = '1';
  24.                 }
  25.                 if ($response->moderation->rating_letter == "t" && intval(Settings::get('moderatecontent_include_teen')) != 0){
  26.                   $values['nsfw'] = 1;
  27.                 }
  28.               }
  29.             }
  30.             // MODERATECONTENT PLUGIN
  31.             // MODERATECONTENT PLUGIN
  32.             // MODERATECONTENT PLUGIN
复制代码


3.修改Chevereto程序文件app/lib/classes/class.image.php [1112行]
  1. public static function update($id, $values)
  2.     {
  3.         try {
  4.             $values = G\array_filter_array($values, self::$table_chv_image, 'exclusion');

  5.             foreach (['title', 'description', 'category_id', 'album_id'] as $v) {
  6.                 if (!array_key_exists($v, $values)) {
  7.                     continue;
  8.                 }
  9.                 G\nullify_string($values[$v]);
  10.             }
  11.             // MODERATECONTENT PLUGIN
  12.             // MODERATECONTENT PLUGIN
  13.             // MODERATECONTENT PLUGIN
  14.             if (intval(Settings::get('moderatecontent')) != 0 && intval($values['nsfw']) != 1 && intval(Settings::get('moderatecontent_action_flag_nsfw')) != 0){
  15.               require_once CHV_APP_PATH_LIB_VENDOR . 'moderatecontent/moderatecontent.php';
  16.               $image_db = self::getSingle($id, false, false);
  17.               $image_path = $image_db['file_resource']['chain']['image'];
  18.               $response = ModerateContent::moderate_image($image_path);
  19.               if ($response->error_code == 0){
  20.                 if ($response->moderation->rating_letter == "a"){
  21.                   $values['nsfw'] = 1;
  22.                 }
  23.                 if ($response->moderation->rating_letter == "t" && intval(Settings::get('moderatecontent_include_teen')) != 0){
  24.                   $values['nsfw'] = 1;
  25.                 }
  26.               }
  27.             }
  28.             // MODERATECONTENT PLUGIN
  29.             // MODERATECONTENT PLUGIN
  30.             // MODERATECONTENT PLUGIN
复制代码


4.修改Chevereto程序文件 app/themes/Peafowl/views/dashboard.php [2172行]
如果你没有使用[Peafowl]主题,那么你必须找到你正在使用的主题并正确的此代码插入插入到dashboard.php文件中.
  1. <hr class="line-separator"></hr>
  2.             <div class="input-label">
  3.                 <label for="cloudflare">Cloudflare</label>
  4.                 <div class="c5 phablet-c1"><select type="text" name="cloudflare" id="cloudflare" class="text-input"  >
  5.                     <?php
  6.                         echo CHV\Render\get_select_options_html([1 => _s('Enabled'), 0 => _s('Disabled')], CHV\Settings::get('cloudflare')); ?>
  7.                 </select></div>
  8.                 <div class="input-below"><?php echo read_the_docs(['%s' => 'CloudFlare', '%k' => 'cloudflare']); ?></div>
  9.             </div>

  10.       <!-- MODERATECONTENT PLUGIN -->
  11.       <!-- MODERATECONTENT PLUGIN -->
  12.       <!-- MODERATECONTENT PLUGIN -->
  13.             <hr class="line-separator"></hr>
  14.             <div class="input-label">
  15.                 <label for="moderatecontent">ModerateContent</label>
  16.                 <div class="c5 phablet-c1"><select type="text" name="moderatecontent" id="moderatecontent" class="text-input" data-combo="moderatecontent-combo">
  17.                     <?php
  18.                         echo CHV\Render\get_select_options_html([1 => _s('Enabled'), 0 => _s('Disabled')], CHV\Settings::get('moderatecontent')); ?>
  19.                 </select></div>
  20.                 <div class="input-below"><?php echo read_the_docs(['%s' => 'ModerateContent', '%k' => 'moderatecontent']); ?></div>
  21.             </div>
  22.       <div id="moderatecontent-combo" class="c12 phablet-c1">
  23.                     <div class="input-label">
  24.                         
  25.             <div data-combo-value="1" class="switch-combo<?php if (CHV\Settings::get('moderatecontent') == 0) { echo ' soft-hidden';} ?>">
  26.                
  27.               <div style="float:left;">
  28.                 <label for="moderatecontent_key">ModerateContent API Key</label>
  29.                 <input type="text" name="moderatecontent_key" id="moderatecontent_key" class="text-input" value="<?php echo CHV\Settings::get('moderatecontent_key', true); ?>" placeholder="">
  30.                 <div id="moderatecontent_key_error_msg" class="red-warning"></div>
  31.                 <div id="moderatecontent_key_msg" class="input-below" style="color:green;"></div>
  32.               </div>
  33.               <div style="float:left;max-width:100px;">
  34.                 <button id="moderatecontent_key_sign_up" class="btn btn-input" type="button" style="height: 50px;line-height: 18px; margin-left: 4px;margin-top: 7px;"><?php _se('Get FREE API Key'); ?></button>
  35.               </div>
  36.               <div style="clear:both;"></div>

  37.               <div style="margin-top: 10px;">
  38.                 <label for="moderatecontent_action_block_upload">ModerateContent Action - Block Upload</label>
  39.                 <div class="c5 phablet-c1"><select type="text" name="moderatecontent_action_block_upload" id="moderatecontent_action_block_upload" class="text-input">
  40.                   <?php echo CHV\Render\get_select_options_html([1 => _s('Enabled'), 0 => _s('Disabled')], CHV\Settings::get('moderatecontent_action_block_upload')); ?>
  41.                 </select></div>
  42.               </div>

  43.               <div style="margin-top: 10px;">
  44.                 <label for="moderatecontent_action_flag_nsfw">ModerateContent Action - Flag as NSFW (Adult Image) in Database</label>
  45.                 <div class="c5 phablet-c1"><select type="text" name="moderatecontent_action_flag_nsfw" id="moderatecontent_action_flag_nsfw" class="text-input">
  46.                   <?php echo CHV\Render\get_select_options_html([1 => _s('Enabled'), 0 => _s('Disabled')], CHV\Settings::get('moderatecontent_action_flag_nsfw')); ?>
  47.                 </select></div>
  48.               </div>

  49.               <div style="margin-top: 10px;">
  50.                 <label for="moderatecontent_include_teen">Include (Teen Image) as blocked images</label>
  51.                 <div class="c5 phablet-c1"><select type="text" name="moderatecontent_include_teen" id="moderatecontent_include_teen" class="text-input">
  52.                   <?php echo CHV\Render\get_select_options_html([1 => _s('Enabled'), 0 => _s('Disabled')], CHV\Settings::get('moderatecontent_include_teen')); ?>
  53.                 </select></div>
  54.               </div>

  55.             </div>
  56.                     </div>
  57.           <?php
  58.               require_once CHV_APP_PATH_LIB_VENDOR . 'moderatecontent/moderatecontent.php';     
  59.               echo CHV\ModerateContent::ajax_sign_up_script_render();
  60.               ?>
  61.             </div>
  62.       <!-- MODERATECONTENT PLUGIN -->
  63.       <!-- MODERATECONTENT PLUGIN -->
  64.       <!-- MODERATECONTENT PLUGIN -->

  65.             <?php
  66.                 } ?>

  67.             <?php if (get_settings()['key'] == 'api') {
复制代码


5.创建目录: app/vendor/moderatecontent/

6.创建新的PHP文件moderatecontent.php,目录为: app/vendor/moderatecontent/moderatecontent.php 内容为↓
  1. <?php
  2. // MODERATECONTENT PLUGIN
  3. // MODERATECONTENT PLUGIN
  4. // MODERATECONTENT PLUGIN
  5. namespace CHV;

  6. class ModerateContent{
  7.   public static function moderate_image($local_file){
  8.     $response = (object)[];
  9.     $response->moderation = Null;
  10.     $response->error_msg = '';
  11.     $response->error_code = 0;
  12.     $response->local_file = $local_file;
  13.     $response->key = Settings::get('moderatecontent_key');

  14.     if (!file_exists($response->local_file)){
  15.       $response->error_msg = 'Local file could not be found';
  16.       $response->error_code = 1400;
  17.     } else if (strlen($response->key) < 8) {
  18.       $response->error_msg = 'Moderation API Key not found';
  19.       $response->error_code = 1401;
  20.     } else {

  21.       $curl = curl_init();

  22.       curl_setopt_array($curl, array(
  23.         CURLOPT_URL => "http://api.moderatecontent.com/moderate/?key=".$response->key,
  24.         CURLOPT_RETURNTRANSFER => true,
  25.         CURLOPT_ENCODING => "",
  26.         CURLOPT_MAXREDIRS => 10,
  27.         CURLOPT_TIMEOUT => 3,
  28.         CURLOPT_FOLLOWLOCATION => true,
  29.         CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  30.         CURLOPT_CUSTOMREQUEST => "POST",
  31.         CURLOPT_POSTFIELDS => array('file'=> new \CURLFile($local_file)),
  32.       ));

  33.       $curl_response = curl_exec($curl);
  34.       if ($curl_response === false){
  35.         $response->error_msg = 'Moderation server could not be reached';
  36.         $response->error_code = 1402;
  37.       } else {
  38.         $json = json_decode($curl_response);
  39.         if ($json === null && json_last_error() !== JSON_ERROR_NONE) {
  40.           $response->error_msg = 'Moderation error could be malformed image';
  41.           $response->error_code = 1403;
  42.         } else {
  43.           $response->moderation = $json;
  44.         }
  45.       }
  46.       curl_close($curl);
  47.     }
  48.     return $response;
  49.   }

  50.   public static function ajax_sign_up_script_render(){
  51.     $current_admin_email = Settings::get('email_incoming_email');
  52.     $html = "";
  53.     $html .= '<script>';
  54.     $html .= '(function() {';
  55.     $html .= 'function moderatecontent_sign_up_ajax() {';
  56.     $html .= '  var email = "'.$current_admin_email.'";';
  57.     $html .= '  var url = "https://www.moderatecontent.com/documentation/api";';
  58.     $html .= '  var xhttp = new XMLHttpRequest();';
  59.     $html .= '  xhttp.onreadystatechange = function() {';
  60.     $html .= '    if (this.readyState == 4 && this.status == 200) {';
  61.     $html .= '      var json = JSON.parse(this.responseText);';
  62.     $html .= '       if (json && json.api_key && json.api_key.length > 8){';
  63.     $html .= '         document.getElementById("moderatecontent_key").value = json.api_key;';
  64.     $html .= '         document.getElementById("moderatecontent_key_msg").innerHTML = "Success";';
  65.     $html .= '       } else {';
  66.     $html .= '         document.getElementById("moderatecontent_key_error_msg").innerHTML = "Could not sign you up at this time, please visit ModerateContent.com to manually get a key.";';
  67.     $html .= '       }';
  68.     $html .= '    }';
  69.     $html .= '  };';
  70.     $html .= '  xhttp.open("POST", url, true);';
  71.     $html .= '  xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");';
  72.     $html .= '  xhttp.send("email="+email+"&chevereto_source_flag=true");';
  73.     $html .= '}';
  74.     $html .= 'document.getElementById("moderatecontent_key_sign_up").addEventListener("click", function(){';
  75.     $html .= '  moderatecontent_sign_up_ajax();';
  76.     $html .= '});';
  77.     $html .= '})();';
  78.     $html .= '</script>';
  79.     return $html;
  80.   }
  81. }

  82. // MODERATECONTENT PLUGIN
  83. // MODERATECONTENT PLUGIN
  84. // MODERATECONTENT PLUGIN
复制代码


7.数据库表: chv_settings (注意前缀chv_为你当初安装Chevereto数据库时设定的前缀)添加4个新的项
moderatecontent
moderatecontent_key
moderatecontent_action_block_upload
moderatecontent_action_flag_nsfw
如下图所示



                               
登录/注册后可看大图



8.填写免费的KEY,在Chevereto后台设置进行管理(阻止上传或标记NSFW).

                               
登录/注册后可看大图





大功告成,Good luck!



Google AdSense   随随便便   安享图床
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|随随便便

GMT+8, 2020-5-27 07:47

Powered by SSBB

Copyright © 2020-2222, SSBB

快速回复 返回顶部 返回列表