|
本帖最后由 foboy 于 2018-3-22 20:47 编辑
看到大家关注hetzner的特价机,就来贡献一次吧,代码简陋,各位MJJ别笑。听说很多人下了订单还没付款,也许有人最后决定不买了,库存可能就又有了,还能捡个漏。
运行平台:windows系列。
软件功能:监控hetzner库存,可以设置检测间隔,有低于多少价格的机器时提醒,另外还可以设置CPU癖好。更多的筛选条件也可以实现,但是懒得弄。
因为邮件提醒没用(邮件到达时早就抢光了),所以我取消了邮件功能,只保留蜂鸣器提醒。(2018-03-16 22:38修改)
hetzner存货监控.zip
(465.84 KB, 下载次数: 418)
2018-3-16 22:42 上传
点击文件名下载附件
(已经失效,请用下面的)
hetzner存货监控-new.zip
(466.62 KB, 下载次数: 328)
2018-3-22 20:47 上传
点击文件名下载附件
抢购姿势:打开电脑,打开本软件, 设置检测间隔为5到10之间的数字,价格低于25. CPU栏如果想要E3的, 就填E3,想要I7的就填i7,哪个都无所谓的就不要填任何内容。然后勾选“蜂鸣器提醒”,点“开始监测”。然后自己打开浏览器,登陆你自己的账号,打开server bidding页面。再然后就该干嘛就干嘛,但不要远离电脑。听到电脑发出“滴滴”声就赶紧刷新服务器页面,然后抢购。实测现在成功率很高。
如果有谁不想人工去下单,可以联系我定做自动下单版本, 价格300¥。但本人是觉得没啥必要,因为不算难抢。
对成品软件不放心的MJJ,可以用下面的源码运行,需要先下载aardio软件(网站aardio.com),
[ol]import win.ui;/*DSG{{*/var winform = win.form(cls="335.im";text="主机监控";right=456;bottom=300;border="thin";max=false)winform.add(button_r={cls="button";text="开始监测";left=288;top=245;right=420;bottom=279;z=1};checkbox_beep={cls="checkbox";text="蜂鸣器提醒";left=29;top=203;right=127;bottom=220;checked=1;z=17};checkbox_log={cls="checkbox";text="显示运行记录";left=139;top=203;right=237;bottom=220;z=18};edit_cpu={cls="edit";left=97;top=89;right=163;bottom=110;edge=1;z=15};edit_delay={cls="edit";text="20";left=97;top=62;right=163;bottom=83;edge=1;z=12};edit_mail={cls="edit";left=97;top=171;right=237;bottom=192;edge=1;z=6};edit_price={cls="edit";text="25";left=97;top=36;right=163;bottom=57;edge=1;z=4};groupbox={cls="groupbox";text="设置";left=12;top=10;right=254;bottom=286;edge=1;z=2};static={cls="static";text="价格小于:";left=29;top=38;right=92;bottom=55;transparent=1;z=3};static2={cls="static";text="通知邮箱:";left=29;top=174;right=92;bottom=191;transparent=1;z=5};static3={cls="static";text="当前最低价:";left=271;top=22;right=343;bottom=37;transparent=1;z=7};static4={cls="static";text="最后检测:";left=271;top=46;right=332;bottom=61;transparent=1;z=9};static5={cls="static";text="检测间隔:";left=29;top=64;right=92;bottom=81;transparent=1;z=11};static6={cls="static";text="秒";left=168;top=64;right=197;bottom=81;transparent=1;z=13};static7={cls="static";text="CPU条件:";left=29;top=93;right=95;bottom=110;transparent=1;z=14};static8={cls="static";text="说明:CPU条件只填能做出区分的关键字就行,例如:i5、i7、1230等";left=29;top=117;right=239;bottom=160;color=255;transparent=1;z=16};static_price={cls="static";text="0";left=343;top=22;right=397;bottom=37;transparent=1;z=8};static_time_last={cls="static";left=333;top=46;right=448;bottom=61;transparent=1;z=10})/*}}*/import thread.table;import fsys.config;config=fsys.config("/config/")winform.bindConfig( config.winform,{ edit_mail = "text"; edit_price = "text"; edit_cpu = "text"; edit_delay = "text"; checkbox_beep = "checked";} );t_d=thread.table("table_name")t_d.r=0;if(_STUDIO_INVOKED || (_ARGV && _ARGV.debug)){ io.open()}winform.button_r.oncommand = function(id,event){ if(t_d.r!=1){ t_d.r=1 owner.text="停止监测" }else { t_d.r=0; owner.text="开始监测" } }winform.show_price_min=function(data){ winform.static_price.text=data; var now_time=time(); now_time.format="%H:%M:%S"; winform.static_time_last.text=tostring(now_time);}thread.create( function( hwnd_m ){ import win; import thread.table; import inet.whttp; import inet.url; import web.json; t_d=thread.table("table_name"); http=inet.whttp() time_pre=0;//最后检测的时间 time_last_email=0;//最后一次发邮件的时间 while(win.isWindow(hwnd_m)){ sleep(100) if(t_d.r!=1) continue ; if(time.tick()-time_pre>t_d.delay*1000){ io.print("checking...",time()) time_pre=time.tick(); url="https://www.hetzner.com/a_hz_serverboerse/live_data.json?m="++string.concat(tonumber(time()),math.random(100,999)) //io.print("url:",url) r=http.get(url) if(!r){ io.print("获取数据出错!") continue ; } //io.print(r) try{ data=web.json.parse(r); } if(data && #data>1){ io.print("get data success") price_min=10000; str_email="";//准备发送的邮件信息,为了避免有多个型号符合要求时会同时发送多封邮件,每次检测到的信息合并发送。 for(k,v in data){ if(v["price"]){ price=tonumber(v["price"]):-1; if(price==-1){ io.print("价格数据出错:",v["price"],price) continue ; } if(price){ if(price1){ if(t_d.email && string.find(t_d.email,"\w+@.+") && time.tick()-time_last_email>600000){//10分钟内只发送一次邮件 time_last_email=time.tick(); io.print("邮件内容:",str_email) //这里取消email提醒了,因为出货后很快就被秒, 邮件到达时早就没货了,还是再本地电脑上开蜂鸣器提醒最合适。 } //如果需要增加其他的通知接口,可以在下面这行的引号里添加你的url,然后去掉最前面的//取消注释。 //http.get("") } }else { io.print("data error!") } } } }, winform.hwnd)winform.edit_mail.oncommand = function(id,event){ var email=owner.text; if(#email复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|