Function to unscape HTML XML entities and other bla
This commit is contained in:
parent
3a104f5c04
commit
f0c4cb25bf
111
bot/utils.lua
111
bot/utils.lua
@ -1,10 +1,10 @@
|
||||
URL = require "socket.url"
|
||||
http = require "socket.http"
|
||||
https = require "ssl.https"
|
||||
ltn12 = require "ltn12"
|
||||
URL = require "socket.url"
|
||||
serpent = require "serpent"
|
||||
feedparser = require "feedparser"
|
||||
json = (loadfile "./libs/JSON.lua")()
|
||||
serpent = (loadfile "./libs/serpent.lua")()
|
||||
mimetype = (loadfile "./libs/mimetype.lua")()
|
||||
redis = (loadfile "./libs/redis.lua")()
|
||||
|
||||
@ -63,8 +63,8 @@ function get_http_file_name(url, headers)
|
||||
file_name = file_name or url:match("[^%w]+(%w+)[^%w]+$")
|
||||
-- Random name, hope content-type works
|
||||
file_name = file_name or str:random(5)
|
||||
-- Possible headers names
|
||||
local content_type = headers["content-type"]
|
||||
|
||||
local content_type = headers["content-type"]
|
||||
|
||||
local extension = nil
|
||||
if content_type then
|
||||
@ -73,11 +73,18 @@ function get_http_file_name(url, headers)
|
||||
if extension then
|
||||
file_name = file_name.."."..extension
|
||||
end
|
||||
|
||||
local disposition = headers["content-disposition"]
|
||||
if disposition then
|
||||
-- attachment; filename=CodeCogsEqn.png
|
||||
file_name = disposition:match('filename=([^;]+)') or file_name
|
||||
end
|
||||
|
||||
return file_name
|
||||
end
|
||||
|
||||
-- Saves file to /tmp/. If file_name isn't provided,
|
||||
-- will get the text after the last "/" for filename
|
||||
-- Saves file to tmp/. If file_name isn't provided,
|
||||
-- will get the text after the last "/" for filename
|
||||
-- and content-type for extension
|
||||
function download_to_file(url, file_name)
|
||||
print("Download URL: "..url)
|
||||
@ -117,7 +124,6 @@ function download_to_file(url, file_name)
|
||||
return file_path
|
||||
end
|
||||
|
||||
|
||||
function vardump(value)
|
||||
print(serpent.block(value, {comment=false}))
|
||||
end
|
||||
@ -143,10 +149,10 @@ end
|
||||
-- User has privileges
|
||||
function is_sudo(msg)
|
||||
local var = false
|
||||
-- Check users id in config
|
||||
for v,user in pairs(_config.sudo_users) do
|
||||
if user == msg.from.id then
|
||||
var = true
|
||||
-- Check users id in config
|
||||
for v,user in pairs(_config.sudo_users) do
|
||||
if user == msg.from.id then
|
||||
var = true
|
||||
end
|
||||
end
|
||||
return var
|
||||
@ -179,7 +185,7 @@ function plugins_names( )
|
||||
-- Ends with .lua
|
||||
if (v:match(".lua$")) then
|
||||
table.insert(files, v)
|
||||
end
|
||||
end
|
||||
end
|
||||
return files
|
||||
end
|
||||
@ -187,11 +193,11 @@ end
|
||||
-- Function name explains what it does.
|
||||
function file_exists(name)
|
||||
local f = io.open(name,"r")
|
||||
if f ~= nil then
|
||||
io.close(f)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
if f ~= nil then
|
||||
io.close(f)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
@ -252,7 +258,6 @@ function send_photo_from_url(receiver, url, cb_function, cb_extra)
|
||||
-- If callback not provided
|
||||
cb_function = cb_function or ok_cb
|
||||
cb_extra = cb_extra or false
|
||||
|
||||
local file_path = download_to_file(url, false)
|
||||
if not file_path then -- Error
|
||||
local text = 'Fehler beim laden des Bildes'
|
||||
@ -267,7 +272,6 @@ end
|
||||
function send_photo_from_url_callback(cb_extra, success, result)
|
||||
local receiver = cb_extra.receiver
|
||||
local url = cb_extra.url
|
||||
|
||||
local file_path = download_to_file(url, false)
|
||||
if not file_path then -- Error
|
||||
local text = 'Fehler beim laden des Bildes'
|
||||
@ -289,7 +293,7 @@ function send_photos_from_url(receiver, urls)
|
||||
send_photos_from_url_callback(cb_extra)
|
||||
end
|
||||
|
||||
-- Use send_photos_from_url.
|
||||
-- Use send_photos_from_url.
|
||||
-- This function might be difficult to understand.
|
||||
function send_photos_from_url_callback(cb_extra, success, result)
|
||||
-- cb_extra is a table containing receiver, urls and remove_path
|
||||
@ -396,6 +400,55 @@ function user_allowed(plugin, msg)
|
||||
return true
|
||||
end
|
||||
|
||||
function send_order_msg(destination, msgs)
|
||||
local cb_extra = {
|
||||
destination = destination,
|
||||
msgs = msgs
|
||||
}
|
||||
send_order_msg_callback(cb_extra, true)
|
||||
end
|
||||
|
||||
function send_order_msg_callback(cb_extra, success, result)
|
||||
local destination = cb_extra.destination
|
||||
local msgs = cb_extra.msgs
|
||||
local file_path = cb_extra.file_path
|
||||
if file_path ~= nil then
|
||||
os.remove(file_path)
|
||||
print("Deleted: " .. file_path)
|
||||
end
|
||||
if type(msgs) == 'string' then
|
||||
send_large_msg(destination, msgs)
|
||||
elseif type(msgs) ~= 'table' then
|
||||
return
|
||||
end
|
||||
if #msgs < 1 then
|
||||
return
|
||||
end
|
||||
local msg = table.remove(msgs, 1)
|
||||
local new_cb_extra = {
|
||||
destination = destination,
|
||||
msgs = msgs
|
||||
}
|
||||
if type(msg) == 'string' then
|
||||
send_msg(destination, msg, send_order_msg_callback, new_cb_extra)
|
||||
elseif type(msg) == 'table' then
|
||||
local typ = msg[1]
|
||||
local nmsg = msg[2]
|
||||
new_cb_extra.file_path = nmsg
|
||||
if typ == 'document' then
|
||||
send_document(destination, nmsg, send_order_msg_callback, new_cb_extra)
|
||||
elseif typ == 'image' or typ == 'photo' then
|
||||
send_photo(destination, nmsg, send_order_msg_callback, new_cb_extra)
|
||||
elseif typ == 'audio' then
|
||||
send_audio(destination, nmsg, send_order_msg_callback, new_cb_extra)
|
||||
elseif typ == 'video' then
|
||||
send_video(destination, nmsg, send_order_msg_callback, new_cb_extra)
|
||||
else
|
||||
send_file(destination, nmsg, send_order_msg_callback, new_cb_extra)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Same as send_large_msg_callback but friendly params
|
||||
function send_large_msg(destination, text)
|
||||
local cb_extra = {
|
||||
@ -472,4 +525,22 @@ function load_from_file(file, default_data)
|
||||
local result = cmd:read('*all')
|
||||
cmd:close()
|
||||
return result
|
||||
end
|
||||
|
||||
-- See http://stackoverflow.com/a/14899740
|
||||
function unescape_html(str)
|
||||
local map = {
|
||||
["lt"] = "<",
|
||||
["gt"] = ">",
|
||||
["amp"] = "&",
|
||||
["quot"] = '"',
|
||||
["apos"] = "'"
|
||||
}
|
||||
new = string.gsub(str, '(&(#?x?)([%d%a]+);)', function(orig, n, s)
|
||||
var = map[s] or n == "#" and string.char(s)
|
||||
var = var or n == "#x" and string.char(tonumber(s,16))
|
||||
var = var or orig
|
||||
return var
|
||||
end)
|
||||
return new
|
||||
end
|
Reference in New Issue
Block a user