易优cms php远程获取文章数据,定时发布文章

易优cms php远程获取文章数据,定时发布文章

来源:帝国CMS模板网 作者:终止符 时间:2026-07-07
浏览:27 收藏 点赞(0)
简介:PHP远程获取文 章数据,再发布到自己网站! 自带优化双标题 自带关键词分词 自动给文 章插入图片 自带ta g聚合 自动更新首页缓存 配合宝塔计划任务可以实现自动化更新 代码:

PHP远程获取文 章数据,再发布到自己网站!

自带优化双标题

自带关键词分词

自动给文 章插入图片

自带ta g聚合

自动更新首页缓存

配合宝塔计划任务可以实现自动化更新

代码:

<?php
// token验证
$token = md5('你的密钥');
// echo $token;
if($_GET['token']  !== $token){
    echo '非法请求';
    die();
}
// 获取远程数据
$api = get_api('https://你的接口/e/api/juzi.php?token='.$token);
if(empty($api)){
    echo json_encode(['code'=>'404','message'=>'发布失败,获取内 容为空!']);die();
}

// 匹配双标题
$api2 = getBaiduSuggestion($api['data']['title']);
if(!empty($api2)){
    $api['data']['title'] .= "($api2)";
}
// 关键词
$api3 = get_api("http://py.4s5.cn/jieba?title=".urlencode($api['data']['title']));
$keywords = '';
if(!empty($api3)){
    $keywords = implode(',',$api3);
}

$api['data']['content'] = insertImage($api['data']['content']);
// echo $api['data']['content'];die;

// 定 义数据库连接的参数
$database = require('../application/database.php');

// 创建数据库连接
$connection = mysq li_connect($database['hostname'], $database['username'], $database['password'], $database['database']);

// 检查连接是否成功
if (!$connection) {
    die("数据库连接失败: " . mysq li_connect_error());
}

// 设置字 符集
mysq li_set_charset($connection, "utf8");
// 查询数据库中的数据
$sq lQuery = "SELECT * FROM `ey_arctype` WHERE `tempview` != ' ' AND `is_part` = 0 AND `is_del` = 0";
$result = mysq li_query($connection, $sq lQuery);

if (mysq li_num_rows($result) > 0) {
  // 输出数据
  while ($row = mysq li_fetch_assoc($result)) {
      $typeid[] =$row['id']; 
  }
} else {
  die('栏目不存在!');
}

        
// 构建文 章数据数组
$data = [
    'typeid' => $typeid[mt_rand(0,(count($typeid)-1))],
    'channel' => '1',
    'title' => $api['data']['title'],
    'litpic' => '/uploads/allimg/20241010/'.md5(mt_rand(1,106)).'.jpg',
    'seo_keywords' => $keywords,
    'seo_description' => mb_substr(strip_ta gs($api['data']['content']), 0, 160, 'utf-8'),
    'attrlist_id' => 0,
    'sort_order' => time(),
    'add_time' => time(),
    'update_time' => time()
];

// 构建文 章 内 容数据数组
$contentData = [
    'content' => $api['data']['content'],
    'add_time' => time(),
    'update_time' => time()
];
// 设置数据主表的文 章数据
$query = "INSERT INTO `ey_archives` (`aid`, `typeid`, `channel`, `title`, `litpic`, `seo_keywords`, `seo_description`, `attrlist_id`, `sort_order`, `add_time`, `update_time`) VALUES (NULL, '{$data['typeid']}', '{$data['channel']}', '{$data['title']}', '{$data['litpic']}', '{$data['seo_keywords']}', '{$data['seo_description']}', '{$data['attrlist_id']}', '{$data['sort_order']}', '{$data['add_time']}', '{$data['update_time']}')";

// 执行插入操作,并获取插入成功的id
$result = mysq li_query($connection, $query);
if ($result) {
    $insertedId = mysq li_insert_id($connection);

    // 设置数据副表的文 章数据
    $contentQuery = "INSERT INTO `ey_article_content` (`id`, `aid`, `content`, `add_time`, `update_time`) VALUES (NULL, '$insertedId', '{$contentData['content']}', '{$contentData['add_time']}', '{$contentData['update_time']}')";

    // 执行插入操作
    $contentResult = mysq li_query($connection, $contentQuery);
    if ($contentResult) {
        // 插入成功
        echo '文 章发布成功:'.$api['data']['title'].' 栏目ID:'.$data['typeid'].'<br>';
        //更新ta g的关系
        if(!empty($api3)){
            foreach ($api3 as $v) {
                 // 查询ta g字段是否存在
                $sq l = "SELECT * FROM ey_ta gindex WHERE ta g = '{$v}'";
                $result2 = $connection->query($sq l);
                
                if ($result2->num_rows > 0) {
                    $rt = mysq li_fetch_assoc($result2);
                    // ta g字段存在,执行其他操作
                    // echo "ta g字段【{$v}】已存在<br>";
                    $ta gid = $rt['id'];
                } else {
                    // ta g字段不存在,插入新记录
                    $ta g = $v; // 要插入的ta g值
                
                    // 获取当前时间
                    $addTime = time(); // 当前时间
                
                    // 插入新记录
                    $insertSql = "INSERT INTO `ey_ta gindex` (`id`, `ta g`, `typeid`,  `count`, `total`, `weekcc`, `monthcc`, `weekup`, `monthup`, `is_common`, `lang`, `add_time`, `update_time`) VALUES (NULL, '$ta g', '{$data['typeid']}', '0', '2', '0', '0', '$addTime', '$addTime', '0', 'cn', '$addTime', '$addTime')";
                
                    if ($connection->query($insertSql) === TRUE) {
                        // echo "新TAG已成功插入<br>";
                    } else {
                        echo "<br>插入新TAG失败: " . $connection->error;
                    }
                    $ta gid = mysq li_insert_id($connection);
                }
                // 插入ta g关系
                $sq l = "SELECT * FROM ey_ta glist WHERE aid = '{$insertedId}' and ta g = '{$v}'";
                $result3 = $connection->query($sq l);
                
                if ($result3->num_rows > 0) {
                    $rt = mysq li_fetch_assoc($result3);
                    // ta g字段存在,执行其他操作
                    // echo "ta g关系【{$v}】已存在<br>";
                } else {
                    // ta g关系字段不存在,插入新记录
                    $ta g = $v; // 要插入的ta g值
                    $updateTime = time(); // 当前时间作为update_time字段的值
                    
                    // 构建插入S Q L语句
                    $sq l = "INSERT INTO `ey_ta glist` (`tid`, `aid`, `typeid`, `ta g`, `arcrank`, `lang`, `add_time`, `update_time`) VALUES ('$ta gid', '{$insertedId}', '{$data['typeid']}', '$v', '0', 'cn', '$updateTime', '$updateTime') ";
                    
                    // 执行插入操作
                    if ($connection->query($sq l) === TRUE) {
                    } else {
                        echo "<br>插入新TAG关系失败: " . $connection->error;
                    }
                }
            }
        }
        
        // 清除缓存
        $cacheDIR= '../data/runtime/html/https/index/';
        // print_r($cacheDIR);
        $files =glob($cacheDIR . '*/*.html');
        if(!empty($files)){
            foreach ($files as $v){
                if(unlink($v)){
                }else{
                    echo "<br>删除缓存文件失败:{$v}";
                }
            }
        }
        
    } else {
        // 插入失败
        echo '插入失败' . mysq li_error($connection) . '<br>';
    }
} else {
    // 插入失败
    echo '插入失败' . mysq li_error($connection) . '<br>';
}
// 关闭数据库连接
mysq li_close($connection);



function get_api($durl, $cache = 0)
{
    // 初始化cURL会话
    $ch = curl_init();

    // 设置cURL选项
    curl_setopt($ch, CURLOPT_URL, $durl);          // 设置请求的URL
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);          // 设置超时时间为5秒
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   // 将结果通过变量返回,而不是直接输出

    // 获取Referer的主机部分
    $referer_host = parse_url($durl, PHP_URL_SCHEME) . '://' . parse_url($durl, PHP_URL_HOST);
    curl_setopt($ch, CURLOPT_REFERER, $referer_host);  // 设置Referer头,指定来源主机部分

    // 模拟浏览器访问的相关选项
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windo ws NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.9999.999 Safari/537.36');  // 设置User-Agent头,模拟浏览器
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Accept: application/json',
    'Content-Type: application/json; charset=utf-8'
    ));
    
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    // 执行请求并获取响应结果
    $r = curl_exec($ch);

    // 关闭cURL会话
    curl_close($ch);

    // 解析JSON格式的响应结果,并返回解析后的数组
    return json_decode($r, true);
}

function getBaiduSuggestion($title) {
    // 如果$title超过7个字 符,则截取前7个字 符
    if (mb_strlen($title, 'utf-8') > 7) {
        $title = mb_substr($title, 0, 7, 'utf-8');
    }
    $title = urlencode($title);
    $api = "https://www.baidu.com/sugrec?pre=1&p=1&ie=utf-8&prod=pc&csor=2&wd=".$title."";

    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $api,
        CURLOPT_TIMEOUT => 5,
        CURLOPT_RETURNTRANSFER => true,
    ]);

    $r = curl_exec($ch);
    curl_close($ch);

    $r = json_decode($r, true);

    if (!empty($r['g'])) {
        $suggestions = array_column($r['g'], 'q');
        $randomIndex = array_rand($suggestions);
        return $suggestions[$randomIndex];
    } else {
        return false;
    }
}

function insertImage($content) {
    preg_match_all('/<\/p>/', $content, $matches, PREG_OFFSET_CAPTURE);
   $content = str_replace('<h2>','<h3>',$content);
    $content = str_replace('</h2>','</h3>',$content);
    // 如果存在 </p> 标签
    if (!empty($matches[0])) {
        $count = count($matches[0]); // </p> 标签的数量
        
        // 对每个匹配位置应用回调函数
        $content = preg_replace_callback(
            '/<\/p>/',
            function($match) {
                static $insertCount = 0;
                $insertCount++;
                
                // 每隔五个 </p> 插入一张图片
                if ($insertCount % 5 == 0) {
                    return $match[0] . '<p style="text-align:center"><img src="/uploads/allimg/20241010/'.md5(mt_rand(1,106)).'.jpg"></p>';
                } else {
                    return $match[0];
                }
            },
            $content,
            $count - 1 // 限制替换次数为匹配到的 </p> 标签数量减一
        );
    }

    return $content;
}
在线
客服