发新帖

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

axiuno 9月前 5227

<?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();
	}
}
?>


最新回复 (20)
小野猫_1472897325 9月前
1
支持老大  嘿嘿  老大真是好人啊
aciaos 9月前
2
放在  tool  這個目錄就ok了嗎
哈  我竟然看不太懂了 
tool/save_remote_image.php

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


朱哥_1473071489 6月前
11
直接放在tool没反应???请教。。。
itopidea 6月前
12
mark
git311 5月前
13
为什么不做成插件的形式呢。那样更方便些吧
ehgo 3月前
14
好东东
khorchin 2月前
15
这个东西在PHP7下怎么用啊?我无论如何都启动不了PDO
老雷 2月前
16
手机发图怎么解决
伏笔主机 2月前
17
谢谢分享
POP丶臧 7天前
18
老大,出个怎么用的教程吧
POP丶臧 7天前
19
可以使用,不过帖子太多一直超时,能不能分批处理呢
银角大王 5天前
20
Xiuno  BBS  4.0  本地化图片的小程序,marker备用
返回