summaryrefslogtreecommitdiff
path: root/src/playlog.lua
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2015-05-02 19:29:38 (GMT)
committerChristian Pointner <equinox@spreadspace.org>2015-05-02 19:29:38 (GMT)
commitcbce382e9cc06bb284f4d9f632e903bca6de0c67 (patch)
tree1c15435cfb430e48ad42687f9fe87e4bdae90aa9 /src/playlog.lua
parent4242679dc99da37f7d2b926f8eb6d86f4a09722c (diff)
moved to single directory
Diffstat (limited to 'src/playlog.lua')
-rw-r--r--src/playlog.lua98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/playlog.lua b/src/playlog.lua
new file mode 100644
index 0000000..33095c4
--- /dev/null
+++ b/src/playlog.lua
@@ -0,0 +1,98 @@
+--
+-- rhnop
+--
+-- Copyright (C) 2011-2015 Christian Pointner <equinox@helsinki.at>
+--
+-- This file is part of rhnop.
+--
+-- rhnop is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- any later version.
+--
+-- rhnop is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with rhnop. If not, see <http://www.gnu.org/licenses/>.
+--
+
+luasql = require "luasql.mysql"
+
+-- CREATE DATABASE rhnop CHARACTER SET utf8 COLLATE utf8_unicode_ci;
+-- GRANT select,insert,update ON rhnop.* TO 'nopsyncd' IDENTIFIED BY '<password>';
+-- GRANT select ON rhnop.* TO 'nopcollectd' IDENTIFIED BY '<password>';
+-- USE rhnop
+-- CREATE TABLE IF NOT EXISTS now (timestamp BIGINT UNSIGNED PRIMARY KEY NOT NULL, cart INT NOT NULL, len INT, showtitle VARCHAR(255), title VARCHAR(255), artist VARCHAR(255), album VARCHAR(255), ismusic BOOLEAN);
+-- ALTER TABLE now CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
+
+conf = require "conf"
+
+local playlog = {}
+
+function playlog:init()
+ local err
+
+ self.env, err = luasql.mysql()
+ if self.env == nil then
+ return nil, err
+ end
+
+ self.con, err = self.env:connect(conf.playlog_db, conf.playlog_user, conf.playlog_pwd, conf.playlog_host, conf.playlog_port)
+ if self.con == nil then
+ return nil, err
+ end
+
+ local ret, err = self.con:execute("SET CHARACTER SET utf8")
+ if ret == nil then
+ return nil, err
+ end
+
+ ret, err = self.con:setautocommit(true)
+ if ret == nil then
+ return nil, err
+ end
+
+ return true
+end
+
+function playlog:getLastCart()
+ local cur, err = self.con:execute("SELECT cart FROM now WHERE timestamp = (SELECT MAX(timestamp) FROM now)")
+ if cur == nil then
+ return nil, err
+ end
+
+ local cart = cur:fetch()
+ if cart == nil then cart = 0 end
+ return cart
+end
+
+function playlog:insertNowMusic(timestamp, cart, len, title, artist, album)
+ cart = tonumber(cart)
+ len = tonumber(len)
+ if cart < 400000 or cart > 450000 then
+ poolnum = 0
+ else
+ poolnum = math.floor(cart/1000) - 399
+ end
+ local cur, err = self.con:execute("INSERT into now VALUES(" .. self.con:escape(timestamp) .. ", " .. cart .. ", " .. len .. ", 'Musikpool " .. poolnum .. "', '" .. self.con:escape(title) .. "', '" .. self.con:escape(artist) .."', '" .. self.con:escape(album) .. "', 1)")
+ if cur == nil then
+ return nil, err
+ end
+
+ return true
+end
+
+function playlog:close()
+ if self.con then
+ self.con:close()
+ end
+
+ if self.env then
+ self.env:close()
+ end
+end
+
+return playlog