-- SweBot v0.8
-- LUA 5.1
-- Made by Herman 20061030
-- This is a script for getting release news from different sites and convert it to a viewable format for ptokax hubs.
-- I get som help from PxWSA lib's example script by jiten (3/10/2006)
-- OBS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-----------------------------------------------------------------------------------------------
-- You need PxWSA lib to make it work. available here: http://libs.ptokax.ath.cx/#pxwsa --
-- wsat.lua and wsat-L51-0.1.1.1.lua is only demofile so delete it. --
-- Place pxwsa.dll or pxwsa_l51.dll in script folder --
-----------------------------------------------------------------------------------------------
-- OBS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
sBot = frmHub:GetHubBotName () -- Default Bot Name or -- sBot = frmHub:GetHubBotName()
updateTime = 30 -- Update in minutes. min value is 10
cmd_swenews = "swenews" -- command to view the different release site files. you can use + , ! , # and ? to trigger
cmd_swecheck = "swecheck"
cmd_undertexter_film = "undertexter_film"
cmd_undertexter_serie = "undertexter_serie"
showErr = 0 -- Show if connection to the site fails. ( 1 = yes )
useRightclickmenu = 1 -- If you will use rightclick menu ( 1 = yes )
sMenu = "??Queen??" -- Rightclick menu name. use "" to place the commands in the "root"
------------------------------------------------------------------
----- DO NOT CHANGE ANYTHING BELOW THIS IF YOU DONT KNOW WHY------
------------------------------------------------------------------
if updateTime < 10 then updateTime = 10 end
SiteCfg = {
Tid = {1, math.ceil(tonumber(updateTime)/2) , math.ceil(tonumber(updateTime)), math.ceil((tonumber(updateTime)*3)/2), math.ceil(tonumber(updateTime)*2)},
RawFile_swenews = "txt/raw_swenews",
Swenews_ConvertedFile = "txt/swenews.txt",
Swenews_Url = "swenews.info",
Swenews_File = "/bot.php",
RawFile_swecheck = "txt/raw_swecheck",
Swecheck_ConvertedFile = "txt/swecheck.txt",
Swecheck_Url = "rss.swecheck.net",
Swecheck_File = "/?s=all",
RawFile_undertexter_film = "txt/raw_undertexter_film",
Undertexter_film_ConvertedFile = "txt/undertexter_film.txt",
Undertexter_film_Url = "www.zowat.se",
Undertexter_film_File = "/dev/ut_rss/ut_rss_film.asp",
RawFile_undertexter_serier = "txt/raw_undertexter_serier",
Undertexter_serier_ConvertedFile = "txt/undertexter_serier.txt",
Undertexter_serier_Url = "www.zowat.se",
Undertexter_serier_File = "/dev/ut_rss/ut_rss_serier.asp",
}
Settings = {
sProt = 0, -- 0 for TCP, 1 for UDP (mostly it's TCP)
sPort = 80, -- WSA lib default port
Interval = 1000, -- var 60000, -- 60 sek
}
-- Init WSA lib
if _VERSION == "Lua 5.1" then
libinit = package.loadlib("pxwsa_l51.dll", "_libinit")
else
libinit = loadlib("pxwsa.dll", "_libinit")
end
libinit()
-- Init sockets
WSA.Init()
sCovertedFile = ""
fData = ""
update = 0
Main = function()
frmHub:RegBot(sBot)
SetTimer(Settings.Interval)
StartTimer()
if sMenu ~= "" then sMenu = sMenu.."\\" end
end
NewUserConnected = function(user)
if user.bUserCommand and useRightclickmenu == 1 then
user:SendData("$UserCommand 1 3 "..sMenu.."Nyheter fr?n swenews$<%[mynick]> +"..cmd_swenews.."||")
user:SendData("$UserCommand 1 3 "..sMenu.."Nyheter fr?n swecheck$<%[mynick]> +"..cmd_swecheck.."||")
user:SendData("$UserCommand 1 3 "..sMenu.."Nyheter fr?n undertexter Filmer$<%[mynick]> +"..cmd_undertexter_film.."||")
user:SendData("$UserCommand 1 3 "..sMenu.."Nyheter fr?n undertexter Serier$<%[mynick]> +"..cmd_undertexter_serie.."||")
end
end
OpConnected=NewUserConnected
ChatArrival = function(curUser, data)
local data = string.sub(data, 1, -2)
local s,e,cmd = string.find(data, "%b<>%s+[%!%+%#%?](%S+)")
if cmd then
if cmd == cmd_swenews then
ShowText(curUser, SiteCfg.Swenews_ConvertedFile)
return 1
elseif cmd == cmd_swecheck then
ShowText(curUser, SiteCfg.Swecheck_ConvertedFile)
return 1
elseif cmd == cmd_undertexter_film then
ShowText(curUser, SiteCfg.Undertexter_film_ConvertedFile)
return 1
elseif cmd == cmd_undertexter_serie then
ShowText(curUser, SiteCfg.Undertexter_serier_ConvertedFile)
return 1
end
end
end
OnTimer = function()
update = update + 1
if update == (30*SiteCfg.Tid[1]) then ConnectToHost(SiteCfg.Swenews_Url,SiteCfg.Swenews_File,SiteCfg.Swenews_ConvertedFile)
elseif update == (30*SiteCfg.Tid[2]) then ConnectToHost(SiteCfg.Swecheck_Url,SiteCfg.Swecheck_File,SiteCfg.Swecheck_ConvertedFile)
elseif update == (30*SiteCfg.Tid[3]) then ConnectToHost(SiteCfg.Undertexter_film_Url,SiteCfg.Undertexter_film_File,SiteCfg.Undertexter_film_ConvertedFile)
elseif update == (30*SiteCfg.Tid[4]) then ConnectToHost(SiteCfg.Undertexter_serier_Url,SiteCfg.Undertexter_serier_File,SiteCfg.Undertexter_serier_ConvertedFile)
end
if update > (30*SiteCfg.Tid[5]) then
update = 0
end
Updater()
end
Updater = function()
if bConnected then
local errorCode, errorStr, sData, bytesRead = WSA.Receive(sock) -- Wait for the request response
if errorCode then
if errorCode == 0 then -- Connection gracefully closed
WSA.Close(sock) -- Close existing socket
bConnected = false -- Mark as connected
if sCovertedFile == SiteCfg.Swenews_ConvertedFile then fData = ConvertText_Swenews(fData)
elseif sCovertedFile == SiteCfg.Swecheck_ConvertedFile then fData = ConvertText_Swecheck(fData)
elseif sCovertedFile == SiteCfg.Undertexter_film_ConvertedFile then fData = ConvertText_Undertexter(fData)
elseif sCovertedFile == SiteCfg.Undertexter_serier_ConvertedFile then fData = ConvertText_Undertexter(fData)
end
if fData ~= "" then
local f2 = io.open(sCovertedFile,"w+")
f2:write(fData)
f2:flush ()
f2:close()
end
fData = "" -- Empty receive buffer
elseif (errorCode == 10035) then -- Non-critical error
else -- Receive failed
WSA.Close(sock) -- Close existing socket
bConnected = false -- Mark as not connected
fData = "" -- Empty receive buffer
end
else
fData = fData..sData -- Merge to received buffer
end
end
end
ConnectToHost = function(Url, sFile, CovertedFile)
if not bConnected then -- If not connected to any socket
s,e,sock = WSA.NewSocket(Settings.sProt) -- Create a socket according to what we have above
local errorCode, errorStr = WSA.Connect(sock,Url,Settings.sPort) -- Try connection to host
if errorCode then -- Connection failed
if showErr == 1 then SendToOps(sBot,"*** Error: Connection to "..Url.." failed!") end-- Connection Report
bConnected = false -- Mark as not connected
else
--SendToOps(sBot,"*** Connected")
bConnected = true -- Mark as connected
local sError, Str = WSA.MarkNonBlocking(sock) -- Mark non-blocking socket
if sError then -- Error
if showErr == 1 then SendToOps(sBot,"*** Error: Could not mark non-blocking socket.") end -- Socket Error Marking Report
else
--SendToOps(sBot,"*** Socket Marked")
-- Send Request
local wCmd = "GET "..sFile.." HTTP/1.0\r\nHost: "..Url.."\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n"..string.char(13,10)
local _ErrorCode, _ErrorStr, bytesSent = WSA.Send(sock,wCmd) -- Send the request
if _ErrorCode then -- Connection failed
bConnected = false -- Mark as not connected
if showErr == 1 then SendToOps(sBot,"*** Error: Connection Failed - ".._ErrorStr) end -- Report Error
WSA.Close(sock) -- Close existing socket
else
sCovertedFile = CovertedFile -- Set file to write
--SendToOps(sBot,"*** Request to "..Url.." sent!") -- Connection Report
end
end
end
end
end
ShowText = function(user,File)
local Text
local f = io.open(File,"r")
if f ~= nil then
Text = f:read("*a")
end
user:SendPM(sBot, Text)
end
ConvertText_Swenews = function(sData)
local xRow ="\r\n"
local swenewslist = ""
if sData ~= nil then
swenewslist = "\r\n\r\nSenaste releaserna fr?n Swenews ( http://swenews.info )\r\n\r\nUppdaterad: "..os.date("%c").."\r\n"
for w in string.gmatch(sData, "(%d+%-%d+%-%d+%s%a+%-*%a*%s%S+)%?") do
swenewslist = swenewslist..xRow..w
end
swenewslist = swenewslist
end
swenewslist = swenewslist.."\r\n\r\n(Konverterad av Herman)\r\n\r\n"
return swenewslist
end
ConvertText_Swecheck = function(sData)
local xRow ="\r\n"
local swechecklist = ""
if sData ~= nil then
swechecklist = "\r\n\r\nSenaste releaserna fr?n Swecheck ( http://www.swecheck.net )\r\n\r\nUppdaterad: "..os.date("%c").."\r\n\r\n"
for w, k, l, m in string.gmatch(sData, "%b<>.%c<title>(%d+%-%d+%-%d+)%s%-%s(%S+)%C*%c%s*<link>(%S+)</link>%s+%S+%s+%S+%s+(%S+)<br") do
swechecklist = swechecklist..xRow..l.." \t"..w.."\t"..k.."\t"..m
end
swechecklist = swechecklist
end
swechecklist = swechecklist.."\r\n\r\n(Konverterad av Herman)\r\n\r\n"
return swechecklist
end
ConvertText_Undertexter = function(sData)
local xRow ="\r\n"
local undertextlist = ""
if sData ~= nil then
undertextlist = "\r\n\r\nSenaste releaserna fr?n Undertexter ( http://www.undertexter.se )\r\n\r\nUppdaterad: "..os.date("%c").."\r\n\r\n"
for w, k, h in string.gmatch(sData, "<item>%s+<title>(%d+%-%d+%-%d+)%C*%s(%C*)%s+<link>(%S+)</link>") do
k = string.gsub(k,"</title>","")
undertextlist = undertextlist..xRow..h.." \t"..w.."\t"..k
end
undertextlist = undertextlist
end
undertextlist = undertextlist.."\r\n\r\n(Konverterad av Herman)\r\n\r\n"
return undertextlist
end
ToArrival = ChatArrival
Can somebody help me convert this to new api2 ;)
isnt there nobody how can covert this script please :)
Hi!
Would like to have this converted to, Please :)