### # # Название: audio.tcl # Версия: 1.2 # Автор: username # ### # # Описание: Скрипт собирает с сайта http://www.telefon.ru характеристики audio плееров. # ### # # Установка: # 1. Скопируйте скрипт audio.tcl в папку scripts/audio вашего бота. # 2. В файле eggdrop.conf впишите строку source scripts/audio/audio.tcl # 4. Сделайте .rehash боту. # ### # # Версион хистори: # # 1.0(29.03.2007) Первая паблик версия. # 1.1(08.06.2007) + Исправлены регэкспы для работы с новым хтмл кодом на сайте. # 1.2(23.08.2008) + Исправлены регэкспы для работы с новым хтмл кодом на сайте. # + Показ цены девайсов. # + Поддержка Suzi патча. # ### # Указываем пространство имен. namespace eval audio {} # Сбрасываем значения всех переменных. foreach p [array names audio *] { catch {unset audio($p) } } # Указываем канальный флаг(.chanset #chan +nopubaudio для отключения скрипта). setudef flag nopubaudio ### ### # Меню настроек ниже этой линии: # # ______________________________ # ### ### # Префикс команд. set audio(pref) "!" # Список команд на которые будет отзываться скрипт. set audio(binds) "audio mp3 мп3 плеер" # Разрешить работу со скриптом в привате у бота? (да-1/нет-0) set audio(msg) 1 # Сколько команда за сколько секунд считать флудом и начинать игнорить юзера. set audio(flood) 5:60 # Время(мин) игнора. set audio(ignore) 10 ### # Настройки цветов. # Основной цвет текста. set audio(color1) "\00314" # Цвет марок, моделей и характеристик телефонов. set audio(color2) "\00303" # Цвет разделителя между марками и моделями в списке. set audio(color3) "\00304" # Цвет заголовков разделов характеристик. set audio(color4) "\00305" ### ### ### # Ниже этой линии начинается код, не изменяйте его если не знаете TCL: # # ____________________________________________________________________ # ### ### #версия скрипта. set audio(version) "audio.tcl version 1.2" # втор скрипта. set audio(author) "username" # Обработка биндов. foreach bind [split $audio(binds) " "] { bind pub -|- "$audio(pref)$bind" audio_pub if {$audio(msg) >= 1} { bind msg -|- "$audio(pref)$bind" audio_msg } } # Процедура обработки приватных команд. proc audio_msg {nick uhost hand text} { global tcl_platform audio audio_proc $nick $uhost $hand $nick $text } # Процедура обработки паблик команд. proc audio_pub {nick uhost hand chan text} { global tcl_platform audio if {[channel get $chan nopubaudio]} { return } audio_proc $nick $uhost $hand $chan $text } # Процедура обработки запроса. proc audio_proc {nick uhost hand chan text} { global tcl_platform audio sp_version set audiomark [lindex $text 0] # Проверка на флуд. if {[flood_audio $nick $uhost]} { return } # Если марку телефона не указали. if {$audiomark == "" } { set agent "Mozilla" set audio(agent) [::http::config -useragent $agent] set audio(url) [::http::geturl http://telefon.ru/audio/mp3.html] set html [::http::data $audio(url)] ::http::cleanup $audio(url) #if {[info exists sp_version]} { # set html [encoding convertto cp1251 $html] #} set file [open "scripts/audio/audio.txt" "w"] foreach line [split $html "\n"] { if {[regexp -- {(.*?)} $line - nomer audiomark]} { regsub -all " " $audiomark "-" audiomark if {[string length $nomer] <= "5" } { set data "$audiomark|$nomer" puts $file $data } } } close $file set data [read [set file [open "scripts/audio/audio.txt" r]]] close $file foreach line $data { set line [split $line "|"] lappend marklist "$audio(color2)[lindex $line 0]" } set marklist [join $marklist " $audio(color3)• "] putserv "NOTICE $nick :$audio(color1)Доступна информация по $audio(color2)MP3 Плеерам $audio(color1)следующих марок:" audio_largetext $nick $marklist putserv "NOTICE $nick :$audio(color1)Для получения списка моделей используйте $audio(color3)!audio $audio(color2)Марка_плеера" return } # Если марку плеера указали. set audio(total) [string length $text] set audiomodel [string range $text [expr [string length [lindex $text 0]] + 1] [expr $audio(total) - 3]] # Если не указали модель плеера. if {$audiomodel == "" } { set data [read [set file [open "scripts/audio/audio.txt" r]]] close $file foreach lines $data { set line [split $lines "|"] if {[string tolower [lindex $line 0]] == [string tolower [lindex $text 0]]} { set nomer [lindex $line 1] } } set agent "Mozilla" set audio(agent) [::http::config -useragent $agent] set audio(url) [::http::geturl http://telefon.ru/audio/mp3_page_all_g__g_1_tree_$nomer\.html] set html [::http::data $audio(url)] ::http::cleanup $audio(url) if {[info exists sp_version]} { set html [encoding convertto cp1251 $html] } set re "(.*?)" set file [open "scripts/audio/$nomer.txt" w] foreach line [split $html "\n"] { if {[regexp -- $re $line - nomerr modell]} { regsub -all "\"" $modell "" modell regsub -all " " $modell "" modell set data "$modell|$nomerr" puts $file $data } } close $file set data [read [set file [open "scripts/audio/$nomer.txt" r]]] close $file foreach line [split $data \n] { set line [split $line "|"] if {$line==""} { continue } lappend modellist "$audio(color2)[lindex $line 0]" } set modellist [join $modellist " $audio(color3)• "] putserv "NOTICE $nick :$audio(color1)Доступна информация по следующим моделям MP3 Плееров марки $audio(color2)$audiomark$audio(color1):" audio_largetext $nick $modellist putserv "NOTICE $nick :$audio(color1)Для получения информации используйте: $audio(color3)!audio $audio(color2)Марка_плеера $audio(color4)Выбранная_модель $audio(color2)-Ключ" putserv "NOTICE $nick :$audio(color2)Ключи: $audio(color3)a$audio(color1) - Основные характеристики, $audio(color3)b$audio(color1) - Хранение и воспроизведение файлов, $audio(color3)c$audio(color1) - Корпус, $audio(color3)d$audio(color1) - Дисплей и индикация, $audio(color3)e$audio(color1) - Наушники, $audio(color3)f$audio(color1) - Звуковые параметры, $audio(color3)g$audio(color1) - Параметры записи и диктофона, $audio(color3)h$audio(color1) - Радио, $audio(color3)i$audio(color1) - Разъемы и подключение к ПК, $audio(color3)k$audio(color1) - Дополнительные функции." return } else { # Если указали модель плеера. if {[string index $text [expr $audio(total) - 2]] == "-" && [string index $text [expr $audio(total) - 3]] == " "} { #set audiomodel [string range $text [expr [string length [lindex $text 0]] + 1] [expr $audio(total) - 3]] set text [split $text " "] set audiomodel [lindex $text 1] set audiokey [string range $text [expr $audio(total) - 2] end] } else { putserv "NOTICE $nick :$audio(color1)Для получения информации используйте: $audio(color3)!audio $audio(color2)Марка_плеера $audio(color4)Выбранная_модель $audio(color2)-Ключ" putserv "NOTICE $nick :$audio(color2)Ключи: $audio(color3)a$audio(color1) - Основные характеристики, $audio(color3)b$audio(color1) - Хранение и воспроизведение файлов, $audio(color3)c$audio(color1) - Корпус, $audio(color3)d$audio(color1) - Дисплей и индикация, $audio(color3)e$audio(color1) - Наушники, $audio(color3)f$audio(color1) - Звуковые параметры, $audio(color3)g$audio(color1) - Параметры записи и диктофона, $audio(color3)h$audio(color1) - Радио, $audio(color3)i$audio(color1) - Разъемы и подключение к ПК, $audio(color3)k$audio(color1) - Дополнительные функции." return } } ### set data [read [set file [open "scripts/audio/audio.txt" r]]] close $file foreach lines $data { set line [split $lines "|"] if {[string tolower [lindex $line 0]] == [string tolower [lindex $text 0]]} { set nomer [lindex $line 1] } } ### set audiokey [string range $text [expr $audio(total) - 2] end] set result [read [set file [open "scripts/audio/$nomer.txt" r]]] close $file foreach pos [split $result \n] { set line [split $pos "|"] set a $audiomodel set b [lindex $line 0] if {[string compare $a $b]} { set nomerrr [string tolower [lindex $line 1]] audioparce $nick $chan $nomer $nomerrr $audiokey $audiomark $audiomodel return } } } # Процедура парсинга информации. proc audioparce {nick chan nomer nomerrr audiokey audiomark audiomodel} { global audio sp_version set agent "Mozilla" set audio(agent) [::http::config -useragent $agent] set audio(url) [::http::geturl http://telefon.ru/audio/mp3_g__g_1_tree_$nomer\_$nomerrr\.html] set html [::http::data $audio(url)] ::http::cleanup $audio(url) if {[info exists sp_version]} { set html [encoding convertto cp1251 $html] } set filee [open "scripts/audio/debug.txt" w] set data [split $html \n] regsub -all " " $data "" data regsub -all -- {\n} $data "" data regsub -all -- {\ +} $data { } data regsub -all -- {^\ +} $data "" data regsub -all -- {> +<} $data {><} data regsub -all -- { +<} $data {<} data regsub -all -- {