Интересные факты, Скрипт вставляет в главный чат интересные факты с сайта |
Здравствуйте, гость ( Вход | Регистрация )
Интересные факты, Скрипт вставляет в главный чат интересные факты с сайта |
16.2.2011, 22:52
Сообщение
#1
|
|
Продвинутый участник Группа: Пользователи Сообщений: 157 Регистрация: 19.1.2010 Из: Волгоград Пользователь №: 5 756 Спасибо сказали: 77 раз |
Интересные факты Название: facts_api2 Версия API: API2 Автор: dimajak Цитаты с сайта webdiscover.ru Сваял, как говорится "на коленке". Это не реклама сайта, просто наткнулся на страничку, где выводились факты, через пару дней наткнулся на описание библиотеки Luasocket. Решил их подружить. Для работы скрипта необходимы библиотеки Luasocket. Доступные настройки: sBot - имя бота (Факты) TmrTime - периодичность вывода фактов, в минутах (15) Скачать: facts_api2.lua ( 796 байт ) Кол-во скачиваний: 351 Еще одна версия скрипта с поддержкой MySQL. Теперь факты сохраняются в БД и повторы не выводятся. Дается 10 попыток запроса для неповторяющегося факта. Для работы скрипта необходимы библиотеки DLL библиотека для работы с базой данных MySQL. Скачать: facts_mysql_api2.lua ( 2.68 килобайт ) Кол-во скачиваний: 152 |
|
|
17.2.2011, 6:24
Сообщение
#2
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 4 Регистрация: 4.12.2008 Из: Москва Пользователь №: 1 306 Спасибо сказали: 0 раз |
и как им пользаватся? не менюшки не команд...ошибки тоже нет...или он автоматически каждые 15 минут сам выдаёт?
|
|
|
17.2.2011, 12:22
Сообщение
#3
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 6 Регистрация: 22.12.2009 Пользователь №: 5 440 Спасибо сказали: 1 раз |
|
|
|
17.2.2011, 13:58
Сообщение
#4
|
|
Активный участник Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз |
Да, работает каждые 15 мин и время можно изменять...
Думаю, что лишняя информация пользователям не помешает (особенно, когда нет активного общения), да и отключить (при необходимости) всегда можно! |
|
|
18.2.2011, 23:39
Сообщение
#5
|
|
Продвинутый участник Группа: Пользователи Сообщений: 157 Регистрация: 19.1.2010 Из: Волгоград Пользователь №: 5 756 Спасибо сказали: 77 раз |
Решил прикрутить БД в MySQL чтобы факты "впустую" не выводились.
Теперь факты сохраняются в БД, при этом повторы не сохраняются в БД, и не выводятся в чат. Дается 10 попыток для вывода неповторяющегося факта. Добавились настройки для работы с MySQL. БД с фактами можно будет использовать, например, на своем сайте. Т.е. скрипт будет накапливать факты в БД, одновременно информируя посетителей хаба, а на сайте вы сможете выводить случайный факт из этой БД, развлекая уже посетителей сайта. ПыСы. В моей БД уже более 400 фактов. |
|
|
3.5.2012, 8:18
Сообщение
#6
|
|
Глубина-глубина, я не твой… Отпусти меня, глубина… Группа: Пользователи Сообщений: 199 Регистрация: 13.10.2010 Из: Михайловск Пользователь №: 7 882 Спасибо сказали: 23 раза |
Спасибо за хороший скрипт, все работает ошибок не выводит сообщения не повторяются, только вот последнюю букву в предложении съедает постоянно
|
|
|
3.5.2012, 15:15
Сообщение
#7
|
|
Продвинутый участник Группа: Пользователи Сообщений: 157 Регистрация: 19.1.2010 Из: Волгоград Пользователь №: 5 756 Спасибо сказали: 77 раз |
Спасибо за хороший скрипт, все работает ошибок не выводит сообщения не повторяются, только вот последнюю букву в предложении съедает постоянно Это я символ точки "проглатывал", наверное Код fd = string.sub(fd,1,string.len(fd)-2) 2 заменить на 1.
|
|
|
3.5.2012, 19:24
Сообщение
#8
|
|
Глубина-глубина, я не твой… Отпусти меня, глубина… Группа: Пользователи Сообщений: 199 Регистрация: 13.10.2010 Из: Михайловск Пользователь №: 7 882 Спасибо сказали: 23 раза |
|
|
|
27.5.2012, 11:48
Сообщение
#9
|
|
Глубина-глубина, я не твой… Отпусти меня, глубина… Группа: Пользователи Сообщений: 199 Регистрация: 13.10.2010 Из: Михайловск Пользователь №: 7 882 Спасибо сказали: 23 раза |
перестало выводить факты, никаких ошибок нету... вариант с мускулом.
|
|
|
6.3.2014, 23:10
Сообщение
#10
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Часть кода из скрипта facts_mysql_api2.lua:
Код ... if flag then Core.SendToAll("<"..sBot.."> "..fd) break end ... Изначально зачем здесь оператор break, какая роль ему отведена? Проверил – и без него тоже работает. |
|
|
7.3.2014, 5:57
Сообщение
#11
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
MIKHAIL,
А вы проследите работу цикла, начинающегося с Код while schet < 10 and not flag do и поймёте.Бонус: команда break применяется для останова и выхода из цикла до выполнения изначальных условий (они в той строке, которую я привёл выше). Хотя я подозреваю, что можно было не and not flag do, а or not flag do и обойтись без break (цикл автоматом завершился бы после первого же появления значения true для булевой переменной flag, отправив в чат сообщение и дойдя до end уровня while). Это моё imho, возможно, у автора есть иное мнение.. |
|
|
8.3.2014, 2:10
Сообщение
#12
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Ksan, не сообразил я, что break применяется для останова и выхода из цикла.
Проследил, и, кстати, при конструкции and not flag do наличие break не обязательно, а вот при or not flag do – обязательно. |
|
|
6.8.2014, 11:28
Сообщение
#13
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 2 Регистрация: 16.2.2014 Пользователь №: 12 320 Спасибо сказали: 0 раз |
ребята на PtokaX 0.5.0.2 на x64 выводит вместо текста бра-кодабру
|
|
|
8.8.2014, 1:33
Сообщение
#14
|
|
Активный участник Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз |
Devil_Blood
Да, есть такое дело! Надо править кодировку в скрипте видимо, чтобы шёл русский язык. Видно изменение на сайте произошло у них! Просить надо знающих людей теперь! |
|
|
8.8.2014, 13:11
Сообщение
#15
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Marc, Devil_Blood,
Об этом написано уже тысячу раз, и в сотне скриптов решение применено! Просто меняете кодировку результата на читабельную. Применительно к этому скрипту - перед отправкой в чат полученный результат нужно преобразовать в ANSI-кодировку: Код if fd and sz then fd = Utf8ToAnsi(fd) -- это новая добавленная строка Core.SendToAll("<"..sBot.."> "..fd) end А вот само преобразование будет происходить ниже в другой функции (то, что в спойлере, нужно добавить к существующему скрипту ниже всех строк): Переконвертирование с UTF-8 на ANSI Код ---- Функция преобразования UTF-8 в ansi (by Setuper) 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 elseif a == 1 and utf8_decode[j] and utf8_decode[j][b] then -- local z = string.char(b) -- Core.SendToNick(sAdmin, z.." "..a.." "..r.." "..j.." "..b) 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 ---- конец функции преобразования ------ function OnError(s) Core.SendToOpChat(s) end В конце я добавил вывод в Опчат ошибок скрипта при падении в ходе тестирвания или работы. Это нужно приделать в любой ваш скрипт в Птоке. Хотя я бы скрипт написал несколько иначе. Но что есть, то есть, дело авторское. |
|
|
11.8.2014, 14:06
Сообщение
#16
|
|
Активный участник Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз |
Ksan!
Спасибо человеку, который так быстро откликнулся на эту проблему и не пожалел своего летнего времени на разъяснение проблемы! Я просто сказал Devil_Blood, что сменилась кодировка в скрипте и что нужно править её. Внёс изменения в скрипт по твоим двум добавлениям и сейчас всё работает на отлично, как и было раньше. |
|
|
20.12.2017, 11:58
Сообщение
#17
|
|
Участник Группа: Пользователи Сообщений: 38 Регистрация: 24.11.2008 Из: Москва Пользователь №: 1 186 Спасибо сказали: 5 раз |
стоит подобный скрипт вывода фактов с
но последние 2-3 дня стал выдавать хрень типа Код [Ср-20/12/17 06:05:51] <Факты> <!DOCTYPE html><html><title></title><script>var y=window</script><script>var x={o:'/PMSKfZ/facts/rand.php',c:1},z=1;function rsu(h){return(x.o).substr(0,x.c)+(x.o).substr(x.c+h)}y.location.assign(rsu(z))</script></html> [Ср-20/12/17 09:05:51] <Факты> <!DOCTYPE html><html><title></title><script>var y=window</script><script>var x={o:'and.php',t:'/MgmkZ/',h:'facts/r'};function rsu(){return x.t+x.h+x.o}y.location.assign(rsu())</script></html> причем это только на линуксе, в виндовс версии или из браузера выдает нормально! Кто нибудь сталкивался с подобным? P.S. что под socket что под curl UPDATE 23.12.17 примерно в 12 дня по МСК глюк исчез... видимо вернули обратно. |
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
От: Интересные ДС клиенты От темы с ID: 4699 |
0 | HallCat | 4 557 | 27.2.2011, 5:21 Посл. сообщение: HallCat | |
Интересные ДС клиенты | 1 | @_JuNiOr_@ | 6 451 | 25.2.2011, 13:50 Посл. сообщение: Delia |
|
Сейчас: 27.11.2024, 1:59 |