Автор: Alexyz21
Дата сообщения: 11.05.2012 19:23
Публикатор магнитов в общем чате хаба. Магниты формируются из файллиста, предварительно выгруженного в файл 1.dcls. Настраивается время старта, время окончания, периодичность публикации, а также количество магнитов и их скважность в одном блоке.
Генератор links.txt, запускается единоразово после выгрузки файллиста в 1.dcls.
[links.lua]
dcpp={}
-- Input File
fin = "Z:\\Temp\\1.dcls"
-- Output File = Input File in Startup.lua
fout = "Z:\\Temp\\links.txt"
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"
fout2 = os.getenv("TEMP").."/greyxxxx.txt"
os.execute("bzip2.exe -dc \""..fin.."\" > \""..fout2.."\"")
fh = io.input(fout2)
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)
fh = io.output(io.open(fout,"w"))
io.write(links)
io.close(fh)
-- restart startup.lua
dofile(DC():GetAppPath().."Scripts/startup.lua")
[startup.lua]
dcpp={}
T0=2 --Period (Hour)
T1=8 --Start (Hour)
T2=0 --End (Hour)
WT=2 --Links (Second)
MM=10 --Max magnet for one times
H2=tonumber(string.sub(os.date(time), -8,-7))-T0
S2=os.time()-5
fl=1
iMM=0
fin="Z:\\Temp\\links.txt"
--mHub=dc_huburl
mHub="dchub://xxxxx.xx"
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 fl==1 then f,s,line=io.lines(fin); fl=0 end
if iMM<MM then line=f(s,line)
if line then
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
else
fl=1
end
else
H2=H1; iMM=0
end
end
end
end
return nil
end
DC():PrintDebug("startup.lua started")