Alexyz21
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору 2 года назад написал 2 lua-скрипта для DC сидера, links.lua создаёт из выгруженного куста (*.dcls) файл с магнитами, а код в startup.lua публикует их порциями в общем чате с заданной периодичностью вначале каждого часа. Скрипты кладутся в папку Scripts, перед использованием исправляем пути (fin,fout) на свои. Использование: 1. Создаём в Грее список публикуемых файлов, сохраняем его в 1.dcls. 2. Создаём чат-комнату и отправляем команду /luafile links.lua. В результате будет создан links.txt с магнитами и запущен startup.lua, который будет публиковать магниты каждый час. Команду можно поместить в пользовательские сообщения. startup.lua выполняется каждый раз при старте Грея, читает номер последней опубликованной ссылки и публикует следующие за ней. Вот эти скрипты: Код: -- links.lua -- Скрипт создаёт файл с магнитами (ссылками) из выгруженного куста dcls dcpp={} fin = "Z:\\Temp\\1.dcls" -- Input File fout = "Z:\\Temp\\links.txt" -- Output File = Input File in startup.lua sline = "\t-<File Name=\"(.-)\" Size=\"(.-)\" TTH=\"(.-)\"/>" sline1 = "\t-<Directory Name=\".-\">%c" sline2 = "\t-</Directory>%c" sline3 = "<FileListing .-\">%c" sline4 = "</FileListing>" sline5 = "<%?xml .-%?>%c" rline = "magnet:%?xt=urn:tree:tiger:%3&xl=%2&dn=%1" links = os.execute("bzip2.exe -dc \""..fin.."\" > \""..fout.."\"") fh = io.input(fout) links = io.read("*all") io.close(fh) links = string.gsub(links, sline1, "") links = string.gsub(links, sline2, "") links = string.gsub(links, sline3, "") links = string.gsub(links, sline4, "") links = string.gsub(links, sline5, "") links = string.gsub(links, sline, rline) links = string.gsub(links, " ", "%+") links = string.gsub(links, "([\128-\255])", function (c) return string.format("%%%02X", string.byte(c)) end) links = "; Don't remove this line! Don't posting 1st line bug fix.\n"..links fh = io.output(io.open(fout,"w")) io.write(links) io.close(fh) -- restart startup.lua dofile(DC():GetAppPath().."Scripts/startup.lua") | Код: -- startup.lua -- Скрипт публикует магниты с T1 часа по T2 часа с периодичностью T0 часов -- по MM ссылок. Ссылки в блоке публикуются со скважностью WT секунд. -- fp.txt хранит позицию публикации между перезапусками клиента. dcpp={} T0=2 -- Period (Hour) T1=8 -- Start (Hour) T2=0 -- End (Hour) WT=2 -- Links (Second) MM=10 -- Max magnet for one times fin="Z:\\Temp\\links.txt" -- magnets list fout="Z:\\Temp\\fP.txt" -- position in magnets list --mHub=dc_huburl mHub="dchub://xxxx.xx" iMM=0 H2=tonumber(string.sub(os.date(time), -8,-7))-T0 S2=os.time()-5 DC():RunTimer(1) function dcpp.OnTimer() H1=tonumber(string.sub(os.date(time), -8,-7)) if (H1>=T1 or H1<=T2) and math.mod(H1,T0)==0 then if (H1>H2 and H1-H2>=T0) or (H2>H1 and 24-H2+H1>=T0) then S1=os.time() if S1-S2>=WT then S2=S1 if iMM<MM then file=io.open(fout,"r") if file==nil then fP=0 file=io.open(fout,"w") file:write(fP) DC():PrintDebug("fP.txt not found - created") else fP=file:read("*n") end file:close() file=io.open(fin,"r") if file==nil then DC():PrintDebug("links.txt not found!") else file:seek("set",fP) line=file:read() if line==nil then file:seek("set",0) line=file:read() DC():PrintDebug("links.txt new turn") end fP=file:seek() file:close() file=io.open(fout,"w") file:write(fP) file:close() if line~="" then if string.sub(line,1,1)~=";" then DC():SendPublicMessage(mHub,DC():ToUtf8(line)) iMM=iMM+1 end else H2=H1; iMM=0 end end else H2=H1; iMM=0 end end end end return nil end DC():PrintDebug("startup.lua started") |
| Всего записей: 3484 | Зарегистр. 16-06-2007 | Отправлено: 22:25 22-06-2014 | Исправлено: Alexyz21, 23:20 22-06-2014 |
|