###
#
# Название: 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 {\1><} data
regsub -all -- {