mIRC Hava Durumu
Belirteceğiniz İl ve İlçe merkezlerinin Devlet Meteoroloji İşleri‘nden alınan verilere göre 5 günlük hava tahminini ve o an ki hava durumunu özetleyen bir çalışmayı mIRC botunuzda kullanacak şekilde tasarladım.
Bu çalışmanın fikri forumda daha eskilerden el33t tarafından paylaşılmış fakat güncelliğini (veri alınan sitelerdeki değişim nedeniyle)kaybetmiş.
Aşağıdaki kodu mIRC botunuza ekledikten sonra kanaldaki bir nickin(kodu kendine ekleyen kişi hariç):
.hava Şehir veya İlçe
!hava Şehir veya İlçe
yazması halinde verilere ulaşacaktır.Devlet Meteoroloji İşleri sitesi illerin bazı ilçelerinde hava tahminleri vermiş,bu nedenle kimi ilçelerde verileri elde edemeyebilirsiniz.
alias havadurum {
.remove hava.txt
sockclose durum
sockopen durum dmi.gov.tr 80
}
on *:sockopen:durum:{
sockwrite -n $sockname GET /tahmin/il-ve-ilceler.aspx?m= $+ %difycity HTTP/1.1
sockwrite -n $sockname Host: $sock($sockname).addr
sockwrite -n $sockname Connection: Close
sockwrite -n $sockname $crlf
}
on *:sockread:durum:{
if ($sockerr) { msg %difychan $sock($sockname).wsmsg | halt }
else {
sockread %dify
if $regex(%dify,/Bilgi Bulunamad/i) { msg %difychan İstenen merkez bulunamadı! | sockclose durum | halt }
if $regex(%dify,/SonDurumRuzgarYon/i) { sockclose durum | msg %difychan $+(,$upper(%difycity),) için 5 günlük hava tahmini: | .play %difychan hava.txt 800 }
if (*ctl00_mpBody*SonDurum* iswm %dify) { write -n hava.txt $chr(160) $replace($htmlfree(%dify),Ä,Ğ,ü,ü,ÅŸ,ş,ı,ı,Ç,Ç,ÄŸ,ğ,Ä°,İ,ç,ç,ö,ö,Å,Ş) }
if $regex(%dify,/ctl00_mpBody.+SonDurum.+alt=”(.+)” title=”/i) { write -n hava.txt $chr(160) $replace($regml(1),Ä,Ğ,ü,ü,ÅŸ,ş,ı,ı,Ç,Ç,ÄŸ,ğ,Ä°,İ,ç,ç,ö,ö,Å,Ş) }
if (*ctl00_mpBody_*arka*trh*</t?>* iswm %dify) { write -n hava.txt $replace($htmlfree(%dify),Ä,Ğ,ü,ü,ÅŸ,ş,ı,ı,Ç,Ç,ÄŸ,ğ,Ä°,İ,ç,ç,ö,ö,Å,Ş) }
if $regex(%dify,/ctl00_mpBody_.+(“)?minS”>.+</td>/i) { write -n hava.txt $chr(160) En düşük: $htmlfree(%dify) }
if $regex(%dify,/ctl00_mpBody_.+(“)?maxS”>.+</td>/i) { write -n hava.txt $chr(160) En yüksek: $htmlfree(%dify) }
if $regex(%dify,/ctl00_mpBody_imgHadise.+” title=”(.+)” src=”.+</td>/i) { write -n hava.txt $chr(160) Hava: $replace($regml(1),Ä,Ğ,ü,ü,ÅŸ,ş,ı,ı,Ç,Ç,ÄŸ,ğ,Ä°,İ,ç,ç,ö,ö,Å,Ş) $lf }
}
}
alias htmlfree {
var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$chr(32),%x), %x = $remove(%x, ,°)
return %x
}
on $*:text:/[!\.]hava\s\S+/ASi:#Meteoroloji:{
if ($sock(durum,1).status == active || $play(1)) { notice $nick Sırada bekleyen çalışmanın bitmesini bekleyiniz. | halt }
else { msg $chan Verilere ulaşılmaya çalışıyor,lütfen bekleyiniz… | set -e %difycity $replace($2,ş,s,Ş,S,ı,i,ç,c,Ç,c,ü,u,Ü,U,ö,o,Ö,O,ğ,g,Ğ,G) | set -e %difychan $chan | havadurum }
}
Şayet kodu kendinize ekleyip kendinizin direktifiyle çalışmasını istiyorsanız,aşağıdaki koduda kendi mircinize eklersiniz:
on *:input:#Meteoroloji:{
if $regex($1-,/[!\.]hava\s\S+/ASi) {
if ($sock(durum,1).status == active || $play(1)) { echo -a Sırada bekleyen çalışmanın bitmesini bekleyiniz. | halt }
else { msg $chan Verilere ulaşılmaya çalışıyor,lütfen bekleyiniz… | set -e %difycity $replace($2,ş,s,Ş,S,ı,i,ç,c,Ç,c,ü,u,Ü,U,ö,o,Ö,O,ğ,g,Ğ,G) | set -e %difychan $chan | havadurum }
}
}