NewsMix, API2 | Новости с двух сайтов |
Здравствуйте, гость ( Вход | Регистрация )
NewsMix, API2 | Новости с двух сайтов |
20.9.2012, 17:00
Сообщение
#1
|
|
Продвинутый участник Группа: Пользователи Сообщений: 176 Регистрация: 11.7.2008 Пользователь №: 171 Спасибо сказали: 182 раза |
Название скрипта: NewsMix
Автор: Tsd (Рига, Латвия) Версия скрипта: 1.0 Версия API: API2 Описание скрипта: Скрипт выводит в чат по таймеру новости с двух новостных порталов в случае, если: 1. В чате за время таймера написано сообщений меньше, чем в настройках. 2. Дневное время суток (ночью скрипт молчит, чтобы не флудить в чате). 3. Новость на сайте изменилась. Если не нужны новости с Латвийского портала - просто закомментируйте строку в таблице sAddr или измените на другой портал по аналогии. (В этом случае необходимо изменить так же строку 45). Протестировано на PtokaX 0.4.2.0 Tsd © 20.09.2012
Прикрепленные файлы
|
|
|
9.10.2012, 16:28
Сообщение
#2
|
|
Начинающий Группа: Пользователи Сообщений: 10 Регистрация: 25.1.2012 Пользователь №: 10 222 Спасибо сказали: 0 раз |
А у меня проблема с этим скриптом на PtokaX 0.4.2.0 API 2. Библиотеки все стоят.
Цитата \NewsMix_1.lua:40: attempt to index global 'http' (a boolean value) Как можно решить проблему? Спасибо! |
|
|
9.10.2012, 17:15
Сообщение
#3
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Booth, вот только что скачал, ничего не меняя, вставил в папку скриптов и запустил, - работает без проблем (да, только уменьшил периодичность с 45 минут до 1 минуты, чтоб не ждать действия скрипта)...
Возможно, у вас там ошибка загрузки библиотеки socket.http. Проверьте наличие файлов необходимых библиотек. |
|
|
9.10.2012, 18:26
Сообщение
#4
|
|
Начинающий Группа: Пользователи Сообщений: 10 Регистрация: 25.1.2012 Пользователь №: 10 222 Спасибо сказали: 0 раз |
Booth, вот только что скачал, ничего не меняя, вставил в папку скриптов и запустил, - работает без проблем (да, только уменьшил периодичность с 45 минут до 1 минуты, чтоб не ждать действия скрипта)... Возможно, у вас там ошибка загрузки библиотеки socket.http. Проверьте наличие файлов необходимых библиотек. Библиотеки от сюда http://mydc.ru/topic43.html , сам хаб http://mydc.ru/topic19s80.html?p=44032#entry44032 . Библиотеки лежат в \ptokax\libs. Файла socket.http не нашёл. В логах только это ошибка, когда по времени скрипт должен грузить с инета. |
|
|
9.10.2012, 19:21
Сообщение
#5
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Booth, библиотеку берите отсюда.
Не обращайте внимания, что она для Русхаба, для вашей Птоки тоже пойдёт. Та библиотека, что у вас сейчас стоит, она годится для более ранних версий Птоки, но не для вашей. |
|
|
15.10.2012, 2:05
Сообщение
#6
|
|
Начинающий Группа: Пользователи Сообщений: 16 Регистрация: 13.10.2012 Пользователь №: 10 908 Спасибо сказали: 0 раз |
А у меня не получилось запустить этот скрипт. Ставил библиотеку отсюда и отсюда, и всё равно ошибки.
На версии библиотек с первой ссылки лог такой: ] Нет синтаксических ошибок в файле скрипта News.lua ] Скрипт запущен. потом ошибка: Error1.JPG ( 21.21 килобайт ) Кол-во скачиваний: 415 и лог ] Синтаксис error loading module 'socket.core' from file '...\Ptokax 0.4.2.0\scripts\libs\socket\core.dll': Не найден указанный модуль. (хотя файл как-раз таки на месте) ] Синтаксис ...\Ptokax 0.4.2.0\scripts\News.lua:39: loop or previous error loading module 'socket.http' ] Синтаксис ...\Ptokax 0.4.2.0\scripts\News.lua:39: loop or previous error loading module 'socket.http' ] Скрипт остановлен. (в ручную мной) Со второй ссылки такой: ] Нет синтаксических ошибок в файле скрипта News.lua ] Скрипт запущен. ] Синтаксис ...\Ptokax 0.4.2.0\scripts\libs\socket.lua:18: attempt to index global 'socket' (a nil value) всё, что я поменял в скрипте это время и адрес Код bTimer = 1 sAddr = { {"http://xox.uz/rss.xml","windows-1251","2"}, {"http://kids.xox.uz/engine/rss.php","windows-1251","2"}, {"http://news.olam.uz/rss/all.rss","windows-1251","2"}, } В чём может быть причина??? P.S. Windows XP SP3 x32 PtokaX 0.4.2.0 build 241 |
|
|
16.10.2012, 10:00
Сообщение
#7
|
|
Продвинутый участник Группа: Пользователи Сообщений: 176 Регистрация: 11.7.2008 Пользователь №: 171 Спасибо сказали: 182 раза |
To Alex Dancer
1. Скрипт парсит только два сайта. Если вы меняете адреса сайтов, то при некорректном выводе информации необходимо так же поменять захват (строки 45 и 58). Последнее значение в адресах сайтов - это порядковый номер в таблице. 2. Насчет библиотек почитайте тут. Постом выше можно скачать Ptokax 0.4.2.0 build 401 с Lua 5.1.5 |
|
|
16.10.2012, 17:28
Сообщение
#8
|
|
Начинающий Группа: Пользователи Сообщений: 16 Регистрация: 13.10.2012 Пользователь №: 10 908 Спасибо сказали: 0 раз |
To Alex Dancer 1. Скрипт парсит только два сайта. Если вы меняете адреса сайтов, то при некорректном выводе информации необходимо так же поменять захват (строки 45 и 58). Последнее значение в адресах сайтов - это порядковый номер в таблице. 2. Насчет библиотек почитайте тут. Постом выше можно скачать Ptokax 0.4.2.0 build 401 с Lua 5.1.5 что-то я не понял, а что менять-то в 45 строке??? Вот мой скрипт Код --[[ Название скрипта: NewsMix Автор: Tsd (Рига, Латвия) Версия скрипта: 1.0 Версия API: API2 Описание скрипта: Скрипт выводит в чат по таймеру новости с двух новостных порталов в случае, если: 1. В чате написано сообщений меньше, чем в настройках. 2. Дневное время суток (ночью скрипт молчит, чтобы не флудить в чате). 3. Новость на сайте изменилась. Если не нужны новости с Латвийского портала - просто задокумментируйте строку в таблице sAddr или измените на другой портал по аналогии. (в этом случае необходимо изменить также строку 45). ]] -- Общие настройки sBotName = "" -- Имя бота. Если "" то имя основного бота хаба. bTimer = 1 -- Выдача по таймеру (в минутах). AntiFl = 50 -- Если в чате было написано столько или более сообщений за время таймера, то новости не будут выданы. StartDay = 7 -- С какого часа до полуночи скрипт будет выдавать новости. sAddr = { {"http://xox.uz/rss.xml","windows-1251","1"}, {"http://news.olam.uz/rss/all.rss/","windows-1251","2"}, } --------------------------- function OnStartup() if sBotName == "" then sBotName = SetMan.GetString(21) end tmr = TmrMan.AddTimer(bTimer*60000) sMsg1,sMsg2,sOldDesc1,sOldDesc2,n = "","","","",0 end function ChatArrival() n = n+1 collectgarbage("collect") end function OnTimer(tmr) local hour = tonumber(os.date("%H")) if (n <= AntiFl) and (hour >= StartDay) then http = require("socket.http") assert(http,"Ошибка загрузки библиотеки socket.http. Проверьте наличие файлов необходимых библиотек.") http.TIMEOUT = 3 for i in pairs(sAddr) do local msg = http.request(sAddr[i][1]) if msg then if (sAddr[i][3]) == "1" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</p.-</item>(.*)") if Link and Description then sMsg = Description if Description == sOldDesc1 then sMsg1 = "" else sOldDesc1 = Description RepChars() if (sAddr[i][2]) == "UTF-8" then sMsg = Utf8ToAnsi(sMsg) end sMsg1 = "••• "..sMsg.."\n\t\tПодробнее: "..Link end end end if (sAddr[i][3]) == "2" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</description>.-</item>(.*)") if Link and Description then sMsg = Description if Description == sOldDesc2 then sMsg2 = "" else sOldDesc2 = Description RepChars() if (sAddr[i][2]) == "UTF-8" then sMsg = Utf8ToAnsi(sMsg) end sMsg2 = "••• "..sMsg.."\n\t\tПодробнее: "..Link end end end end end if sMsg1 ~= "" or sMsg2 ~= "" then if sMsg1 ~= "" and sMsg2 == "" then sMsg1 = "\n\n"..sMsg1.."\n" end if sMsg2 ~= "" and sMsg1 == "" then sMsg2 = "\n\n"..sMsg2.."\n" end if sMsg1 ~= "" and sMsg2 ~= "" then sMsg1 = "\n\n"..sMsg1.."\n" sMsg2 = "\n"..sMsg2.."\n" end Core.SendToAll("<"..sBotName..">"..sMsg1..sMsg2) sMsg1 = "" sMsg2 = "" end end n = 0 collectgarbage("collect") return string.format("%-.2f Kb.",collectgarbage("count")) end function RepChars() sMsg = string.gsub (sMsg, "__g", "ig") sMsg = string.gsub (sMsg, ("%[b%]"), " ") sMsg = string.gsub (sMsg, ("%[/b%]"), " ") sMsg = string.gsub (sMsg, "<br>", "\r\n\t") sMsg = string.gsub (sMsg, "<br />", "\r\n\t") sMsg = string.gsub (sMsg, "<", "<") sMsg = string.gsub (sMsg, ">", ">") sMsg = string.gsub (sMsg, """, string.char (34)) sMsg = string.gsub (sMsg, "&", "") sMsg = string.gsub (sMsg, " ", " ") sMsg = string.gsub (sMsg, "nbsp;", " ") sMsg = string.gsub (sMsg, "$", "$") sMsg = string.gsub (sMsg, "'", "`") sMsg = string.gsub (sMsg, "'", "`") sMsg = string.gsub (sMsg, "|", "") sMsg = string.gsub (sMsg, "|", "") sMsg = string.gsub (sMsg, "<!%[CDATA%[", "") sMsg = string.gsub (sMsg, "%]%]>", "") sMsg = string.gsub (sMsg, "<a target=\"_blank\" href=", "") sMsg = string.gsub (sMsg, ">paparazzi.ru</a>", " ") sMsg = string.gsub (sMsg, "<strong>", "") sMsg = string.gsub (sMsg, "</strong>", "") sMsg = string.gsub (sMsg, "- <a href=", "") sMsg = string.gsub (sMsg, "target=\"_blank\">", " ") sMsg = string.gsub (sMsg, "</a> –", "") sMsg = string.gsub (sMsg, "<p>","") end local utf8_decode={ [128]={[147]="\150",[148]="\151",[152]="\145",[153]="\146",[154]="\130",[156]="\147",[157]="\148",[158]="\132",[160]="\134",[161]="\135",[162]="\149",[166]="\133",[176]="\137",[185]="\139",[186]="\155"}, [130]={[172]="\136"}, [132]={[150]="\185",[162]="\153"}, [194]={[152]="\152",[160]="\160",[164]="\164",[166]="\166",[167]="\167",[169]="\169",[171]="\171",[172]="\172",[173]="\173",[174]="\174",[176]="\176",[177]="\177",[181]="\181",[182]="\182",[183]="\183",[187]="\187"}, [208]={[129]="\168",[130]="\128",[131]="\129",[132]="\170",[133]="\189",[134]="\178",[135]="\175",[136]="\163",[137]="\138",[138]="\140",[139]="\142",[140]="\141",[143]="\143",[144]="\192",[145]="\193",[146]="\194",[147]="\195",[148]="\196", [149]="\197",[150]="\198",[151]="\199",[152]="\200",[153]="\201",[154]="\202",[155]="\203",[156]="\204",[157]="\205",[158]="\206",[159]="\207",[160]="\208",[161]="\209",[162]="\210",[163]="\211",[164]="\212",[165]="\213",[166]="\214", [167]="\215",[168]="\216",[169]="\217",[170]="\218",[171]="\219",[172]="\220",[173]="\221",[174]="\222",[175]="\223",[176]="\224",[177]="\225",[178]="\226",[179]="\227",[180]="\228",[181]="\229",[182]="\230",[183]="\231",[184]="\232", [185]="\233",[186]="\234",[187]="\235",[188]="\236",[189]="\237",[190]="\238",[191]="\239"}, [209]={[128]="\240",[129]="\241",[130]="\242",[131]="\243",[132]="\244",[133]="\245",[134]="\246",[135]="\247",[136]="\248",[137]="\249",[138]="\250",[139]="\251",[140]="\252",[141]="\253",[142]="\254",[143]="\255",[144]="\161",[145]="\184", [146]="\144",[147]="\131",[148]="\186",[149]="\190",[150]="\179",[151]="\191",[152]="\188",[153]="\154",[154]="\156",[155]="\158",[156]="\157",[158]="\162",[159]="\159"},[210]={[144]="\165",[145]="\180"} } local nmdc = { [36] = "$", [124] = "|" } function Utf8ToAnsi(s) local a, j, r, b = 0, 0, "" for i = 1, s and s:len() or 0 do b = s:byte(i) if b < 128 then if nmdc[b] then r = r..nmdc[b] else r = r..string.char(b) end elseif a == 2 then a, j = a - 1, b elseif a == 1 then a, r = a - 1, r..utf8_decode[j][b] elseif b == 226 then a = 2 elseif b == 194 or b == 208 or b == 209 or b == 210 then j, a = b, 1 else r = r.."_" end end return r end И что нужно добавить, чтобы выводило с трёх сайтов? |
|
|
17.10.2012, 18:14
Сообщение
#9
|
|
Продвинутый участник Группа: Пользователи Сообщений: 176 Регистрация: 11.7.2008 Пользователь №: 171 Спасибо сказали: 182 раза |
что-то я не понял, а что менять-то в 45 строке??? Вот мой скрипт Код --[[ Название скрипта: NewsMix Автор: Tsd (Рига, Латвия) Версия скрипта: 1.0 Версия API: API2 Описание скрипта: Скрипт выводит в чат по таймеру новости с двух новостных порталов в случае, если: 1. В чате написано сообщений меньше, чем в настройках. 2. Дневное время суток (ночью скрипт молчит, чтобы не флудить в чате). 3. Новость на сайте изменилась. Если не нужны новости с Латвийского портала - просто задокумментируйте строку в таблице sAddr или измените на другой портал по аналогии. (в этом случае необходимо изменить также строку 45). ]] -- Общие настройки sBotName = "" -- Имя бота. Если "" то имя основного бота хаба. bTimer = 1 -- Выдача по таймеру (в минутах). AntiFl = 50 -- Если в чате было написано столько или более сообщений за время таймера, то новости не будут выданы. StartDay = 7 -- С какого часа до полуночи скрипт будет выдавать новости. sAddr = { {"http://xox.uz/rss.xml","windows-1251","1"}, {"http://news.olam.uz/rss/all.rss/","windows-1251","2"}, } --------------------------- function OnStartup() if sBotName == "" then sBotName = SetMan.GetString(21) end tmr = TmrMan.AddTimer(bTimer*60000) sMsg1,sMsg2,sOldDesc1,sOldDesc2,n = "","","","",0 end function ChatArrival() n = n+1 collectgarbage("collect") end function OnTimer(tmr) local hour = tonumber(os.date("%H")) if (n <= AntiFl) and (hour >= StartDay) then http = require("socket.http") assert(http,"Ошибка загрузки библиотеки socket.http. Проверьте наличие файлов необходимых библиотек.") http.TIMEOUT = 3 for i in pairs(sAddr) do local msg = http.request(sAddr[i][1]) if msg then if (sAddr[i][3]) == "1" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</p.-</item>(.*)") if Link and Description then sMsg = Description if Description == sOldDesc1 then sMsg1 = "" else sOldDesc1 = Description RepChars() if (sAddr[i][2]) == "UTF-8" then sMsg = Utf8ToAnsi(sMsg) end sMsg1 = "••• "..sMsg.."\n\t\tПодробнее: "..Link end end end if (sAddr[i][3]) == "2" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</description>.-</item>(.*)") if Link and Description then sMsg = Description if Description == sOldDesc2 then sMsg2 = "" else sOldDesc2 = Description RepChars() if (sAddr[i][2]) == "UTF-8" then sMsg = Utf8ToAnsi(sMsg) end sMsg2 = "••• "..sMsg.."\n\t\tПодробнее: "..Link end end end end end if sMsg1 ~= "" or sMsg2 ~= "" then if sMsg1 ~= "" and sMsg2 == "" then sMsg1 = "\n\n"..sMsg1.."\n" end if sMsg2 ~= "" and sMsg1 == "" then sMsg2 = "\n\n"..sMsg2.."\n" end if sMsg1 ~= "" and sMsg2 ~= "" then sMsg1 = "\n\n"..sMsg1.."\n" sMsg2 = "\n"..sMsg2.."\n" end Core.SendToAll("<"..sBotName..">"..sMsg1..sMsg2) sMsg1 = "" sMsg2 = "" end end n = 0 collectgarbage("collect") return string.format("%-.2f Kb.",collectgarbage("count")) end function RepChars() sMsg = string.gsub (sMsg, "__g", "ig") sMsg = string.gsub (sMsg, ("%[b%]"), " ") sMsg = string.gsub (sMsg, ("%[/b%]"), " ") sMsg = string.gsub (sMsg, "<br>", "\r\n\t") sMsg = string.gsub (sMsg, "<br />", "\r\n\t") sMsg = string.gsub (sMsg, "<", "<") sMsg = string.gsub (sMsg, ">", ">") sMsg = string.gsub (sMsg, """, string.char (34)) sMsg = string.gsub (sMsg, "&", "") sMsg = string.gsub (sMsg, " ", " ") sMsg = string.gsub (sMsg, "nbsp;", " ") sMsg = string.gsub (sMsg, "$", "$") sMsg = string.gsub (sMsg, "'", "`") sMsg = string.gsub (sMsg, "'", "`") sMsg = string.gsub (sMsg, "|", "") sMsg = string.gsub (sMsg, "|", "") sMsg = string.gsub (sMsg, "<!%[CDATA%[", "") sMsg = string.gsub (sMsg, "%]%]>", "") sMsg = string.gsub (sMsg, "<a target=\"_blank\" href=", "") sMsg = string.gsub (sMsg, ">paparazzi.ru</a>", " ") sMsg = string.gsub (sMsg, "<strong>", "") sMsg = string.gsub (sMsg, "</strong>", "") sMsg = string.gsub (sMsg, "- <a href=", "") sMsg = string.gsub (sMsg, "target=\"_blank\">", " ") sMsg = string.gsub (sMsg, "</a> –", "") sMsg = string.gsub (sMsg, "<p>","") end local utf8_decode={ [128]={[147]="\150",[148]="\151",[152]="\145",[153]="\146",[154]="\130",[156]="\147",[157]="\148",[158]="\132",[160]="\134",[161]="\135",[162]="\149",[166]="\133",[176]="\137",[185]="\139",[186]="\155"}, [130]={[172]="\136"}, [132]={[150]="\185",[162]="\153"}, [194]={[152]="\152",[160]="\160",[164]="\164",[166]="\166",[167]="\167",[169]="\169",[171]="\171",[172]="\172",[173]="\173",[174]="\174",[176]="\176",[177]="\177",[181]="\181",[182]="\182",[183]="\183",[187]="\187"}, [208]={[129]="\168",[130]="\128",[131]="\129",[132]="\170",[133]="\189",[134]="\178",[135]="\175",[136]="\163",[137]="\138",[138]="\140",[139]="\142",[140]="\141",[143]="\143",[144]="\192",[145]="\193",[146]="\194",[147]="\195",[148]="\196", [149]="\197",[150]="\198",[151]="\199",[152]="\200",[153]="\201",[154]="\202",[155]="\203",[156]="\204",[157]="\205",[158]="\206",[159]="\207",[160]="\208",[161]="\209",[162]="\210",[163]="\211",[164]="\212",[165]="\213",[166]="\214", [167]="\215",[168]="\216",[169]="\217",[170]="\218",[171]="\219",[172]="\220",[173]="\221",[174]="\222",[175]="\223",[176]="\224",[177]="\225",[178]="\226",[179]="\227",[180]="\228",[181]="\229",[182]="\230",[183]="\231",[184]="\232", [185]="\233",[186]="\234",[187]="\235",[188]="\236",[189]="\237",[190]="\238",[191]="\239"}, [209]={[128]="\240",[129]="\241",[130]="\242",[131]="\243",[132]="\244",[133]="\245",[134]="\246",[135]="\247",[136]="\248",[137]="\249",[138]="\250",[139]="\251",[140]="\252",[141]="\253",[142]="\254",[143]="\255",[144]="\161",[145]="\184", [146]="\144",[147]="\131",[148]="\186",[149]="\190",[150]="\179",[151]="\191",[152]="\188",[153]="\154",[154]="\156",[155]="\158",[156]="\157",[158]="\162",[159]="\159"},[210]={[144]="\165",[145]="\180"} } local nmdc = { [36] = "$", [124] = "|" } function Utf8ToAnsi(s) local a, j, r, b = 0, 0, "" for i = 1, s and s:len() or 0 do b = s:byte(i) if b < 128 then if nmdc[b] then r = r..nmdc[b] else r = r..string.char(b) end elseif a == 2 then a, j = a - 1, b elseif a == 1 then a, r = a - 1, r..utf8_decode[j][b] elseif b == 226 then a = 2 elseif b == 194 or b == 208 or b == 209 or b == 210 then j, a = b, 1 else r = r.."_" end end return r end И что нужно добавить, чтобы выводило с трёх сайтов? Разобраться как работает скрипт в первом посте. Прикрутить можно хоть сто сайтов. |
|
|
17.10.2012, 19:09
Сообщение
#10
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
Alex Dancer, сколько сайтов, столько и
Код if (sAddr[i][3]) == "№RSS" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</description>.-</item>(.*)") в function OnTimer(tmr) Понял? |
|
|
19.10.2012, 7:20
Сообщение
#11
|
|
Активный участник Группа: Пользователи Сообщений: 62 Регистрация: 23.1.2011 Пользователь №: 8 626 Спасибо сказали: 4 раза |
что-то я не понял, а что менять-то в 45 строке??? Вот мой скрипт Код --[[ Название скрипта: NewsMix Автор: Tsd (Рига, Латвия) Версия скрипта: 1.0 Версия API: API2 Описание скрипта: Скрипт выводит в чат по таймеру новости с двух новостных порталов в случае, если: 1. В чате написано сообщений меньше, чем в настройках. 2. Дневное время суток (ночью скрипт молчит, чтобы не флудить в чате). 3. Новость на сайте изменилась. Если не нужны новости с Латвийского портала - просто задокумментируйте строку в таблице sAddr или измените на другой портал по аналогии. (в этом случае необходимо изменить также строку 45). ]] -- Общие настройки sBotName = "" -- Имя бота. Если "" то имя основного бота хаба. bTimer = 1 -- Выдача по таймеру (в минутах). AntiFl = 50 -- Если в чате было написано столько или более сообщений за время таймера, то новости не будут выданы. StartDay = 7 -- С какого часа до полуночи скрипт будет выдавать новости. sAddr = { {"http://xox.uz/rss.xml","windows-1251","1"}, {"http://news.olam.uz/rss/all.rss/","windows-1251","2"}, } --------------------------- function OnStartup() if sBotName == "" then sBotName = SetMan.GetString(21) end tmr = TmrMan.AddTimer(bTimer*60000) sMsg1,sMsg2,sOldDesc1,sOldDesc2,n = "","","","",0 end function ChatArrival() n = n+1 collectgarbage("collect") end function OnTimer(tmr) local hour = tonumber(os.date("%H")) if (n <= AntiFl) and (hour >= StartDay) then http = require("socket.http") assert(http,"Ошибка загрузки библиотеки socket.http. Проверьте наличие файлов необходимых библиотек.") http.TIMEOUT = 3 for i in pairs(sAddr) do local msg = http.request(sAddr[i][1]) if msg then if (sAddr[i][3]) == "1" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</p.-</item>(.*)") if Link and Description then sMsg = Description if Description == sOldDesc1 then sMsg1 = "" else sOldDesc1 = Description RepChars() if (sAddr[i][2]) == "UTF-8" then sMsg = Utf8ToAnsi(sMsg) end sMsg1 = "••• "..sMsg.."\n\t\tПодробнее: "..Link end end end if (sAddr[i][3]) == "2" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</description>.-</item>(.*)") if Link and Description then sMsg = Description if Description == sOldDesc2 then sMsg2 = "" else sOldDesc2 = Description RepChars() if (sAddr[i][2]) == "UTF-8" then sMsg = Utf8ToAnsi(sMsg) end sMsg2 = "••• "..sMsg.."\n\t\tПодробнее: "..Link end end end end end if sMsg1 ~= "" or sMsg2 ~= "" then if sMsg1 ~= "" and sMsg2 == "" then sMsg1 = "\n\n"..sMsg1.."\n" end if sMsg2 ~= "" and sMsg1 == "" then sMsg2 = "\n\n"..sMsg2.."\n" end if sMsg1 ~= "" and sMsg2 ~= "" then sMsg1 = "\n\n"..sMsg1.."\n" sMsg2 = "\n"..sMsg2.."\n" end Core.SendToAll("<"..sBotName..">"..sMsg1..sMsg2) sMsg1 = "" sMsg2 = "" end end n = 0 collectgarbage("collect") return string.format("%-.2f Kb.",collectgarbage("count")) end function RepChars() sMsg = string.gsub (sMsg, "__g", "ig") sMsg = string.gsub (sMsg, ("%[b%]"), " ") sMsg = string.gsub (sMsg, ("%[/b%]"), " ") sMsg = string.gsub (sMsg, "<br>", "\r\n\t") sMsg = string.gsub (sMsg, "<br />", "\r\n\t") sMsg = string.gsub (sMsg, "<", "<") sMsg = string.gsub (sMsg, ">", ">") sMsg = string.gsub (sMsg, """, string.char (34)) sMsg = string.gsub (sMsg, "&", "") sMsg = string.gsub (sMsg, " ", " ") sMsg = string.gsub (sMsg, "nbsp;", " ") sMsg = string.gsub (sMsg, "$", "$") sMsg = string.gsub (sMsg, "'", "`") sMsg = string.gsub (sMsg, "'", "`") sMsg = string.gsub (sMsg, "|", "") sMsg = string.gsub (sMsg, "|", "") sMsg = string.gsub (sMsg, "<!%[CDATA%[", "") sMsg = string.gsub (sMsg, "%]%]>", "") sMsg = string.gsub (sMsg, "<a target=\"_blank\" href=", "") sMsg = string.gsub (sMsg, ">paparazzi.ru</a>", " ") sMsg = string.gsub (sMsg, "<strong>", "") sMsg = string.gsub (sMsg, "</strong>", "") sMsg = string.gsub (sMsg, "- <a href=", "") sMsg = string.gsub (sMsg, "target=\"_blank\">", " ") sMsg = string.gsub (sMsg, "</a> –", "") sMsg = string.gsub (sMsg, "<p>","") end local utf8_decode={ [128]={[147]="\150",[148]="\151",[152]="\145",[153]="\146",[154]="\130",[156]="\147",[157]="\148",[158]="\132",[160]="\134",[161]="\135",[162]="\149",[166]="\133",[176]="\137",[185]="\139",[186]="\155"}, [130]={[172]="\136"}, [132]={[150]="\185",[162]="\153"}, [194]={[152]="\152",[160]="\160",[164]="\164",[166]="\166",[167]="\167",[169]="\169",[171]="\171",[172]="\172",[173]="\173",[174]="\174",[176]="\176",[177]="\177",[181]="\181",[182]="\182",[183]="\183",[187]="\187"}, [208]={[129]="\168",[130]="\128",[131]="\129",[132]="\170",[133]="\189",[134]="\178",[135]="\175",[136]="\163",[137]="\138",[138]="\140",[139]="\142",[140]="\141",[143]="\143",[144]="\192",[145]="\193",[146]="\194",[147]="\195",[148]="\196", [149]="\197",[150]="\198",[151]="\199",[152]="\200",[153]="\201",[154]="\202",[155]="\203",[156]="\204",[157]="\205",[158]="\206",[159]="\207",[160]="\208",[161]="\209",[162]="\210",[163]="\211",[164]="\212",[165]="\213",[166]="\214", [167]="\215",[168]="\216",[169]="\217",[170]="\218",[171]="\219",[172]="\220",[173]="\221",[174]="\222",[175]="\223",[176]="\224",[177]="\225",[178]="\226",[179]="\227",[180]="\228",[181]="\229",[182]="\230",[183]="\231",[184]="\232", [185]="\233",[186]="\234",[187]="\235",[188]="\236",[189]="\237",[190]="\238",[191]="\239"}, [209]={[128]="\240",[129]="\241",[130]="\242",[131]="\243",[132]="\244",[133]="\245",[134]="\246",[135]="\247",[136]="\248",[137]="\249",[138]="\250",[139]="\251",[140]="\252",[141]="\253",[142]="\254",[143]="\255",[144]="\161",[145]="\184", [146]="\144",[147]="\131",[148]="\186",[149]="\190",[150]="\179",[151]="\191",[152]="\188",[153]="\154",[154]="\156",[155]="\158",[156]="\157",[158]="\162",[159]="\159"},[210]={[144]="\165",[145]="\180"} } local nmdc = { [36] = "$", [124] = "|" } function Utf8ToAnsi(s) local a, j, r, b = 0, 0, "" for i = 1, s and s:len() or 0 do b = s:byte(i) if b < 128 then if nmdc[b] then r = r..nmdc[b] else r = r..string.char(b) end elseif a == 2 then a, j = a - 1, b elseif a == 1 then a, r = a - 1, r..utf8_decode[j][b] elseif b == 226 then a = 2 elseif b == 194 or b == 208 or b == 209 or b == 210 then j, a = b, 1 else r = r.."_" end end return r end И что нужно добавить, чтобы выводило с трёх сайтов? замени на этот Код -- Общие настройки sBotName = "" -- Имя бота. Если "" то имя основного бота хаба. bTimer = 1 -- Выдача по таймеру (в минутах). AntiFl = 50 -- Если в чате было написано столько или более сообщений за время таймера, то новости не будут выданы. StartDay = 3 -- С какого часа до полуночи скрипт будет выдавать новости. sAddr = { {"http://xox.uz/rss.xml","windows-1251","1"}, {"http://kids.xox.uz/engine/rss.php","windows-1251","2"}, {"http://news.olam.uz/rss/all.rss","windows-1251","3"}, } --------------------------- function OnStartup() if sBotName == "" then sBotName = SetMan.GetString(21) end tmr = TmrMan.AddTimer(bTimer*60000) sMsg1,sMsg2,sOldDesc1,sOldDesc2,n = "","","","",0 end function ChatArrival() n = n+1 collectgarbage("collect") end function OnTimer(tmr) local hour = tonumber(os.date("%H")) if (n <= AntiFl) and (hour >= StartDay) then http = require("socket.http") assert(http,"Ошибка загрузки библиотеки socket.http. Проверьте наличие файлов необходимых библиотек.") http.TIMEOUT = 3 for i in pairs(sAddr) do local msg = http.request(sAddr[i][1]) if msg then if (sAddr[i][3]) == "1" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</p.-</item>(.*)") if Link and Description then sMsg = Description if Description == sOldDesc1 then sMsg1 = "" else sOldDesc1 = Description RepChars() if (sAddr[i][2]) == "UTF-8" then sMsg = Utf8ToAnsi(sMsg) end sMsg1 = "RSS "..sMsg.."\n\t\tПодробности: "..Link end end end if (sAddr[i][3]) == "2" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</description>.-</item>(.*)") if Link and Description then sMsg = Description if Description == sOldDesc2 then sMsg2 = "" else sOldDesc2 = Description RepChars() if (sAddr[i][2]) == "UTF-8" then sMsg = Utf8ToAnsi(sMsg) end sMsg2 = "RSS "..sMsg.."\n\t\tПодробности: "..Link end end end if (sAddr[i][3]) == "3" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</description>.-</item>(.*)") if Link and Description then sMsg = Description if Description == sOldDesc3 then sMsg3 = "" else sOldDesc3 = Description RepChars() if (sAddr[i][2]) == "UTF-8" then sMsg = Utf8ToAnsi(sMsg) end sMsg3 = "RSS "..sMsg.."\n\t\tПодробности: "..Link end end end end end if sMsg1 ~= "" or sMsg2 ~= "" or sMsg3 ~= "" then if sMsg1 ~= "" and sMsg2 == "" and sMsg3 == "" then sMsg1 = "\n\n"..sMsg1.."\n" end if sMsg2 ~= "" and sMsg1 == "" and sMsg3 == "" then sMsg2 = "\n\n"..sMsg2.."\n" end if sMsg3 ~= "" and sMsg1 == "" and sMsg2 == "" then sMsg2 = "\n\n"..sMsg3.."\n" end if sMsg1 ~= "" and sMsg2 ~= "" and sMsg3 ~= "" then sMsg1 = "\n"..sMsg1.."\n" sMsg2 = "\n"..sMsg2.."\n" sMsg3 = "\n"..sMsg3.."\n" end Core.SendToAll("<"..sBotName..">"..sMsg1..sMsg2..sMsg3) sMsg1 = "" sMsg2 = "" sMsg3 = "" end end n = 0 collectgarbage("collect") return string.format("%-.2f Kb.",collectgarbage("count")) end function RepChars() sMsg = string.gsub (sMsg, "__g", "ig") sMsg = string.gsub (sMsg, ("%[b%]"), " ") sMsg = string.gsub (sMsg, ("%[/b%]"), " ") sMsg = string.gsub (sMsg, "<br>", "\r\n\t") sMsg = string.gsub (sMsg, "<br />", "\r\n\t") sMsg = string.gsub (sMsg, "<", "<") sMsg = string.gsub (sMsg, ">", ">") sMsg = string.gsub (sMsg, """, string.char (34)) sMsg = string.gsub (sMsg, "&", "") sMsg = string.gsub (sMsg, " ", " ") sMsg = string.gsub (sMsg, "nbsp;", " ") sMsg = string.gsub (sMsg, "$", "$") sMsg = string.gsub (sMsg, "'", "`") sMsg = string.gsub (sMsg, "'", "`") sMsg = string.gsub (sMsg, "|", "") sMsg = string.gsub (sMsg, "|", "") sMsg = string.gsub (sMsg, "<!%[CDATA%[", "") sMsg = string.gsub (sMsg, "%]%]>", "") sMsg = string.gsub (sMsg, "<a target=\"_blank\" href=", "") sMsg = string.gsub (sMsg, ">paparazzi.ru</a>", " ") sMsg = string.gsub (sMsg, "<strong>", "") sMsg = string.gsub (sMsg, "</strong>", "") sMsg = string.gsub (sMsg, "- <a href=", "") sMsg = string.gsub (sMsg, "target=\"_blank\">", " ") sMsg = string.gsub (sMsg, "</a> –", "") sMsg = string.gsub (sMsg, "<p>","") end local utf8_decode={ [128]={[147]="\150",[148]="\151",[152]="\145",[153]="\146",[154]="\130",[156]="\147",[157]="\148",[158]="\132",[160]="\134",[161]="\135",[162]="\149",[166]="\133",[176]="\137",[185]="\139",[186]="\155"}, [130]={[172]="\136"}, [132]={[150]="\185",[162]="\153"}, [194]={[152]="\152",[160]="\160",[164]="\164",[166]="\166",[167]="\167",[169]="\169",[171]="\171",[172]="\172",[173]="\173",[174]="\174",[176]="\176",[177]="\177",[181]="\181",[182]="\182",[183]="\183",[187]="\187"}, [208]={[129]="\168",[130]="\128",[131]="\129",[132]="\170",[133]="\189",[134]="\178",[135]="\175",[136]="\163",[137]="\138",[138]="\140",[139]="\142",[140]="\141",[143]="\143",[144]="\192",[145]="\193",[146]="\194",[147]="\195",[148]="\196", [149]="\197",[150]="\198",[151]="\199",[152]="\200",[153]="\201",[154]="\202",[155]="\203",[156]="\204",[157]="\205",[158]="\206",[159]="\207",[160]="\208",[161]="\209",[162]="\210",[163]="\211",[164]="\212",[165]="\213",[166]="\214", [167]="\215",[168]="\216",[169]="\217",[170]="\218",[171]="\219",[172]="\220",[173]="\221",[174]="\222",[175]="\223",[176]="\224",[177]="\225",[178]="\226",[179]="\227",[180]="\228",[181]="\229",[182]="\230",[183]="\231",[184]="\232", [185]="\233",[186]="\234",[187]="\235",[188]="\236",[189]="\237",[190]="\238",[191]="\239"}, [209]={[128]="\240",[129]="\241",[130]="\242",[131]="\243",[132]="\244",[133]="\245",[134]="\246",[135]="\247",[136]="\248",[137]="\249",[138]="\250",[139]="\251",[140]="\252",[141]="\253",[142]="\254",[143]="\255",[144]="\161",[145]="\184", [146]="\144",[147]="\131",[148]="\186",[149]="\190",[150]="\179",[151]="\191",[152]="\188",[153]="\154",[154]="\156",[155]="\158",[156]="\157",[158]="\162",[159]="\159"},[210]={[144]="\165",[145]="\180"} } local nmdc = { [36] = "$", [124] = "|" } function Utf8ToAnsi(s) local a, j, r, b = 0, 0, "" for i = 1, s and s:len() or 0 do b = s:byte(i) if b < 128 then if nmdc[b] then r = r..nmdc[b] else r = r..string.char(b) end elseif a == 2 then a, j = a - 1, b elseif a == 1 then a, r = a - 1, r..utf8_decode[j][b] elseif b == 226 then a = 2 elseif b == 194 or b == 208 or b == 209 or b == 210 then j, a = b, 1 else r = r.."_" end end return r end что-то я не понял, а что менять-то в 45 строке??? Вот мой скрипт Код --[[ Название скрипта: NewsMix Автор: Tsd (Рига, Латвия) Версия скрипта: 1.0 Версия API: API2 Описание скрипта: Скрипт выводит в чат по таймеру новости с двух новостных порталов в случае, если: 1. В чате написано сообщений меньше, чем в настройках. 2. Дневное время суток (ночью скрипт молчит, чтобы не флудить в чате). 3. Новость на сайте изменилась. Если не нужны новости с Латвийского портала - просто задокумментируйте строку в таблице sAddr или измените на другой портал по аналогии. (в этом случае необходимо изменить также строку 45). ]] -- Общие настройки sBotName = "" -- Имя бота. Если "" то имя основного бота хаба. bTimer = 1 -- Выдача по таймеру (в минутах). AntiFl = 50 -- Если в чате было написано столько или более сообщений за время таймера, то новости не будут выданы. StartDay = 7 -- С какого часа до полуночи скрипт будет выдавать новости. sAddr = { {"http://xox.uz/rss.xml","windows-1251","1"}, {"http://news.olam.uz/rss/all.rss/","windows-1251","2"}, } --------------------------- function OnStartup() if sBotName == "" then sBotName = SetMan.GetString(21) end tmr = TmrMan.AddTimer(bTimer*60000) sMsg1,sMsg2,sOldDesc1,sOldDesc2,n = "","","","",0 end function ChatArrival() n = n+1 collectgarbage("collect") end function OnTimer(tmr) local hour = tonumber(os.date("%H")) if (n <= AntiFl) and (hour >= StartDay) then http = require("socket.http") assert(http,"Ошибка загрузки библиотеки socket.http. Проверьте наличие файлов необходимых библиотек.") http.TIMEOUT = 3 for i in pairs(sAddr) do local msg = http.request(sAddr[i][1]) if msg then if (sAddr[i][3]) == "1" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</p.-</item>(.*)") if Link and Description then sMsg = Description if Description == sOldDesc1 then sMsg1 = "" else sOldDesc1 = Description RepChars() if (sAddr[i][2]) == "UTF-8" then sMsg = Utf8ToAnsi(sMsg) end sMsg1 = "••• "..sMsg.."\n\t\tПодробнее: "..Link end end end if (sAddr[i][3]) == "2" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</description>.-</item>(.*)") if Link and Description then sMsg = Description if Description == sOldDesc2 then sMsg2 = "" else sOldDesc2 = Description RepChars() if (sAddr[i][2]) == "UTF-8" then sMsg = Utf8ToAnsi(sMsg) end sMsg2 = "••• "..sMsg.."\n\t\tПодробнее: "..Link end end end end end if sMsg1 ~= "" or sMsg2 ~= "" then if sMsg1 ~= "" and sMsg2 == "" then sMsg1 = "\n\n"..sMsg1.."\n" end if sMsg2 ~= "" and sMsg1 == "" then sMsg2 = "\n\n"..sMsg2.."\n" end if sMsg1 ~= "" and sMsg2 ~= "" then sMsg1 = "\n\n"..sMsg1.."\n" sMsg2 = "\n"..sMsg2.."\n" end Core.SendToAll("<"..sBotName..">"..sMsg1..sMsg2) sMsg1 = "" sMsg2 = "" end end n = 0 collectgarbage("collect") return string.format("%-.2f Kb.",collectgarbage("count")) end function RepChars() sMsg = string.gsub (sMsg, "__g", "ig") sMsg = string.gsub (sMsg, ("%[b%]"), " ") sMsg = string.gsub (sMsg, ("%[/b%]"), " ") sMsg = string.gsub (sMsg, "<br>", "\r\n\t") sMsg = string.gsub (sMsg, "<br />", "\r\n\t") sMsg = string.gsub (sMsg, "<", "<") sMsg = string.gsub (sMsg, ">", ">") sMsg = string.gsub (sMsg, """, string.char (34)) sMsg = string.gsub (sMsg, "&", "") sMsg = string.gsub (sMsg, " ", " ") sMsg = string.gsub (sMsg, "nbsp;", " ") sMsg = string.gsub (sMsg, "$", "$") sMsg = string.gsub (sMsg, "'", "`") sMsg = string.gsub (sMsg, "'", "`") sMsg = string.gsub (sMsg, "|", "") sMsg = string.gsub (sMsg, "|", "") sMsg = string.gsub (sMsg, "<!%[CDATA%[", "") sMsg = string.gsub (sMsg, "%]%]>", "") sMsg = string.gsub (sMsg, "<a target=\"_blank\" href=", "") sMsg = string.gsub (sMsg, ">paparazzi.ru</a>", " ") sMsg = string.gsub (sMsg, "<strong>", "") sMsg = string.gsub (sMsg, "</strong>", "") sMsg = string.gsub (sMsg, "- <a href=", "") sMsg = string.gsub (sMsg, "target=\"_blank\">", " ") sMsg = string.gsub (sMsg, "</a> –", "") sMsg = string.gsub (sMsg, "<p>","") end local utf8_decode={ [128]={[147]="\150",[148]="\151",[152]="\145",[153]="\146",[154]="\130",[156]="\147",[157]="\148",[158]="\132",[160]="\134",[161]="\135",[162]="\149",[166]="\133",[176]="\137",[185]="\139",[186]="\155"}, [130]={[172]="\136"}, [132]={[150]="\185",[162]="\153"}, [194]={[152]="\152",[160]="\160",[164]="\164",[166]="\166",[167]="\167",[169]="\169",[171]="\171",[172]="\172",[173]="\173",[174]="\174",[176]="\176",[177]="\177",[181]="\181",[182]="\182",[183]="\183",[187]="\187"}, [208]={[129]="\168",[130]="\128",[131]="\129",[132]="\170",[133]="\189",[134]="\178",[135]="\175",[136]="\163",[137]="\138",[138]="\140",[139]="\142",[140]="\141",[143]="\143",[144]="\192",[145]="\193",[146]="\194",[147]="\195",[148]="\196", [149]="\197",[150]="\198",[151]="\199",[152]="\200",[153]="\201",[154]="\202",[155]="\203",[156]="\204",[157]="\205",[158]="\206",[159]="\207",[160]="\208",[161]="\209",[162]="\210",[163]="\211",[164]="\212",[165]="\213",[166]="\214", [167]="\215",[168]="\216",[169]="\217",[170]="\218",[171]="\219",[172]="\220",[173]="\221",[174]="\222",[175]="\223",[176]="\224",[177]="\225",[178]="\226",[179]="\227",[180]="\228",[181]="\229",[182]="\230",[183]="\231",[184]="\232", [185]="\233",[186]="\234",[187]="\235",[188]="\236",[189]="\237",[190]="\238",[191]="\239"}, [209]={[128]="\240",[129]="\241",[130]="\242",[131]="\243",[132]="\244",[133]="\245",[134]="\246",[135]="\247",[136]="\248",[137]="\249",[138]="\250",[139]="\251",[140]="\252",[141]="\253",[142]="\254",[143]="\255",[144]="\161",[145]="\184", [146]="\144",[147]="\131",[148]="\186",[149]="\190",[150]="\179",[151]="\191",[152]="\188",[153]="\154",[154]="\156",[155]="\158",[156]="\157",[158]="\162",[159]="\159"},[210]={[144]="\165",[145]="\180"} } local nmdc = { [36] = "$", [124] = "|" } function Utf8ToAnsi(s) local a, j, r, b = 0, 0, "" for i = 1, s and s:len() or 0 do b = s:byte(i) if b < 128 then if nmdc[b] then r = r..nmdc[b] else r = r..string.char(b) end elseif a == 2 then a, j = a - 1, b elseif a == 1 then a, r = a - 1, r..utf8_decode[j][b] elseif b == 226 then a = 2 elseif b == 194 or b == 208 or b == 209 or b == 210 then j, a = b, 1 else r = r.."_" end end return r end И что нужно добавить, чтобы выводило с трёх сайтов? замени на этот Код -- Общие настройки sBotName = "" -- Имя бота. Если "" то имя основного бота хаба. bTimer = 1 -- Выдача по таймеру (в минутах). AntiFl = 50 -- Если в чате было написано столько или более сообщений за время таймера, то новости не будут выданы. StartDay = 3 -- С какого часа до полуночи скрипт будет выдавать новости. sAddr = { {"http://xox.uz/rss.xml","windows-1251","1"}, {"http://kids.xox.uz/engine/rss.php","windows-1251","2"}, {"http://news.olam.uz/rss/all.rss","windows-1251","3"}, } --------------------------- function OnStartup() if sBotName == "" then sBotName = SetMan.GetString(21) end tmr = TmrMan.AddTimer(bTimer*60000) sMsg1,sMsg2,sOldDesc1,sOldDesc2,n = "","","","",0 end function ChatArrival() n = n+1 collectgarbage("collect") end function OnTimer(tmr) local hour = tonumber(os.date("%H")) if (n <= AntiFl) and (hour >= StartDay) then http = require("socket.http") assert(http,"Ошибка загрузки библиотеки socket.http. Проверьте наличие файлов необходимых библиотек.") http.TIMEOUT = 3 for i in pairs(sAddr) do local msg = http.request(sAddr[i][1]) if msg then if (sAddr[i][3]) == "1" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</p.-</item>(.*)") if Link and Description then sMsg = Description if Description == sOldDesc1 then sMsg1 = "" else sOldDesc1 = Description RepChars() if (sAddr[i][2]) == "UTF-8" then sMsg = Utf8ToAnsi(sMsg) end sMsg1 = "RSS "..sMsg.."\n\t\tПодробности: "..Link end end end if (sAddr[i][3]) == "2" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</description>.-</item>(.*)") if Link and Description then sMsg = Description if Description == sOldDesc2 then sMsg2 = "" else sOldDesc2 = Description RepChars() if (sAddr[i][2]) == "UTF-8" then sMsg = Utf8ToAnsi(sMsg) end sMsg2 = "RSS "..sMsg.."\n\t\tПодробности: "..Link end end end if (sAddr[i][3]) == "3" then _,_,Link,Description = string.find(msg,"<item>.-<link>(.-)</link>.-<description>(.-)</description>.-</item>(.*)") if Link and Description then sMsg = Description if Description == sOldDesc3 then sMsg3 = "" else sOldDesc3 = Description RepChars() if (sAddr[i][2]) == "UTF-8" then sMsg = Utf8ToAnsi(sMsg) end sMsg3 = "RSS "..sMsg.."\n\t\tПодробности: "..Link end end end end end if sMsg1 ~= "" or sMsg2 ~= "" or sMsg3 ~= "" then if sMsg1 ~= "" and sMsg2 == "" and sMsg3 == "" then sMsg1 = "\n\n"..sMsg1.."\n" end if sMsg2 ~= "" and sMsg1 == "" and sMsg3 == "" then sMsg2 = "\n\n"..sMsg2.."\n" end if sMsg3 ~= "" and sMsg1 == "" and sMsg2 == "" then sMsg3 = "\n\n"..sMsg3.."\n" end if sMsg1 ~= "" and sMsg2 ~= "" and sMsg3 ~= "" then sMsg1 = "\n"..sMsg1.."\n" sMsg2 = "\n"..sMsg2.."\n" sMsg3 = "\n"..sMsg3.."\n" end Core.SendToAll("<"..sBotName..">"..sMsg1..sMsg2..sMsg3) sMsg1 = "" sMsg2 = "" sMsg3 = "" end end n = 0 collectgarbage("collect") return string.format("%-.2f Kb.",collectgarbage("count")) end function RepChars() sMsg = string.gsub (sMsg, "__g", "ig") sMsg = string.gsub (sMsg, ("%[b%]"), " ") sMsg = string.gsub (sMsg, ("%[/b%]"), " ") sMsg = string.gsub (sMsg, "<br>", "\r\n\t") sMsg = string.gsub (sMsg, "<br />", "\r\n\t") sMsg = string.gsub (sMsg, "<", "<") sMsg = string.gsub (sMsg, ">", ">") sMsg = string.gsub (sMsg, """, string.char (34)) sMsg = string.gsub (sMsg, "&", "") sMsg = string.gsub (sMsg, " ", " ") sMsg = string.gsub (sMsg, "nbsp;", " ") sMsg = string.gsub (sMsg, "$", "$") sMsg = string.gsub (sMsg, "'", "`") sMsg = string.gsub (sMsg, "'", "`") sMsg = string.gsub (sMsg, "|", "") sMsg = string.gsub (sMsg, "|", "") sMsg = string.gsub (sMsg, "<!%[CDATA%[", "") sMsg = string.gsub (sMsg, "%]%]>", "") sMsg = string.gsub (sMsg, "<a target=\"_blank\" href=", "") sMsg = string.gsub (sMsg, ">paparazzi.ru</a>", " ") sMsg = string.gsub (sMsg, "<strong>", "") sMsg = string.gsub (sMsg, "</strong>", "") sMsg = string.gsub (sMsg, "- <a href=", "") sMsg = string.gsub (sMsg, "target=\"_blank\">", " ") sMsg = string.gsub (sMsg, "</a> –", "") sMsg = string.gsub (sMsg, "<p>","") end local utf8_decode={ [128]={[147]="\150",[148]="\151",[152]="\145",[153]="\146",[154]="\130",[156]="\147",[157]="\148",[158]="\132",[160]="\134",[161]="\135",[162]="\149",[166]="\133",[176]="\137",[185]="\139",[186]="\155"}, [130]={[172]="\136"}, [132]={[150]="\185",[162]="\153"}, [194]={[152]="\152",[160]="\160",[164]="\164",[166]="\166",[167]="\167",[169]="\169",[171]="\171",[172]="\172",[173]="\173",[174]="\174",[176]="\176",[177]="\177",[181]="\181",[182]="\182",[183]="\183",[187]="\187"}, [208]={[129]="\168",[130]="\128",[131]="\129",[132]="\170",[133]="\189",[134]="\178",[135]="\175",[136]="\163",[137]="\138",[138]="\140",[139]="\142",[140]="\141",[143]="\143",[144]="\192",[145]="\193",[146]="\194",[147]="\195",[148]="\196", [149]="\197",[150]="\198",[151]="\199",[152]="\200",[153]="\201",[154]="\202",[155]="\203",[156]="\204",[157]="\205",[158]="\206",[159]="\207",[160]="\208",[161]="\209",[162]="\210",[163]="\211",[164]="\212",[165]="\213",[166]="\214", [167]="\215",[168]="\216",[169]="\217",[170]="\218",[171]="\219",[172]="\220",[173]="\221",[174]="\222",[175]="\223",[176]="\224",[177]="\225",[178]="\226",[179]="\227",[180]="\228",[181]="\229",[182]="\230",[183]="\231",[184]="\232", [185]="\233",[186]="\234",[187]="\235",[188]="\236",[189]="\237",[190]="\238",[191]="\239"}, [209]={[128]="\240",[129]="\241",[130]="\242",[131]="\243",[132]="\244",[133]="\245",[134]="\246",[135]="\247",[136]="\248",[137]="\249",[138]="\250",[139]="\251",[140]="\252",[141]="\253",[142]="\254",[143]="\255",[144]="\161",[145]="\184", [146]="\144",[147]="\131",[148]="\186",[149]="\190",[150]="\179",[151]="\191",[152]="\188",[153]="\154",[154]="\156",[155]="\158",[156]="\157",[158]="\162",[159]="\159"},[210]={[144]="\165",[145]="\180"} } local nmdc = { [36] = "$", [124] = "|" } function Utf8ToAnsi(s) local a, j, r, b = 0, 0, "" for i = 1, s and s:len() or 0 do b = s:byte(i) if b < 128 then if nmdc[b] then r = r..nmdc[b] else r = r..string.char(b) end elseif a == 2 then a, j = a - 1, b elseif a == 1 then a, r = a - 1, r..utf8_decode[j][b] elseif b == 226 then a = 2 elseif b == 194 or b == 208 or b == 209 or b == 210 then j, a = b, 1 else r = r.."_" end end return r end |
|
|
19.10.2012, 8:53
Сообщение
#12
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
nafig, шёл бы ты отсюда, бесполезный флудераст.
|
|
|
19.10.2012, 9:34
Сообщение
#13
|
|
Продвинутый участник Группа: Пользователи Сообщений: 176 Регистрация: 11.7.2008 Пользователь №: 171 Спасибо сказали: 182 раза |
To nafig
Тогда строку sMsg1,sMsg2,sOldDesc1,sOldDesc2,n = "","","","",0 нужно изменить на sMsg1,sMsg2,sMsg3,sOldDesc1,sOldDesc2,sOldDesc3,n = "","","","","","",0 |
|
|
19.10.2012, 10:24
Сообщение
#14
|
|
Активный участник Группа: Пользователи Сообщений: 62 Регистрация: 23.1.2011 Пользователь №: 8 626 Спасибо сказали: 4 раза |
To nafig Тогда в строку sMsg1,sMsg2,sOldDesc1,sOldDesc2,n = "","","","",0 нужно изменить на sMsg1,sMsg2,sMsg3,sOldDesc1,sOldDesc2,sOldDesc3,n = "","","","","","",0 Угу. Я в курсе. Он наверное и сам бы понял наверное. хотя без неё тоже пашет. но не все RSS ленты. Этот скрипт не всё поддерживает. Вот дапустим вот этот RSS который намного полезнее на хабе не тянет |
|
|
19.10.2012, 10:33
Сообщение
#15
|
|
Продвинутый участник Группа: Пользователи Сообщений: 176 Регистрация: 11.7.2008 Пользователь №: 171 Спасибо сказали: 182 раза |
Угу. Я в курсе. Он наверное и сам бы понял наверное. хотя без неё тоже пашет. но не все RSS ленты. Этот скрипт не всё поддерживает. Вот дапустим вот этот RSS который намного полезнее на хабе не тянет Всё можно сделать, меняйте строку захвата. К примеру адрес |
|
|
19.10.2012, 11:09
Сообщение
#16
|
|
Активный участник Группа: Пользователи Сообщений: 62 Регистрация: 23.1.2011 Пользователь №: 8 626 Спасибо сказали: 4 раза |
Всё можно сделать, меняйте строку захвата. К примеру адрес Пишу же что нет. Скрипт вообще молчит и не пытается ничё делать. Там вывод новости с зоголовком а не содержимым статьи. Вот так короче через немного другой скрипт выглядит Аппаратные средства •••Microsoft полна решимости развивать своё аппаратное обеспечение••• Даже если этому будут не рады партнёры компании. Fri, 19 Oct 2012 11:16:31 +0400 |
|
|
19.10.2012, 12:10
Сообщение
#17
|
|
Продвинутый участник Группа: Пользователи Сообщений: 176 Регистрация: 11.7.2008 Пользователь №: 171 Спасибо сказали: 182 раза |
Пишу же что нет. Скрипт вообще молчит и не пытается ничё делать. Там вывод новости с зоголовком а не содержимым статьи. Вот так короче через немного другой скрипт выглядит Аппаратные средства •••Microsoft полна решимости развивать своё аппаратное обеспечение••• Даже если этому будут не рады партнёры компании. Fri, 19 Oct 2012 11:16:31 +0400 И в скрипте указан этот адрес? |
|
|
19.10.2012, 14:31
Сообщение
#18
|
|
Активный участник Группа: Пользователи Сообщений: 62 Регистрация: 23.1.2011 Пользователь №: 8 626 Спасибо сказали: 4 раза |
И в скрипте указан этот адрес? угу и скинопоиска тоже чёт марзянка. хотя у тя вскрипте всё прописано вроде RSS В продаже появился Blu-Ray <a href='http://www.kinopoisk.ru/film/712758/buy/'><b>Пинк Флойд: История альбома Wish You Were Here</b></a>.<br /><b>звук:</b> Английский DTS-HD Master audio<br>Английский Dolby Digital 2.0 - <br /><b>субтитры:</b> Английский / Немецкий / Испанский / Французский - <br /><b>региональный код:</b> А, B, С - <br /><b>изображение:</b> 1080p High Definition 16:9 - <br /><b>доп. материалы:</b> Material previously unseen on TV - <br /><b>упаковка:</b> Keep case - <br /><b>дистрибьютор:</b> Волтэкс-инвест - <br /><b>слои:</b> 2 слоя - <br><br><br><a href='http://www.kinopoisk.ru/film/712758/buy/'><b>Подробнее...</b></a> Подробности: На КиноПоиске появился новый саундтрек к фильму <a href='http://www.kinopoisk.ru/film/568550/tracks/'><b>Белоснежка и охотник</b></a>.<br><br><br><a href='http://www.kinopoisk.ru/film/568550/tracks/'><b>Подробнее...</b></a> Подробности: |
|
|
20.10.2012, 0:13
Сообщение
#19
|
|
Начинающий Группа: Пользователи Сообщений: 16 Регистрация: 13.10.2012 Пользователь №: 10 908 Спасибо сказали: 0 раз |
Народ отошёл от темы, да и фиг бы с ним... Но до меня так и не дошло, где и что поменять, чтоб скрипт парсил с нужных мне сайтов... Хоть я и не Штирлиц... Может кто из гуру скрипт-райтеров выложить рабочий код с моими ссылками?
P.S. для тех кто не понял про Штирлица, вспомните анекдот... |
|
|
20.10.2012, 1:33
Сообщение
#20
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Про Штирлица анекдотов миллион.
Цитата Но до меня так и не дошло, где и что поменять, чтоб скрипт парсил с нужных мне сайтов.. Практически для каждого сайта приходится писать свой код захвата, особенно, если захват производится не из исходника RSS. Так что вникайте в логику захвата текста со страниц и сможете сами подгонять скрипт под любой сайт.
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
NewsMix Скрипт выводит в чат по таймеру новости с двух новостных порталов |
0 | Vizunchik | 5 556 | 28.10.2012, 16:18 Посл. сообщение: Vizunchik |
|
Сейчас: 23.11.2024, 0:23 |