diff --git a/plugins/music.lua b/plugins/music.lua new file mode 100644 index 0000000..836e00e --- /dev/null +++ b/plugins/music.lua @@ -0,0 +1,85 @@ +do + + -- Base search URL + local BASE_URL = 'http://pleer.com/mobile/search?q=' + + -- Base download URL + local BASE_DL_URL = 'http://pleer.com/mobile/files_mobile/' + + local htmlparser = require 'htmlparser' + + -- Provide download link + local function getDownloadLink(id) + return BASE_DL_URL .. id .. '.mp3' + end + + local function getLyrics(q) + local b, c = http.request(BASE_URL .. URL.escape(q)) + if c ~= 200 then + return "Oops! Netzwerkfehler!" + end + + local root = htmlparser.parse(b) + local tracks = root('.track') + local output = '' + + -- If no tracks found + if #tracks < 1 then + return 'Nichts gefunden!' + end + + for i, track in pairs(tracks) do + + -- Track id + local trackId = track.id + + -- Remove that starting 't' in the id of element + trackId = trackId:sub(2) + + -- Parse track + track = track:getcontent() + track = htmlparser.parse(track) + + -- Track artist + local artist = track:select('.artist')[1] + artist = unescape_html(artist:getcontent()) + + -- Track title + local title = track:select('.title')[1] + title = unescape_html(title:getcontent()) + + -- Track time + local time = track:select('.time')[1] + time = time:getcontent() + time = time:sub(-5) + + -- Track specs + local specs = track:select('.specs')[1] + specs = specs:getcontent() + specs = specs:split(',') + -- Size + local size = specs[1]:trim() + -- Bitrate + local bitrate = specs[2]:trim() + + -- Generate an awesome, well formated output + output = output .. i .. '. ' .. artist .. ' - ' .. title .. '\n' + .. '🕚 ' .. time .. ' | ' .. ' 🎧 ' .. bitrate .. ' | ' .. ' 📎 ' .. size .. '\n' + .. '💾 : ' .. getDownloadLink(trackId) .. '\n\n' + end + + return output + end + + local function run(msg, matches) + return getLyrics(matches[1]) + end + + return { + description = 'Search and get music from pleer', + usage = {'/music','/musik'}, + patterns = {'^/music (.*)$','^/musik (.*)$'}, + run = run +} + +end \ No newline at end of file