prefix . 'torrent_links'; $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, post_id mediumint(9) NOT NULL, torrent_link varchar(255) NOT NULL, UNIQUE KEY id (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } // 插件停用时执行的函数 function torrent_mac_deactivate() { // 删除自定义数据库表 global $wpdb; $table_name = $wpdb->prefix . 'torrent_links'; $sql = "DROP TABLE IF EXISTS $table_name;"; $wpdb->query($sql); } // 添加自定义的Meta Box add_action('add_meta_boxes', 'torrent_mac_add_meta_box'); function torrent_mac_add_meta_box() { // 添加自定义Meta Box到文章编辑页面 add_meta_box('torrent_mac_meta_box', 'Torrent Link', 'torrent_mac_meta_box_callback', 'post', 'normal', 'high'); } // 自定义Meta Box的回调函数 function torrent_mac_meta_box_callback($post) { // 获取文章对应的torrent链接 global $wpdb; $table_name = $wpdb->prefix . 'torrent_links'; $results = $wpdb->get_results("SELECT torrent_link FROM $table_name WHERE post_id = $post->ID"); if (count($results) > 0) { $torrent_link = $results[0]->torrent_link; } else { $torrent_link = ''; } // 显示Meta Box的HTML表单 echo ''; } // 保存文章时执行的钩子函数 add_action('save_post', 'torrent_mac_save_post'); function torrent_mac_save_post($post_id) { // 保存文章时更新对应的torrent链接 if (isset($_POST['torrent_link'])) { global $wpdb; $table_name = $wpdb->prefix . 'torrent_links'; $torrent_link = $_POST['torrent_link']; $results = $wpdb->get_results("SELECT * FROM $table_name WHERE post_id = $post_id"); if (count($results) > 0) { $wpdb->update($table_name, array('torrent_link' => $torrent_link), array('post_id' => $post_id)); } else { $wpdb->insert($table_name, array('post_id' => $post_id, 'torrent_link' => $torrent_link)); } } } // 添加WordPress Cron Job,每小时执行一次 add_action('torrent_mac_cron_job', 'torrent_mac_cron_job_callback'); function torrent_mac_cron_job_callback() { // 获取最新的文章链接 $response = wp_remote_request('https://www.torrentmac.net/category/applications/'); if (is_wp_error($response)) { // 请求错误处理 error_log('Error scraping TorrentMac: ' . $response->get_error_message()); return; } $body = wp_remote_retrieve_body($response); $dom = new DOMDocument(); @$dom->loadHTML($body); $xpath = new DOMXPath($dom); $articles = $xpath->query('//article'); $latest_article = $articles->item(0); $latest_article_link = $latest_article->getElementsByTagName('a')->item(0)->getAttribute('href'); // 检查是否已经发布过最新的文章 $existing_post_id = url_to_postid($latest_article_link); if ($existing_post_id) { // 如果已经发布过,直接返回 return; } // 获取最新的文章标题、内容和torrent文件链接 $latest_article_title = $latest_article->getElementsByTagName('h2')->item(0)->textContent; $latest_article_content = $latest_article->getElementsByTagName('div')->item(0)->textContent; $latest_article_response = wp_remote_request($latest_article_link, array( 'headers' => array( 'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 'Referer' => 'https://www.torrentmac.net/', ), )); if (is_wp_error($latest_article_response)) { // 请求错误处理 error_log('Error scraping TorrentMac: ' . $latest_article_response->get_error_message()); return; } $latest_article_body = wp_remote_retrieve_body($latest_article_response); @$latest_article_dom->loadHTML($latest_article_body); $latest_article_dom = new DOMDocument(); $latest_article_dom->loadHTML($latest_article_body); $latest_article_xpath = new DOMXPath($latest_article_dom); $latest_article_torrent_link = $latest_article_xpath->query('//a[contains(@href, ".torrent")]')->item(0)->getAttribute('href'); // 下载torrent文件 $torrent_file = wp_remote_get($latest_article_torrent_link); if (is_wp_error($torrent_file)) { // 请求错误处理 error_log('Error downloading torrent file: ' . $torrent_file->get_error_message()); return; } // 将torrent文件保存到本地 $upload_dir = wp_upload_dir(); $file_path = $upload_dir['path'] . '/' . basename($latest_article_torrent_link); file_put_contents($file_path, $torrent_file['body']); // 创建WordPress文章 $post_id = wp_insert_post(array( 'post_title' => $latest_article_title, 'post_content' => $latest_article_content, 'post_status' => 'publish', )); // 添加torrent链接到自定义段 update_post_meta($post_id, 'torrent_link', $file_path); } // 注册WordPress Cron Job add_action('wp', 'torrent_mac_register_cron_job'); function torrent_mac_register_cron_job() { if (!wp_next_scheduled('torrent_mac_cron_job')) { wp_schedule_event(time(), 'hourly', 'torrent_mac_cron_job'); } } 下面直接给代码和中文注释利用WordPress的wp_remote_request 等函数 获取远程httpswwwtorrentmacnetcategoryapplications页面上的链接需要伪造user-agent 和referer 等信息然后采集到文章标题、内容和torrent文件处理请求错误如果成功调用函数将torrent文件保存到本地后添加本地链接到自定义段torrent_link中并发表WordPress文章。

原文地址: http://www.cveoy.top/t/topic/B1Y 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录