###
#
# Название: tcl.pastebin.tcl
# Версия: 1.2
# Автор: tvrsh
# Оффсайт: http://egghelp.ru/
#
###
#
# Описание: Скрипт сообщает о появлении нового TCL кода на http://pastebin.com
#
###
#
# Установка:
# 1. Скопируйте скрипт tcl.pastebin.tcl в папку scripts вашего бота.
# 2. В файле eggdrop.conf впишите строку source scripts/tcl.pastebin.tcl
# 3. Сделайте .rehash боту.
#
###
#
# Версион хистори:
#
# 1.0(29.01.2012) Первая паблик версия.
# 1.1(29.01.2012) + выбор подсветки кода в настройках.
# + возможность показа первых строк кода.
# 1.2(15.07.2012) Скрипт обновлен из-за изменений на сайте.
#
###
namespace eval pastebin {
# Сбрасываем значения всех переменных.
foreach p [array names pastebin *] { catch {unset pastebin($p) } }
# Указываем канальный флаг(.chanset #chan +pastebin для включения скрипта).
setudef flag pastebin
### ###
# Меню настроек ниже этой линии: #
# ______________________________ #
### ###
variable pastebin
array set pastebin {
lang "TCL"
showlines "3"
color1 \00314
color2 \00303
color3 \00305
color4 \00314
version "tcl.pastebin.tcl version 1.2"
author "tvrsh"
lastlink ""
}
### ###
# Ниже этой линии начинается код, не изменяйте его если не знаете TCL: #
# ____________________________________________________________________ #
### ###
# Обработка биндов.
bind time - "?5 * * * *" ::pastebin::pastebin_proc
bind time - "?0 * * * *" ::pastebin::pastebin_proc
# Процедура обработки запроса.
proc ::pastebin::pastebin_proc {min hours day month year} {
variable pastebin
::http::config -useragent "Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)"
set pastebin_tok [::http::geturl "http://pastebin.com/archive/$pastebin(lang)"]
set data [::http::data $pastebin_tok]
::http::cleanup $pastebin_tok
if {[info exists ::sp_version]} {
set data [encoding convertfrom utf-8 $data]
} else {
set data [encoding convertto cp1251 [encoding convertfrom utf-8 $data]]
}
regsub -all -- {\n} $data "" data
regsub -all -- {\s+} $data " " data
regsub -all -nocase -- {^.*?
} $data "" data
regsub -all -nocase -- {.*?$} $data "" data
regexp {(.*?) | (.*?) | } $data "" link name ago
foreach chan [channels] {
if {[channel get $chan pastebin] && $link != $pastebin(lastlink)} {
putserv "PRIVMSG $chan :$pastebin(color1)\[$pastebin(color3)$pastebin(lang)$pastebin(color1)\] $pastebin(color2)$name$pastebin(color1): \00312\037http://pastebin.com/$link\037 $pastebin(color1)Posted: $pastebin(color2)$ago$pastebin(color1).\003"
set pastebin(lastlink) $link
if {$pastebin(showlines) != "0"} {
::http::config -useragent "Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)"
set pastebin_tok [::http::geturl "http://pastebin.com/$link"]
set data [::http::data $pastebin_tok]
::http::cleanup $pastebin_tok
regsub -all -nocase -- {^.*?} $data "" data
regsub -all -nocase -- {
.*?$} $data "" data
regsub -all -- { } $data " " data
set line 0
while {$line < $pastebin(showlines)} {
regexp -nocase -- {(.*?)
} [lindex [split $data "\n"] $line] "" code
if {[info exists code] && $code != ""} {
putserv "PRIVMSG $chan :$pastebin(color4)[::pastebin::striphtml $code]"
set code ""
}
incr line
}
}
}
}
return 0
}
# Обрабатываем тэги и другие символы.
proc ::pastebin::striphtml {t} {
regsub -all -nocase -- {<.*?>(.*?)} $t {\1} t
regsub -all -nocase -- {<.*?>} $t {} t
set t [string map {{&} {&}} $t]
set t [string map -nocase {{—} {-} {»} {»} {«} {«} {"} {"} \
{<} {<} {>} {>} { } { } {&} {&} {©} {©} {©} {©} {•} {•} {·} {-} {§} {§} {®} {®} \
‖ || \
& & [ ( \ / ] ) { ( } ) \
£ Ј ¨ Ё © © « « ® ® \
¡ Ў ¿ ї ´ ґ · · ¹ № » » \
¼ ј ½ Ѕ ¾ ѕ À А Á Б Â В \
Ã Г Ä Д Å Е Æ Ж Ç З È И \
É Й Ê К Ë Л Ì М Í Н Î О \
Ï П Ð Р Ñ С Ò Т Ó У Ô Ф \
Õ Х Ö Ц × Ч Ø Ш Ù Щ Ú Ъ \
Û Ы Ü Ь Ý Э Þ Ю ß Я à а \
á б â в ã г ä д å е æ ж \
ç з è и é й ê к ë л ì м \
í н î о ï п ð р ñ с ò т \
ó у ô ф õ х ö ц ÷ ч ø ш \
ù щ ú ъ û ы ü ь ý э þ ю \
° ° ‧ · ˌ . ū u ī i ˈ ' \
ɔ o ɪ i ' ' } $t]
set t [string map -nocase {¡ \xA1 ¤ \xA4 ¢ \xA2 £ \xA3 ¥ \xA5 ¦ \xA6 \
§ \xA7 ¨ \xA8 © \xA9 ª \xAA « \xAB ¬ \xAC \
\xAD ® \xAE ¯ \xAF ° \xB0 ± \xB1 ² \xB2 \
³ \xB3 ´ \xB4 µ \xB5 ¶ \xB6 · \xB7 ¸ \xB8 \
¹ \xB9 º \xBA » \xBB ¼ \xBC ½ \xBD ¾ \xBE \
¿ \xBF × \xD7 ÷ \xF7 À \xC0 Á \xC1 Â \xC2 \
à \xC3 Ä \xC4 Å \xC5 Æ \xC6 Ç \xC7 È \xC8 \
É \xC9 Ê \xCA Ë \xCB Ì \xCC Í \xCD Î \xCE \
Ï \xCF Ð \xD0 Ñ \xD1 Ò \xD2 Ó \xD3 Ô \xD4 \
Õ \xD5 Ö \xD6 Ø \xD8 Ù \xD9 Ú \xDA Û \xDB \
Ü \xDC Ý \xDD Þ \xDE ß \xDF à \xE0 á \xE1 \
â \xE2 ã \xE3 ä \xE4 å \xE5 æ \xE6 ç \xE7 \
è \xE8 é \xE9 ê \xEA ë \xEB ì \xEC í \xED \
î \xEE ï \xEF ð \xF0 ñ \xF1 ò \xF2 ó \xF3 \
ô \xF4 õ \xF5 ö \xF6 ø \xF8 ù \xF9 ú \xFA \
û \xFB ü \xFC ý \xFD þ \xFE ÿ \xFF} $t]
regsub -all {\s+} $t " " t
regsub -all -nocase -- {<.*?>} $t {} t
return $t
}
# Выводим сообщение о том, что скрипт удачно загружен.
putlog "\[pastebin\] $pastebin(version) by $pastebin(author) loaded..."
}