myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 

> CollectorMagnets

Теги
Нет тегов для показа
Accelerator
сообщение 18.2.2010, 17:08
Сообщение #1


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Название: CollectorMagnets
Автор: Serx
Перевод под RusHub: STRELOK
Описание:
Сохраняет магнет ссылки. Выводит их по категориям, от ника, за дату.

Для работы скрипта необходимо скачать модуль files здесь
Прикрепленные файлы
Прикрепленный файл  CollMag.rar ( 4.56 килобайт ) Кол-во скачиваний: 67
 
Go to the top of the page
+Quote Post
2 страниц V   1 2 >  
Начать новую тему
Ответов
Accelerator
сообщение 23.2.2010, 11:57
Сообщение #2


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Добавлена Версия 2.0:
  • Вернул функцию сохранения в файл
  • Функция очистки старых магнет ссылок
Go to the top of the page
+Quote Post
Accelerator
сообщение 3.3.2010, 18:05
Сообщение #3


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Добавил новую версию скрипта.
    Версия 3.0:
  • Если в сообщении несколько магнет ссылок, то сохраняются все
  • Добавил служебные сообщения
  • Добавил функцию Экстренной очистки базы магнет ссылок


Спасибо сказали:
Go to the top of the page
+Quote Post
Otshelnik-Fm
сообщение 7.3.2010, 1:54
Сообщение #4


Я коварный Санта Клаус
******

Группа: Пользователи
Сообщений: 523
Регистрация: 4.11.2008
Из: Саратов
Пользователь №: 985
Спасибо сказали: 54 раза




Пожелания: сортировка по расширению файла и возможность удалить одну магнет ссылку введя ее id. При сохранении магнет ссылки чтобы сохранялось все сообщение (хороший ужасик magnet:..... - стоит смотреть) - а то получаем просто сбор магнетов, а сообщение несло дополнительную информацию.

И вопрос - как переделать в скрипте чтобы сохраняло и http ссылки?

Код
    for sMagnet in sData:gmatch"(http://%S+)" do
вот так

Как сделать чтоб сохранял и ссылки веб и магнет?
Go to the top of the page
+Quote Post
Accelerator
сообщение 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
. Не могу понять, что нужно поставить, чтобы захватило полностью все символы :(


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 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


Спасибо сказали:
Go to the top of the page
+Quote Post
Otshelnik-Fm
сообщение 27.7.2010, 18:22
Сообщение #7


Я коварный Санта Клаус
******

Группа: Пользователи
Сообщений: 523
Регистрация: 4.11.2008
Из: Саратов
Пользователь №: 985
Спасибо сказали: 54 раза




Отличный скрипт.

Хотелось чтобы сохранял полностью предложение сообщение содержащее ссылку (можно не более 200-400 символов). При просмотре не понятно что это за магнет ссылка или http. А с комментарием - было бы понятней.
Go to the top of the page
+Quote Post
Accelerator
сообщение 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})
Go to the top of the page
+Quote Post
Otshelnik-Fm
сообщение 27.7.2010, 19:05
Сообщение #9


Я коварный Санта Клаус
******

Группа: Пользователи
Сообщений: 523
Регистрация: 4.11.2008
Из: Саратов
Пользователь №: 985
Спасибо сказали: 54 раза




спасибо . Работает. подскажи еще как сделать вместо
Код
local ClearTmr = 240                                        -- Через сколько часов очищать базу


установить ограничение - хранить последние 200 ссылок. у меня сейчас 270 выводятся в течении 10 секунд.

Это нужно из-за того что не всегда кидаются ссылки. бывает неделю тишина, а иногда за час по 30 ссылок
Go to the top of the page
+Quote Post
Setuper
сообщение 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, так как первый параметр больше системной настройки, и значит вместо него берётся системная настройка.

Таким образом можно будет просмотреть или найти любую ссылку и при этом ничего долго загружаться не будет
Go to the top of the page
+Quote Post
Accelerator
сообщение 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: Пока времени переделывать скрипт нет. Если будет время и желание - переделаем big_smile.gif
Go to the top of the page
+Quote Post
Otshelnik-Fm
сообщение 28.7.2010, 19:01
Сообщение #12


Я коварный Санта Клаус
******

Группа: Пользователи
Сообщений: 523
Регистрация: 4.11.2008
Из: Саратов
Пользователь №: 985
Спасибо сказали: 54 раза




пока крашить не буду. пусть сколько есть выводит.

А скрипт не цепляет иногда ссылки. Почему не разобрался. Специально экспериментировал с описанием. Вроде бы как если после адреса идет: пробел, тире, пробел, а потом текст - не ловит. Если тире убрать - то выведет ссылку с описанием. Но не всегда так. Почему - разбираюсь.
Go to the top of the page
+Quote Post
Accelerator
сообщение 26.8.2010, 15:00
Сообщение #13


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Как и просили ранее перевёл скрипт от Serx'а. Скрипт в первом посту.

P.S.: Позже, возможно, займусь модернизацией, если будет время и желание big_smile.gif


Спасибо сказали:
Go to the top of the page
+Quote Post
alcorp
сообщение 20.11.2010, 20:50
Сообщение #14


Участник
**

Группа: Пользователи
Сообщений: 38
Регистрация: 26.8.2009
Пользователь №: 4 274
Спасибо сказали: 0 раз




Вы конечно, извините меня, но скрипт не запускается вообще!
Go to the top of the page
+Quote Post
Артём
сообщение 20.11.2010, 21:23
Сообщение #15


Наруто на аваторке
***********

Группа: Пользователи
Сообщений: 2 606
Регистрация: 11.10.2008
Из: Харькова
Пользователь №: 771
Спасибо сказали: 774 раза




alcorp, Вы конечно, извините меня, но вы уверены что вы в ту ветку влезли? bad_smile.gif Это скрипт под русхаб
Go to the top of the page
+Quote Post
Otshelnik-Fm
сообщение 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 надо было писать. Если не тут - перенесите.
Go to the top of the page
+Quote Post
Accelerator
сообщение 18.12.2010, 18:38
Сообщение #17


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Скрипт перезалил. Пробуйте.


Спасибо сказали:
Go to the top of the page
+Quote Post
shadow3c
сообщение 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


Таймера сохранения не нашел. Можете подсказать как добавить или задать интервал если он там есть.
Спасибо.
Go to the top of the page
+Quote Post
Saymon21
сообщение 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
Go to the top of the page
+Quote Post
Accelerator
сообщение 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

На сохранении по таймеру не заморачивался, ибо проблем не возникало.
Go to the top of the page
+Quote Post

2 страниц V   1 2 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Сейчас: 23.11.2024, 1:03