自动监控hetzner特价独服放货,抢购必备软件
本帖最后由 foboy 于 2018-3-22 20:47 编辑看到大家关注hetzner的特价机,就来贡献一次吧,代码简陋,各位MJJ别笑。听说很多人下了订单还没付款,也许有人最后决定不买了,库存可能就又有了,还能捡个漏。
运行平台:windows系列。
软件功能:监控hetzner库存,可以设置检测间隔,有低于多少价格的机器时提醒,另外还可以设置CPU癖好。更多的筛选条件也可以实现,但是懒得弄。
因为邮件提醒没用(邮件到达时早就抢光了),所以我取消了邮件功能,只保留蜂鸣器提醒。(2018-03-16 22:38修改)
static/image/filetype/zip.gif
hetzner存货监控.zip
(465.84 KB, 下载次数: 418)
2018-3-16 22:42 上传
点击文件名下载附件
(已经失效,请用下面的)
static/image/filetype/zip.gif
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),
[*]
[*]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复制代码
感谢大佬分享 全球mjj论坛 感谢分享 楼主好人 网络一般般,没啥用,刚刚取消了一个22欧,用了几个小时,不知道会不会收费。 这是要人手一个hetzner的节奏嘛
static/image/smiley/default/lol.gif
大佬厉害 又骗我去学aardio
nic2013 发表于 2018-3-15 00:17
网络一般般,没啥用,刚刚取消了一个22欧,用了几个小时,不知道会不会收费。 ...
大佬威武,就这么扔掉了别人想念的东西。 感谢楼主分享 ,人真好
static/image/smiley/default/shocked.gif
页:
[1]