CollectorMagnets |
Здравствуйте, гость ( Вход | Регистрация )
CollectorMagnets |
18.2.2010, 17:08
Сообщение
#1
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Название: CollectorMagnets
Автор: Serx Перевод под RusHub: STRELOK Описание: Сохраняет магнет ссылки. Выводит их по категориям, от ника, за дату. Для работы скрипта необходимо скачать модуль files здесь
Прикрепленные файлы
Спасибо сказали: |
|
|
23.2.2010, 11:57
Сообщение
#2
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Добавлена Версия 2.0:
|
|
|
3.3.2010, 18:05
Сообщение
#3
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Добавил новую версию скрипта.
|
|
|
7.3.2010, 1:54
Сообщение
#4
|
|
Я коварный Санта Клаус Группа: Пользователи Сообщений: 523 Регистрация: 4.11.2008 Из: Саратов Пользователь №: 985 Спасибо сказали: 54 раза |
Пожелания: сортировка по расширению файла и возможность удалить одну магнет ссылку введя ее id. При сохранении магнет ссылки чтобы сохранялось все сообщение (хороший ужасик magnet:..... - стоит смотреть) - а то получаем просто сбор магнетов, а сообщение несло дополнительную информацию.
Код for sMagnet in sData:gmatch"(http://%S+)" do вот такКак сделать чтоб сохранял и ссылки веб и магнет? |
|
|
7.3.2010, 8:12
Сообщение
#5
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Должно быть что то типо такого
Код for sMagnet in sData:gmatch"([magnet][http]:%S+)" do Но захватывает только 2 последних символа:Код tp://ya.ru . Не могу понять, что нужно поставить, чтобы захватило полностью все символы :(
|
|
|
7.3.2010, 12:04
Сообщение
#6
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
как вариант:
Код for sMagnet in sData:gmatch"([mh][at][gt][np]e?t?:%S+)" do хотя в таком варианте может захватываться и кое-что лишнее. Для 100% уверенности, что захватиться то, что нам нужно надо делать 2 цикла: Код for sMagnet in sData:gmatch"(magnet:%S+)" do
... end for sMagnet in sData:gmatch"(http:%S+)" do ... end |
|
|
27.7.2010, 18:22
Сообщение
#7
|
|
Я коварный Санта Клаус Группа: Пользователи Сообщений: 523 Регистрация: 4.11.2008 Из: Саратов Пользователь №: 985 Спасибо сказали: 54 раза |
Отличный скрипт.
Хотелось чтобы сохранял полностью |
|
|
27.7.2010, 18:30
Сообщение
#8
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
После
Код local sNick = sData:match"(%b<>)" добавляемКод local sMsg = sData:match"%b<>%s+(.*)" Код table.insert(tMagnet,{sMagnet, sNick, os.time()+iTime*3600}) меняем на Код table.insert(tMagnet,{sMsg, sNick, os.time()+iTime*3600})
|
|
|
27.7.2010, 19:05
Сообщение
#9
|
|
Я коварный Санта Клаус Группа: Пользователи Сообщений: 523 Регистрация: 4.11.2008 Из: Саратов Пользователь №: 985 Спасибо сказали: 54 раза |
спасибо . Работает. подскажи еще как сделать вместо
Код local ClearTmr = 240 -- Через сколько часов очищать базу установить ограничение - хранить последние 200 ссылок. у меня сейчас 270 выводятся в течении 10 секунд. Это нужно из-за того что не всегда кидаются ссылки. бывает неделю тишина, а иногда за час по 30 ссылок |
|
|
27.7.2010, 19:22
Сообщение
#10
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Лучше переделать скрипт под использование с бд, и не удалять ссылки, а просто дать возможность пользователю ввести 2 параметра: 1 - количество ссылок, которые показывать, 2 - место откуда показывать, а также сделать системный параметр: максимальное количество для показа.
Если не указано место откуда показывать, то по умолчанию брать как последняя ссылка, количество ссылок - это количество ссылок, которое будет показано (вплоть до последней ссылки, если не указано до какой во втором параметре). И первый параметр нельзя вводить больше чем системная настройка, в противном случае показывать количество ссылок в соответствии с системной настройкой. Сисмемную настройку можно взять, допустим 20 для быстроты показа. Теперь пример. В базе 270 ссылок. Системная настройка: 20. Пользователь вводит команду: +show 20 - показываем 20 последних ссылок +show 20 200 - показываем 20 ссылок начиная с 200, то есть с 200 до 220 +show 200 200 - покажет опять же с 200 по 220, так как первый параметр больше системной настройки, и значит вместо него берётся системная настройка. Таким образом можно будет просмотреть или найти любую ссылку и при этом ничего долго загружаться не будет |
|
|
27.7.2010, 19:22
Сообщение
#11
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
После
Код table.insert(tMagnet,{sMsg, sNick, os.time()+iTime*3600}) добавь Код if #tMagnet > 200 then table.remove(tMagnet,1) end Думаю перед этим нужно будет предварительно почистить таблицу. 2Setuper: Пока времени переделывать скрипт нет. Если будет время и желание - переделаем |
|
|
28.7.2010, 19:01
Сообщение
#12
|
|
Я коварный Санта Клаус Группа: Пользователи Сообщений: 523 Регистрация: 4.11.2008 Из: Саратов Пользователь №: 985 Спасибо сказали: 54 раза |
пока крашить не буду. пусть сколько есть выводит.
А скрипт не цепляет иногда ссылки. Почему не разобрался. Специально экспериментировал с описанием. Вроде бы как если после адреса идет: пробел, тире, пробел, а потом текст - не ловит. Если тире убрать - то выведет ссылку с описанием. Но не всегда так. Почему - разбираюсь. |
|
|
26.8.2010, 15:00
Сообщение
#13
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Как и просили ранее перевёл скрипт от Serx'а. Скрипт в первом посту.
P.S.: Позже, возможно, займусь модернизацией, если будет время и желание |
|
|
20.11.2010, 20:50
Сообщение
#14
|
|
Участник Группа: Пользователи Сообщений: 38 Регистрация: 26.8.2009 Пользователь №: 4 274 Спасибо сказали: 0 раз |
Вы конечно, извините меня, но скрипт не запускается вообще!
|
|
|
20.11.2010, 21:23
Сообщение
#15
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
alcorp, Вы конечно, извините меня, но вы уверены что вы в ту ветку влезли? Это скрипт под русхаб
|
|
|
18.12.2010, 17:25
Сообщение
#16
|
|
Я коварный Санта Клаус Группа: Пользователи Сообщений: 523 Регистрация: 4.11.2008 Из: Саратов Пользователь №: 985 Спасибо сказали: 54 раза |
Ошибка:
Цитата [Fri Dec 17 21:37:36 2010] Y:\Soft\rushub_2.2.0\libs\files.lua:32: bad argument #1 to 'open' (string expected, got nil) работает со скриптом CollectorMagnets . Незнаю может быть в ветку CollectorMagnets надо было писать. Если не тут - перенесите. |
|
|
18.12.2010, 18:38
Сообщение
#17
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Скрипт перезалил. Пробуйте.
|
|
|
19.11.2012, 12:57
Сообщение
#18
|
|
Начинающий Группа: Пользователи Сообщений: 16 Регистрация: 18.7.2012 Пользователь №: 10 726 Спасибо сказали: 0 раз |
Все завилось с пол тычка. Но возник вопрос как часто сохраняет скрипт магниты в базу. Что-то не нашел в настройках.
Сделал чтобы сохраняло сразу после того как ктото вбросит магнит в чат. Добавив две строчки. Код Files.SaveTable(MagnetFile, tMagnet, "tMagnet") Files.SaveTable(NicksFile, tNicks, "tNicks") Получилось так Код table.insert(tMagnet,{Time*86400+os.time(), Hash, form, os.date("%d.%m.%Y @ %H:%M:%S"), tUser.sNick, sMsg}) end Files.SaveTable(MagnetFile, tMagnet, "tMagnet") Files.SaveTable(NicksFile, tNicks, "tNicks") end Таймера сохранения не нашел. Можете подсказать как добавить или задать интервал если он там есть. Спасибо. |
|
|
19.11.2012, 15:02
Сообщение
#19
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
Код не смотрел.
В функцию OnStartup, если такая есть (если нет, дописать) Код Core.AddTimer(1,1*60000, "savedb") И допиши функцию: Код function savedb()
Files.SaveTable(MagnetFile, tMagnet, "tMagnet") Files.SaveTable(NicksFile, tNicks, "tNicks") end |
|
|
20.12.2012, 20:05
Сообщение
#20
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Скрипт сохраняет все ссылки после остановки хаба.
Код function OnExit() Files.SaveTable(MagnetFile, tMagnet, "tMagnet") Files.SaveTable(NicksFile, tNicks, "tNicks") end На сохранении по таймеру не заморачивался, ибо проблем не возникало. |
|
|
|
Сейчас: 23.11.2024, 1:27 |