数据发布和自动更新
我的网站首页发布了三张图,分别是当年收益率、投资组合、历史净值,其中的数据每10分钟自动更新。
实现方法是:
1、googlesheet用脚本抓取实时行情数据
2、googlesheet用脚本定时刷新
3、googlesheet中的指定图表发布到网络
4、服务器定时抓取发布的图片为本地图片
5、wordpress侧边栏小组件加载本地图片
这个过程里有几个问题,一环套一环的。
因为有墙,国内不能直接访问googlesheet发布的图片,所以我把图片先抓到境外服务器上,然后这个服务器是国内可以访问的,那么就能免翻墙了。(其实后来我又尝试过另一种免翻墙访问google发布内容的方式,就是用国外免费的cdn加速服务,加速googlesheet发布的地址,这样也实现了免翻墙,而且可以互动式查看googlesheet内容,比图片效果更好。但是,实际使用下来,速度明显不如直接抓图来得快,而且cdn分配的服务器速度可能不稳定,遂放弃这一方案。)
为了能自动更新图片,所以在服务器上设置了计划任务,每10分钟执行一个sh文件,抓取googlesheet发布的图片到本地。
抓图用wget,wget googlesheet的发布地址 -O 本地地址
这里又有个问题,googlesheet发布的地址很长,还包含?等的特殊符号,wget抓取会出错,后来发现把googlesheet的发布地址先转成短链接,可以解决这个问题。
(今天似乎是提供短链接服务的网站出了问题,然后抓的图就出错了,抓到的可能是几年前设置短链接时候,首次获取的图片。然后我现在是换了一个免费的短链接服务网站。以后可能本地自己架设一个更可靠。)
后来又发现,wget到本地的文件,有时候会是0字节,可能是网络卡了还是什么原因,所以后来每个图抓两遍。
抓到图,显示在博客侧边栏很容易,但如果是本地静态图片文件,浏览器会进行缓存,需要加个时间戳可以解决。
加时间戳的话,博客默认的小工具不行,于是安装一个支持php脚本的插件XYZ PHP,可以在编写脚本,然后在侧边栏插入。
前面说到的每个图抓两遍,显示的时候进行判断,这个也在php脚本里实现。正常显示a,如果a是0字节就显示b,如果b是0字节就显示a,如果a和b都是0字节,那就算了,让它显示出错吧。
侧边栏插入“目前持仓”图片的php代码如下,其他两个类似。
<?php
$StrA='<img src=’;
$StrAX='<a href=’;
$StrC= substr(md5(time()), 0, 4);
$StrD=’ /></a>’;
$StrDX=’ >’;
$StrB4=’https://retire50blog.wang/wp-content/uploads/xlzc.png?’;
$StrB4BK4=’https://retire50blog.wang/wp-content/uploads/xlzcbk.png?’;
$StrP4 = $StrA.$StrB4.$StrC. $StrD;
$StrP4X=$StrAX.$StrB4.$StrC. $StrDX;
$StrP4XXX= $StrP4X. $StrP4;
$StrP4BK4 = $StrA.$StrB4BK4.$StrC. $StrD;
$StrP4BK4X = $StrAX.$StrB4BK4.$StrC. $StrDX;
$StrP4BK4XXX=$StrP4BK4X.$StrP4BK4;
$url4=’./wp-content/uploads/xlzc.png’;
$url44=’./wp-content/uploads/xlzcbk.png’;
if (filesize($url4)<>0){
if(filesize($url44)<>0){
echo $StrP4XXX;
}
}
if (filesize($url4)==0){
echo $StrP4BK4XXX;
}
if(filesize($url44)==0){
echo $StrP4XXX;
}
?>
注意filesize函数输入的是本地地址,输入完整网址返回是空。
厉害了,没想到博主还是技术流
不是技术流。完蛋了难怪30岁自己还赚不到钱