Xiuno BBS 4.0 本地化图片的小程序 4.0

axiuno 2016-9-7 7084

<?php
/*
	Xiuno BBS 4.0 本地化图片程序
	
	将文件存放于 tool/save_remote_image.php
	cd tool/
	php save_remote_image.php
	
	该脚本可以一直执行,可以放到后台运行:
	nohup php save_remote_image.php&
*/
// 配置不进行抓取的 URL
$localurlarr = array(
	'http://bbs.xiuno.com/',
	'http://plugin.xiuno.com/',
);
ob_implicit_flush(0);
set_time_limit(0);
define('SKIP_ROUTE', 1);
include '../index.php';
$lastpid = intval(kv_get('save_last_pid'));
xn_mkdir($conf['upload_path']."remote/");
//$types = array(1=>'gif', 2=>'jpg', 3=>'png', 4=>'swf', 5=>'psd', 6=>'bmp');
while(1) {
	
	// 创建目录
	$day = date('Ymd', time());
	$attach_dir = $conf['upload_path']."attach/$day/";
	$attach_url = $conf['upload_url']."attach/$day/";
	xn_mkdir($attach_dir);
	// 获取帖子
	$postlist = db_find('post', array('pid'=>array('>'=>$lastpid)), array('pid'=>1), 1, 10);
	foreach($postlist as $post) {
		$pid = $post['pid'];
		$tid = $post['tid'];
		$uid = $post['uid'];
		$s = $post['message_fmt'];
		preg_match_all('#<img[^>]+src="(http://.*?)"#i', $s, $m);
		if(!empty($m[1])) {
			$n = 0;
			foreach($m[1] as $url) {
				foreach($localurlarr as $localurl) {
					if($localurl == substr($url, 0, strlen($localurl))) continue 2;
				}
				$ext = file_ext($url);
				if(!in_array($ext, array('gif', 'jpg', 'png', 'bmp'))) continue;
				$filename = xn_rand(16).'.'.$ext;
				$destpath = $attach_dir.$filename;
				$desturl = $attach_url.$filename;
				$s2 = str_replace($url, $desturl, $s);
				if($s != $s2) {
					$imgdata = file_get_contents($url);
					$filesize = strlen($imgdata);
					if($filesize < 10) continue;
					file_put_contents_try($destpath, $imgdata);
					list($width, $height) = getimagesize($destpath);
					$attach = array(
						'tid'=>$tid,
						'pid'=>$pid,
						'uid'=>$uid,
						'filesize'=>$filesize,
						'width'=>$width,
						'height'=>$height,
						'filename'=>"$day/$filename",
						'orgfilename'=>$filename,
						'filetype'=>'image',
						'create_date'=>$time,
						'comment'=>'',
						'downloads'=>0,
						'isimage'=>1
					);
					$s = $s2;
					$aid = attach_create($attach);
					$n++;
				}
			}
			post__update($pid, array('message_fmt'=>$s, 'images'=>($post['images'] > 0 ? $post['images'] : $n)));
		}
		$lastpid = $pid;
		kv_set('save_last_pid', $lastpid);
		echo '.';
		flush();
	}
	if(IN_CMD) {
		function_exists('sleep') AND sleep(1);
	} else {
		if(empty($postlist)) {
			echo '<h1>本地化完毕</h1>';
		}
		echo '<script>window.location.reload();</script>';
		flush();
	}
}
?>


最新回复 (22)
  • 2
    支持老大  嘿嘿  老大真是好人啊
  • aciaos 2016-9-11 0
    3
    放在  tool  這個目錄就ok了嗎
    哈  我竟然看不太懂了 
    tool/save_remote_image.php

    竟然我放上去  沒反應  >_<
  • macbbs 2016-9-12 0
    4
    不能收藏啊!我想收藏这个
  • shvv 2016-9-27 0
    5
  • tanzeyun 2016-10-4 0
    6
    做好直接让我们下载装多好,没看懂
  • 小胡老师 2016-10-8 0
    7
    不错~
  • zc0727 2016-11-21 0
    8
    叫我这个小白  情何以堪啊...看不懂#24
  • ggmm 2016-11-22 0
    9
    学习
  • Winson 2016-11-26 0
    10
    留言标记
  • niuzheng12 2016-11-26 0
    11


  • 12
    直接放在tool没反应???请教。。。
  • itopidea 2016-12-14 0
    13
    mark
  • git311 2017-1-17 0
    14
    为什么不做成插件的形式呢。那样更方便些吧
  • ehgo 11月前 0
    15
    好东东
  • khorchin 10月前 0
    16
    这个东西在PHP7下怎么用啊?我无论如何都启动不了PDO
  • 老雷 10月前 0
    17
    手机发图怎么解决
  • 伏笔主机 10月前 0
    18
    谢谢分享
  • POP丶臧 8月前 0
    19
    老大,出个怎么用的教程吧
  • POP丶臧 8月前 0
    20
    可以使用,不过帖子太多一直超时,能不能分批处理呢
  • 21
    Xiuno  BBS  4.0  本地化图片的小程序,marker备用
  • shvv 7月前 0
    22
  • xwm 6月前 0
    23
    这个是在php多少的环境下运行的。我用的php5.6第一次运行下面几个点,不会停止。然后强行结束了以后第二次运行就一个点都不显示
返回
发新帖
HTTP/1.1 502 Bad Gateway Content-Type: text/html Connection: close Content-Length: 308 Date: Fri, 23 Feb 2018 22:20:17 GMT X-Via: 1.1 localhost.localdomain (random:844266 Fikker/Webcache/3.7.4) 502 Bad Gateway

502 Bad Gateway - Cann't Connect To Upstream Server By SSL Read

Server: localhost.localdomain
Date: 2018-02-23 22:20:17

Fikker/Webcache/3.7.4