全球主机交流论坛
标题:
SAE监控BuyVM到货email通知(官方API+抓页面)【附源码】
[打印本页]
作者:
neverno
时间:
2012-3-18 11:56
标题:
SAE监控BuyVM到货email通知(官方API+抓页面)【附源码】
本帖最后由 neverno 于 2012-3-18 11:56 编辑
没啥技术含量的蛋疼东西。
buyvm要放货了,tw上@他问了下,15刀、25刀年付都有货。
具体北京时间什么时候?看最后演示的页面有倒计时。
用的是他家官方json API,不是之前这里的直接抓取页面判断,邮件需要SMTP。
最后也附上用直接抓取页面判断的方法,修改一下,能用于监控其它的到货通知,不仅是buyvm
。
SAE专属:http://sae.sina.com.cn
===============================
核心代码(自行修改)
http://pastie.org/3616065
或
<?php
////以 下 需 要 修 改////
$mailsmtp = ''; //smtp地址
$mailsmtpport = 25; //端口
$mailfrom = ''; //源邮箱
$mailpassword = ''; //密码
$mailto = ''; //目的邮箱 以,号分隔 如'
[email protected]
,
[email protected]
'
$mailtocc = ''; //抄送邮箱 以,号分隔 如'
[email protected]
,
[email protected]
'
$pid = '67,46,47,48,51,86,88,89,90,91,94,95,96'; //编号(具体看下面) 以,号分隔
// 67=OpenVZ-128MB 46=OpenVZ-256MB 47=OpenVZ-512MB 48=OpenVZ-1024MB 51=OpenVZ-2048MB
// 86=KVM-128MB 88=KVM-256MB 89=KVM-512MB 90=KVM-1024MB 91=KVM-2048MB
// 94=Storage-250GB 95=Storage-500GB 96=Storage-1000GB
////需 要 修 改 结 束////
$f = new SaeFetchurl();
$json = $f->fetch('http://www.doesbuyvmhavestock.com/automation.json');
$f->clean();
$json = json_decode($json);
$pid = explode(',',$pid);
for($i = 0 ; $i < count($pid) ; $i++){
checkstock($pid[$i]);
}
function sendm($mailtitle,$mailcontent) {
global $mailsmtp,$mailsmtpport,$mailfrom,$mailpassword,$mailto,$mailtocc;
$mail = new SaeMail();
$mail->setOpt(array( 'from' => $mailfrom ));
$mail->setOpt(array( 'to' => $mailto ));
$mail->setOpt(array( 'cc' => $mailtocc ));
$mail->setOpt(array( 'smtp_host' => $mailsmtp ));
$mail->setOpt(array( 'smtp_port' => $mailsmtpport ));
$mail->setOpt(array( 'smtp_username' => $mailfrom ));
$mail->setOpt(array( 'smtp_password' => $mailpassword ));
$mail->setOpt(array( 'subject' => $mailtitle ));
$mail->setOpt(array( 'content' => $mailcontent ));
$mail->send();
if ( $mail->errno() != 0 ) {
$mail->setOpt(array( 'subject' => 'error:'.$mail->errmsg() ));
$mail->setOpt(array( 'content' => 'code:'.$mail->errno().'<br>'.$mail->errmsg() ));
$mail->send();
}
}
function checkstock($id) {
global $json;
for($i = 0 ; $i < count($json) ; $i++){
if($json[$i]->pid == $id && $json[$i]->qty != 0){
sendm('BuyVM '.$json[$i]->name.' 有货啦!','还有 '.$json[$i]->qty.' 个,赶紧去抢吧,地址:https://my.frantech.ca/cart.php?a=add&pid='.$json[$i]->pid);
break;
}
}
}
?>
复制代码
保存为任意PHP
添加sae计划任务:
config.yaml(自行修改,默认间隔2分钟)
name: {项目名}
version: {版本号}
cron:
- description: {描述}
url: {文件路径,如index.php}
schedule: every 2 mins, offset 5
timezone: Beijing
复制代码
演示
http://shifouyouhuo.sinaapp.com/
===================================
抓取页面的方法可用于BuyVM以外的监控
<?php
$addr = 'https://my.frantech.ca/cart.php?a=add&pid=67'; //order直接网址
$mailt = 'BuyVM 15美元/年 有货!'; //邮件标题
$mailc = '有货!'; //邮件内容
$f = new SaeFetchurl();
$content = $f->fetch($addr);
if ($f->httpCode() == 200) {
if (!strpos($content,'Out of Stock')) sendm($mailt,$mailc);
}
if ($f->errno() != 0) echo $f->errmsg();
$f->clean();
?>
复制代码
作者:
cnweb
时间:
2012-3-18 11:57
真蛋疼
作者:
wr浅唱
时间:
2012-3-18 11:59
这个……
作者:
小和尚
时间:
2012-3-18 11:59
这就是文艺青年和其余两种青年的明显区别了
作者:
ivv
时间:
2012-3-18 12:13
真心学习了
作者:
shineme
时间:
2012-3-18 12:18
真心收藏了。
作者:
netsky
时间:
2012-3-18 12:20
上传代码后访问空白
作者:
西门吹豆腐
时间:
2012-3-18 12:25
留个记号备用
作者:
mansomeboy
时间:
2012-3-18 12:39
牛人!留个记号备用
作者:
chint
时间:
2012-3-18 12:41
提示:
作者被禁止或删除 内容自动屏蔽
作者:
greyboy
时间:
2012-3-18 12:43
我用buyvm.co去做这个
作者:
geyunbing
时间:
2012-3-18 12:49
提示:
作者被禁止或删除 内容自动屏蔽
作者:
neverno
时间:
2012-3-18 12:52
netsky 发表于 2012-3-18 12:20
上传代码后访问空白
本来就是没显示的只是后台监控自动发email
我的演示有只是我加了点东西~
要测试是不是成功,可以搜索
if($json[$i]->pid == $id && $json[$i]->qty != 0)
复制代码
把!=改为==
上传,刷新页面,能收到email就是正常了(记得改回来,不然变邮箱轰炸了)
作者:
小蛋
时间:
2012-3-25 20:19
不错。可以留一下。
作者:
taian
时间:
2012-3-25 20:30
谢谢分享
欢迎光临 全球主机交流论坛 (https://52.ht/)
Powered by Discuz! X3.4