오랜만의 포스팅.. 택배추적 스크립트

핸드폰 고리를 주문한게 오늘 우체국 택배로 온다.
기다림에 지쳐서 IRC에서 검색할수 있도록 택배추적 기능을 만들었다.

혹시나 가져다 쓰실분은 아래부터 복사하시면 된다.

; ————————————————————
; | Made by Xeriars                                                               |
; | (변경해서 쓰는건 니맘대로지만 이 부분은 지우지 말아주세요.)  |
; ————————————————————

on *:text:*:#: {
if ($1 == @택배추적 || $1 == -택배추적 || $1 == !택배추적) {
if (!$2) { msg $chan 택배 회사를 입력하여 주십시요. | halt }
if (!$3) { msg $chan 운송장 번호를 입력하여 주십시요. | halt }
if ($len($3) != 13) { msg $chan 운송장번호가 13자리가 아닙니다. 다시 확인해주십시요. | halt }
if ($len($3) !isnum) { msg $chan 운송장번호가 잘못되었습니다. | halt }
unset %deli.*
set %deli.chan $gettok(%Zodbot.data,3,32)
set %deli.count 1
if ($2 == 우체국) {
if ($exists(tmp_epost.txt)) { remove tmp_epost.txt }
if ($exists(epost.txt)) { remove epost.txt }
set %deli.id $3
sockclose epost
sockopen epost service.epost.go.kr 80
}
halt
}
}
on *:sockopen:epost*: {
sockwrite -nt $sockname GET /trace.RetrieveRegiPrclDeliv.postal?sid1= $+ %deli.id HTTP/1.1
sockwrite -nt $sockname User-Agent: Mozilla/4.0
sockwrite -nt $sockname Host: service.epost.go.kr
sockwrite -nt $sockname Connection: Close
sockwrite -nt $sockname $crlf
}
on *:sockread:epost: {
sockread %tmp
set %deli.error 배달정보를 찾지 못했습니다.<br><br>
set %deli.sender <td bgcolor=”#FFFFFF” width=”300″ height=”20″ align=left>
set %deli.receiver <td bgcolor=”#FFFFFF” align=”left”>
set %deli.word <tr bgcolor=”#FFFFFF”>
set %deli.worde <input type=hidden name=pcode value=
set %deli.end <td bgcolor=”#FFFFFF” colspan=3 align=’center’>
set %deli.eof 우체국콜센터(1588-1300번)

if (%deli.error isin %tmp) {
msg %deli.chan 배달정보를 찾지 못했습니다. 정보가 아직 입력되지 않았거나 처리 중입니다.
sockclose $sockname
unset %deli.*
}
if (%deli.eof isin %tmp) {
set %deli.date1 $gettok($read(tmp_epost.txt,1),1,47)
var %i 0
var %j 0
while (%i < $lines(tmp_epost.txt)) {
inc %i
if ($mid($read(tmp_epost.txt,1),1,1) == $chr(47)) {
write epost.txt $chr(91) $+ $gettok($read(tmp_epost.txt,%i),1,47) $+ $chr(93) $+ $gettok($deltok($read(tmp_epost.txt,%i),1,62),1,47) ( $+ $gettok($deltok($read(tmp_epost.txt,%i),1,62),2,47) $+ , $gettok($read(tmp_epost.txt,%i),2,47) $+ )
}
}
while (%j < $lines(epost.txt)) {
inc %j
if (%j isnum 1-4) { set %deli.result1 %deli.result1 $+ → $+ $read(epost.txt,%j) }
elseif (%j > 4 && %j < 9) { set %deli.result2 %deli.result2 $+ → $+ $read(epost.txt,%j) }
elseif (%j >= 9) { set %deli.result3 %deli.result3 $+ → $+ $read(epost.txt,%j) }
}
msg %deli.chan 발송인 : %deli.rs / 수취인 : %deli.rr / 수령인 : $remove(%deli.rrr,$chr(40),$chr(41),수령인,$chr(58),님,$chr(9),$chr(32))
msg %deli.chan $mid(%deli.result1,3)
if (%deli.result2) { msg %deli.chan $mid(%deli.result2,3) }
if (%deli.result3) { msg %deli.chan $mid(%deli.result3,3) }
sockclose $sockname
unset %deli.*
}
if (%deli.sender isin %tmp) { set %deli.rs $remove(%tmp,%deli.sender,&nbsp;,</td>,$chr(9)) }
if (%deli.receiver isin %tmp) { set %deli.rr $remove(%tmp,%deli.receiver,&nbsp;,</td>,$chr(9)) }
if (%deli.end isin %tmp) {
set %deli.count 1
set %deli.rrr $remove(%tmp,%deli.end,</td>,$chr(9))
}
if (%deli.worde isin %tmp) { set %deli.count 1 | write tmp_epost.txt $remove(%deli.tmp1,$asctime(yyyy) $+ $chr(46),//,///,$chr(32)) | unset %deli.tmp1 }
if (%deli.count == 7) {
if ($remove(%tmp,$chr(32))) {
set %deli.tmp1 %deli.tmp1 $+ / $+ $remove(%tmp,<td align=’center’>,&nbsp;,<font color=’red’>,<tr>,<td bgcolor=#FFFFFF colspan=3 align=’center’>,<td rowspan=2 align=’center’>,<font color=’red’ >,<b>,</b>,</font>,</td>,</tr>,&nbsp;,$chr(9),$chr(40),$chr(41),</td>,</a>,<a href=”javascript:goPostDetail,$chr(34))
}
}
if (%deli.word isin %tmp) { set %deli.count 7 }
}

댓글 남기기