教你关于unraid nas开源相册piwigo 中文名及自动同步的方法教程
关于piwigo安装、设置请参考铁茄子的这两篇文章,我也是看了他的文章后安装的,在此表示感谢。本文是自己使用中遇到的问题和解决方案,因在原帖回复可能说不清楚,故单独发一篇。
以下说明根据unraid docker安装piwigo为例,用群晖的可以参考。
1、让piwigo支持中文目录名和文件名
安装过LocalFiles Editor的话(强烈建议安装),登录admin账户-插件-LocalFiles Editor-本地配置,修改$conf[&39;] = &39;;为$conf[&39;] = &39;;
注:1.最后的;号不要漏了
2.x00-xff在正则表达式里表示双字节字符,理论上支持其他双字节语言文件名。之前用过表示中文的u4e00-u9fa5,不知为何没有成功。
2、使用nas上原有目录做为相册
首先,编辑piwigo的docker设置。把nas上原有目录指定为piwigo的/config/www/gallery/galleries目录。比如我原有图片的目录是/mnt/user/Documents/admin/files/Photos,这样设置后Photos目录下的二级目录会做为相册目录。
仅仅设置目录并不能直接在相册里显示,需要进行同步。同样admin账户登录piwigo后,工具-同步,选择目录+文件,取消勾选模拟,点击提交。
成功后会有如下类似提示,如果不成功也会有出错内容提示。
3、自动同步
来源:第二条中设为同步的目录,如果有图片更新,可以利用脚本自动同步。官方开发者plg给的perl脚本,unraid上perl倒是能装上,还需要libwww-perl这个不会装。回帖里Danny Ouellet提供了php脚本,测下来可行。把以下内容存为.php文件,前面几行的$baseurl,$username,$password修改为自己的url,用户名和密码,上传到nas,在终端执行php /目录/名字.php ,如果没有问题的话,unraid可以通过user scripts插件定时执行,或者用crontab。
$username,
&39; => $password,
&39; => &39;,
&39; => &39;
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.&39;.$value.&39;; }
rtrim($fields_string, &39;);
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
$cookieJar = &39;;
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookieJar);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookieJar);
curl_exec($ch);
curl_close ($ch);
unset($ch);
$url = $baseurl.&39;;
$fields = array(
&39; => urlencode(&39;),
&39; => urlencode(&39;),
&39; => urlencode(&39;),
&39; => urlencode(&39;)
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.&39;.$value.&39;; }
rtrim($fields_string, &39;);
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookieJar);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookieJar);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_exec($ch);
curl_close ($ch);
unset($ch);
>
|