Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Готовые скрипты для PtokaX _ MagnetLog

Автор: Wariner 13.5.2009, 18:37

Название скрипта: MagnetLog
Версия скрипта: 1.0 RC2
Версия API: API2
Автор: Wariner
Возможности:
v 1.0 RC2
- Одинаковые магнеты не сохраняются

v 1.0 RC1
- Сохраняет в таблицу магнет ссылки из главного чата
- Чистит устаревшие магнет ссылки в таблице

 MagnetLogs.rar ( 2.12 килобайт ) : 333
 

Автор: thelife 13.5.2009, 20:39

спасибо большое, работает как надо secret_smile.gif

Автор: Wariner 13.5.2009, 20:41

главное проверьте удаляются ли старые ссылки! конечно же это будет видно, где то через пару дней работы)))

Автор: intlive 18.5.2009, 11:29

Что-то очистка некорректно работает, точней вообще не работает.. скрипт пашет 3 дня... Может переделать как историю чата, тоесть последнии 100 магнетов например...?

Автор: Wariner 18.5.2009, 20:01

хм функцию очистки только что проверил на малых интервалах таймера. всё вполне работает!
можно сделать так. заменить:

Код
TmrMan.AddTimer(10800000, "ClearMagnet")

на
Код
TmrMan.AddTimer(iClearTime*3600000, "ClearMagnet")

а в начале скрипта написать:
Код
local iClearTime = 1   -- время через которое быдет проверятся база на предмет очистки

Автор: wasd 31.5.2009, 20:56

доброе время суток
умножение на 41 сутки поддалось моему сознанию, а вот как сделать чтоб лог отправлялся в приват нет
подскажите плиз

Автор: Wariner 31.5.2009, 21:52

замени

Код
Core.SendToUser(tUser, ("<%s> %s"):format(sBot, ShowMagnet()))

на
Код
Core.SendPmToUser(tUser, sBot, ShowMagnet())

Автор: wasd 1.6.2009, 16:43

благодарю

Автор: li4nost 1.6.2009, 17:57

а как сделать, чтоб скрипт собирал и отображал ссылки не за время (сутки), а допустим 20 последних?

Автор: STRELOK 28.6.2009, 8:27

Уже неделю скрипт не чистит устаревшие магнет ссылки

Автор: Wariner 28.6.2009, 12:49

Цитата(STRELOK @ 28.6.2009, 9:27) *
Уже неделю скрипт не чистит устаревшие магнет ссылки

хм не знаю в чём проблема, у меня всё работает! добавил в скрипт сообщение о том что произошла чистка и сколько ссылок удалено!

Цитата(li4nost @ 1.6.2009, 18:57) *
а как сделать, чтоб скрипт собирал и отображал ссылки не за время (сутки), а допустим 20 последних?

1) удаляем:
Код
function ClearMagnet()
    local iDel = 0
    for i,v in ipairs(tMagnet) do
        if v[3] <= os.time() then
            table.remove(tMagnet, i)
            iDel = iDel + 1
        end
    end
    Core.SendToOps(("<%s> *** Произошла очистка собранных магнет ссылок(удалено %s шт.)!"):format(sBot, iDel))
    collectgarbage("collect")
end

Код
local iTime = 24                           -- Время хранения магнет ссылок в часах

Код
    TmrMan.AddTimer(3600000, "ClearMagnet")

2) заменяем это
Код
    if sMagnet then
        local sNick = sData:match"(%b<>)"
        table.insert(tMagnet,{sMagnet, sNick, os.time()+iTime*3600000})
    end

на это
Код
    if sMagnet then
        local sNick = sData:match"(%b<>)"
        if #tMagnet > iMagnet then
            table.remove (tMagnet, 1)
        end    
        table.insert(tMagnet,{sMagnet, sNick})
    end

3) в начале скрипта пишеь
Код
local iMagnet = 20    -- коолличество хранимых магнеток

Автор: STRELOK 28.6.2009, 12:55

Скачал заново, поставил. Для теста поставил параметр iTime = 0.1. Лог магнетов не очистило, сообщения о том, что они были очищены тоже не было :(

Автор: Wariner 28.6.2009, 12:57

ну так а таймер то ты настроил? параметр iTime отвечает за время хранения магнет ссылки, а таймер у тебя настроен наверное на час!

Автор: STRELOK 28.6.2009, 13:02

Цитата
[16:01:40] <Security> *** Произошла очистка собранных магнет ссылок(удалено 0 шт.)!


Не удалило :(

Код
\scripts\MagnetLogs.lua:80: attempt to compare nil with number

80 строка:
Код
        if v[3] <= os.time() then

Автор: Wariner 28.6.2009, 13:21

опять же 0.1 часа - это 6 минут, попробуй поставить 0,0000001 beat_plaster.gif

Автор: STRELOK 28.6.2009, 17:11

А можно ли реализовать, чтобы в логах одни и те же магнеты не появлялись?(Антифлуд)

Цитата
3. <JIeIIIKA> Vepri - Нелегальный бизнес.mp3 (3,57 MБ)
4. <JIeIIIKA> Vepri - Нелегальный бизнес.mp3 (3,57 MБ)
5. <JIeIIIKA> Vepri - Нелегальный бизнес.mp3 (3,57 MБ)

Вместо этих трёх магнетов было бы только одно:
Цитата
3. <JIeIIIKA> Vepri - Нелегальный бизнес.mp3 (3,57 MБ)

Автор: Wariner 28.6.2009, 18:28

добавил. перезалил. не тестил.

Автор: STRELOK 28.6.2009, 18:40

Магнеты вообще перестало логировать :(

Автор: Wariner 28.6.2009, 19:11

перезалил

Автор: STRELOK 28.6.2009, 19:14

Спасибо, работает big_smile.gif
Антифлуд тоже big_smile.gif

Автор: Serx 5.7.2009, 12:06

Если в сообщении содержится несколько магнет ссылок то записывается только 1

Автор: whuru 7.7.2009, 10:31

Скрипт работает уже около недели, но не очищает список магнеток, хотя очистка запускается:

Цитата
<MagnetLogBot> *** Произошла очистка собранных магнет ссылок(удалено 0 шт.)!

Автор: Wariner 7.7.2009, 11:00

скрипт был проверен уже не однократно! он полностью рабочий. скорее всего как то не так настроили...

Автор: Serx 7.7.2009, 14:17

Мне пришлось в этой строчке исправить множитель на 3600

Код
table.insert(tMagnet,{sMagnet, sNick, os.time()+iTime*3600000})

Автор: Wariner 7.7.2009, 14:20

отсюда следует вопрос зачем?!

Автор: prapor 7.7.2009, 16:20

у меня тож не чистит, скрипт стоял пару дней, в настройках ничего не менял

Автор: Serx 7.7.2009, 16:23

Изначально скрипт записывал дату удаления в далекое будущее :( ,потому что у меня os.time() выдает значение в секундах, а не в миллисекундах. Поэтому и складывать нужно было с секундами. В 1 часе 3600 секунд...

Автор: Wariner 7.7.2009, 17:32

ахахаха а ведь точно)))) мой косяк)))) щас перезалью)))

upd: перезалил

Автор: Ingvar72 8.7.2009, 6:39

Цитата(whuru @ 7.7.2009, 13:31) *
Скрипт работает уже около недели, но не очищает список магнеток, хотя очистка запускается:

Такая же проблема. Пробовал в списке скриптов двигать - никаких изменений. В самом скрипте не настраивал ничего.

Автор: Setuper 8.7.2009, 13:18

Написали же, что скрипт перезалит. Что и после этого не пашет?

Автор: prapor 10.7.2009, 14:38

Подскажите пожалуйста, как сделать, что бы не все магнеты писались в лог, а только разрешенным никам (релизёрам)?

Автор: whuru 11.7.2009, 19:38

Так и не чистит ссылки! Может не перезалили?

Автор: Wariner 11.7.2009, 20:06

а что пишет?

2prapor: щас поднакидаю код

Автор: whuru 11.7.2009, 20:16

Прошу прощения! Всё работает! Сразу не заметил... Спасибо!

Автор: Wariner 11.7.2009, 21:23

Цитата(prapor @ 10.7.2009, 15:38) *
Подскажите пожалуйста, как сделать, что бы не все магнеты писались в лог, а только разрешенным никам (релизёрам)?

пишешь в начале скрипта
Код
local tNicks = {
    ["ник1"] = true,
    ["ник2"] = true,
}

а потом в концовку функции ChatArrival вносим такие изменения

Код
    if sMagnet then
        local sNick = sData:match"(%b<>)"
        if tNicks[sNick] then   -- изменение 1
            for i,v in ipairs(tMagnet) do
                if v[1] == sMagnet then
                    bFlag = nil
                    break
                end
            end
            if bFlag then
                table.insert(tMagnet,{sMagnet, sNick, os.time()+iTime*3600})
            end    
        end    -- изменение 2
    end

Автор: steppnov 22.10.2009, 16:01

как зделать чтобы собирал только магнетки фильмов ? например .avi
и чтобы выводил лог магнеток например 1 раз в день (и если можно возможность отключения этой функции)

Автор: Wariner 22.10.2009, 17:26

для того чтобы сохранялись магнеты определённых расширений нужно строчку

Код
local sMagnet = sData:match".*(magnet:%S+%.%S%S%S).*"

изменить на
Код
local sMagnet = sData:match".*(magnet:%S+%.%S%S%S).avi"

для avi

а чтобы сделать показывало раз в период времени нужен таймер. Как это сделать:
1)находим строчку
Код
local iTmr = 12                            -- Время через которое будет стартовать очистка в часах

и после неё пишем
Код
local iTmrS = 12                            -- Время через которое будeт показываться магнет ссылки всем

2)находим строчку
Код
TmrMan.AddTimer(iTmr*3600000, "ClearMagnet")

и после неё пишем
Код
TmrMan.AddTimer(iTmrS*3600000)

3) Перед строчкой
Код
function ChatArrival(tUser, sData)

пишем
Код
function OnTimer()
      Core.SendToAll(("<%s> %s"):format(sBot, ShowMagnet()))
end

Автор: steppnov 22.10.2009, 17:40

Wariner СПС большое всё зделал всё работает big_smile.gif bad_smile.gif
Ошибочка....... выяснилась не сохраняет он ссылки ....... ошибок не выдоёт
local sMagnet = sData:match".*(magnet:%S+%.%S%S%S).*" изменил эту строчку обратно всё работает но сохраняет все подряд ссылки

Автор: Wariner 22.10.2009, 18:34

пардон погорячился))))

Код
local sMagnet = sData:match".*(magnet:%S+%.avi).*"

Автор: steppnov 22.10.2009, 19:03

спс всё заработала ))) ещё один момент форматов видио же много ))) можно ли зделать чтоб он собирал не только avi
я просто хачу как бы зделать категории в скрипте и получеться авто сортировка думаю будет интереснее ....
чем просто из кучи магнеток выбиратьbig_smile.gif

да и можно как нибуть зделать чтобы после перезапуска скрипта ссылки сохранялись embarrassed.gif beat_brick.gif

Автор: Wariner 22.10.2009, 20:08

сохранятся должно нормально ибо пути прописаны правильно! у меня работает!!!

по поводу нескольких расширений вот так

Код
    local sMagnet = sData:match".*(magnet:%S+%.[am][vp][i3]).*"

если не понятно, то в первом квадратике первая буква расширения во втором вторая и так далее)))

Автор: steppnov 22.10.2009, 20:38

всё понятноbig_smile.gif спс

local sMagnet = sData:match".*(magnet:%S+%.[avi][mkv][flv]).*"
вот зделал .... несобирает вообще waaaht.gif

Автор: Wariner 22.10.2009, 21:19

блин я же специально написал как делать!!!
ещё раз. твой случай:

Код
local sMagnet = sData:match".*(magnet:%S+%.[amf][vkl][ivv]).*"

понятно?

Автор: steppnov 22.10.2009, 21:38

угу big_smile.gif

Автор: steppnov 26.10.2009, 18:45

не сохраняються магнетки ...... после перезапуска скрипта или хаба лог становиться пустым
в файле MagnetLogs они все сохранены в чом проблема вот сам скрипт посмотрите может что не так зделал

 scripts.rar ( 3.89 килобайт ) : 18
 

Автор: Wariner 27.10.2009, 21:31

у меня не скромный вопрос:

Код
sMagnetFile = Core.GetPtokaXPath().."D:/Program Files/ptokax/scripts/Hub files/Magnet.tbl"

это что??? зачем были поменяны пути?
нужно
Код
sMagnetFile = Core.GetPtokaXPath().."scripts/hub files/Magnet.tbl"

Автор: wasd 7.11.2009, 14:20

возможноли сделать чтобы, если в сообщении несколько магнеток, все магнетки сохранялись а не только последняя?

Автор: TiGRpp 12.11.2009, 22:57

Цитата(Wariner @ 27.10.2009, 22:31) *
у меня не скромный вопрос:

Wariner, привет.
У меня еще более скромная просьба...big_smile.gif Допиши, плиз. чтобы весь лог выводить в чат на всеобщее обозрение через промежуток времени.
Впрочем есть варианты: можно еще выводить их списком наподобие "Истории чата", с выбором варианта показа. Мне бы пригодилось.

Ну и, соответственно, расширить меню.
Спасибо.

Автор: Nickolya 13.11.2009, 0:55

Цитата(wasd @ 7.11.2009, 14:20) *
возможноли сделать чтобы, если в сообщении несколько магнеток, все магнетки сохранялись а не только последняя?

Берем и вот этот код:
Код
    local sMagnet = sData:match".*(magnet:%S+%.%S%S%S).*"
    local bFlag = true
    if sMagnet then
        local sNick = sData:match"(%b<>)"
        for i,v in ipairs(tMagnet) do
            if v[1] == sMagnet then
                bFlag = nil
                break
            end
        end
        if bFlag then
            table.insert(tMagnet,{sMagnet, sNick, os.time()+iTime*3600})
        end    
    end

заменяем на вот этот немного доработанный код:
Код
    local sMagnet, bFlag
    for sMagnet in sData:gmatch"(magnet:%S+)" do
        bFlag = true
        if sMagnet then
            local sNick = sData:match"(%b<>)"
            for i,v in ipairs(tMagnet) do
                if v[1] == sMagnet then
                    bFlag = nil
                    break
                end
            end
            if bFlag then
                table.insert(tMagnet,{sMagnet, sNick, os.time()+iTime*3600})
            end    
        end
    end


Надеюсь моя помощь поддержит автора скрипта и он выполнит другую просьбу пользователя, да, Илюх? big_smile.gif

Автор: TiGRpp 13.11.2009, 2:06

Nickolya,
В доработанном коде последняя 'end' лишняя - высвечивается ошибка.

Автор: Артём 13.11.2009, 2:20

Цитата(TiGRpp @ 13.11.2009, 1:06) *
лишняя

??... я наоборот дописал ещё одну end , работает хорошо. big_smile.gif

Автор: wasd 13.11.2009, 10:46

Nickolya, благодарю.
Артём, спасибо, избавил от поиска ошибки)

Автор: TiGRpp 15.11.2009, 16:02

Раскрывающийся текст
Цитата(Wariner @ 22.10.2009, 18:26) *
а чтобы сделать показывало раз в период времени нужен таймер. Как это сделать:
1)находим строчку
Код
local iTmr = 12                            -- Время через которое будет стартовать очистка в часах

и после неё пишем
Код
local iTmrS = 12                            -- Время через которое будeт показываться магнет ссылки всем

2)находим строчку
Код
TmrMan.AddTimer(iTmr*3600000, "ClearMagnet")

и после неё пишем
Код
TmrMan.AddTimer(iTmrS*3600000)

3) Перед строчкой
Код
function ChatArrival(tUser, sData)

пишем
Код
function OnStartup()
      Core.SendToAll(("<%s> %s"):format(sBot, ShowMagnet()))
end

ммм...сделал, проверил на малом периоде времени - не показывает...:(

Автор: Wariner 15.11.2009, 16:44

прошу прощения мой косяк
3) Перед строчкой

Код
function ChatArrival(tUser, sData)

пишем
Код
function OnTimer()
      Core.SendToAll(("<%s> %s"):format(sBot, ShowMagnet()))
end

Автор: TiGRpp 16.11.2009, 4:16

Отлично. Показывает.
Подгружаю некий результирующий вариант.

К сожалению это скрипт именно MagnetLogs.lua и только. Но свою задачу он выполняет.

Спасибо.

Стирание ссылок не проверял, потому что эта функция не слишком важна в моем случае.
Однако было бы неплохо сделать избирательное стирание из меню. И, может быть, классификацию по расширениям.
И в теме звучала мысль организовать показ как Историю чата: последние 20 или 100 ссылок.
В этом случае скрипт уже станет полноценным трекером...big_smile.gif

Автор: intlive 27.11.2009, 13:29

Если у автора есть время я бы попросил некую модернизацию:

Цитата
- [15:24] <zzz> сделайте в меню - лог магнеток, лог магнеток 500, лог магнеток 1000.. или лог магнеток, лог магнеток 100-250, лог магнеток 250-500
- [15:24] <zzz> 100 както мало..
- [15:25] <zzz> аа.. там по времени.. жесть..
- [15:25] <zzz> было бы неплохо чтобы была указана дата и время магнитки

Просят постоянно на закрытом хабе beat_plaster.gif

Автор: steppnov 27.11.2009, 15:55

можно ли зделать чтобы на сайте показывалось ?
через базу данных ? beat_plaster.gif

Автор: TiGRpp 29.11.2009, 6:19

Вот такая ошибка выползла:
/PtokaX/scripts/MagnetLogs.lua:117: attempt to index local 'hFile' (a nil value)

Может она быть обусловлена тем, что в Линуксе перевод строки осуществляется не '\n', а '\r'?

Автор: Wariner 29.11.2009, 9:16

нет она означает что скрипт не находит файла с сохранениями!

Автор: Sergey613 29.11.2009, 18:10

А где кнопочка принудительной очистки лога? big_smile.gif

Автор: Alexey 30.11.2009, 4:07

Цитата(TiGRpp @ 29.11.2009, 6:19) *
в Линуксе перевод строки осуществляется не '\n', а '\r'?

Ложь.

Автор: Setuper 30.11.2009, 14:32

\r\n - windows
\n - unix
\r - mac

Автор: wasd 5.12.2009, 14:41

Всетаки одинаковые файлы с разными именами сохраняются.
Может еще сравнивать их по хэшу?

Автор: -Alex- 6.10.2010, 8:49

почему то магнеты от мастера хаба не отображаются при заходе на хаб... electric_shock.gif в чём может быть дело?

Автор: Ksan 6.10.2010, 9:43

Судя по скрипту, магнеты при заходе в хаб вообще не должны отображаться..
Только по запросу командой, которая опять же разрешена только для определенных профилей.

Автор: -Alex- 6.10.2010, 9:50

нет,магнеты от ан-регов отображаются в виде сообщений при входе на хаб, от мастера- нет.. как это можно исправить?

Автор: Nickolya 6.10.2010, 10:33

-Alex-, как вариант - прикрепить твой скрипт, потому что в скрипте из данной темы при входе юзер получает только меню...

Автор: -Alex- 6.10.2010, 10:44

Nickolya, скрипт называется MagnetLogs ,из этой темы качал его.. сначала он отображал несколько магнетов при входе на хаб,в виде сообщений, щас не отображает, только через меню можно посмотреть... но, магнеты кинутые мастером и опами- не фиксируются!! может есть какой-нидь скрипт наподобии, что бы выводил в чат при включении сразу последние 5-10 магнетов, и что бы все профили фиксировались там? big_smile.gif

Автор: Ksan 6.10.2010, 20:02

Я изучил скрипт вдоль и поперек, скрипт простенький, там нет такой возможности - при входе показывать что-либо...
Наверно, ты смотрел другой скрипт раньше.