Thu, 09 Jul 2015 14:38:17 +0200
plugins.xkcd2: Allow negative numbers in pattern
91 | 1 | -- Copyright (C) 2010 Thilo Cestonaro |
2 | -- | |
3 | -- This project is MIT/X11 licensed. | |
4 | -- | |
5 | local http = require("net.http"); | |
6 | local st = require("util.stanza"); | |
7 | local tostring = tostring; | |
8 | ||
9 | function riddim.plugins.youtube(bot) | |
10 | local youtubelink_pattern = "http:%/%/www.youtube.com%/watch%?v=([%a%-%_%d]+)"; | |
11 | ||
12 | local function bare_reply(event, reply) | |
13 | if event.stanza.attr.type == 'groupchat' then | |
14 | local r = st.reply(event.stanza) | |
15 | local room_jid = jid.bare(event.sender.jid); | |
16 | if bot.rooms[room_jid] then | |
17 | bot.rooms[room_jid]:send(r:tag("body"):text(reply)); | |
18 | end | |
19 | else | |
20 | return event:reply(reply); | |
21 | end | |
22 | end | |
23 | ||
24 | local function findYoutubeLink(event) | |
25 | local body = event.body; | |
26 | if not body then return; end | |
27 | if event.delay then return; end -- Don't process old messages from groupchat | |
28 | ||
29 | local videoId = body:match(youtubelink_pattern); | |
30 | ||
31 | if videoId then | |
32 | print("VideoID: "..tostring(videoId)); | |
33 | http.request("http://gdata.youtube.com/feeds/api/videos/"..tostring(videoId).."?v=2", nil, function (data, code, request) | |
34 | print("returned code: "..tostring(code)); | |
35 | print("-------------------------------------------------------------------------------------------"); | |
36 | print("returned data: "..tostring(data)); | |
37 | print("-------------------------------------------------------------------------------------------"); | |
38 | if code ~= 200 then | |
39 | if code > 0 then | |
40 | event:reply("Received HTTP "..code.." error (video gone?)"); | |
41 | else | |
42 | event:reply("Unable to fetch the XEP list from xmpp.org: "..data:gsub("%-", " ")); | |
43 | end | |
44 | return; | |
45 | end | |
46 | bare_reply(event, "Title: " .. data:match("<title>(.-)</title>")) | |
47 | end); | |
48 | end | |
49 | end | |
50 | ||
51 | bot:hook("message", findYoutubeLink); | |
52 | bot:hook("groupchat/joining", function (room) | |
53 | room:hook("message", findYoutubeLink); | |
54 | end); | |
55 | end | |
56 |