Software /
code /
prosody-modules
Annotate
mod_pubsub_twitter/mod_pubsub_twitter.lua @ 1268:854a3933cfcd
mod_muc_log_http: URL-encode room names. This allows special characters in room names to work. Ideally this escaping shouldn’t be done in the user visible content, but the module’s template system doesn’t currently allow that.
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Sat, 04 Jan 2014 16:50:57 -0500 |
parent | 978:c8f4502c764f |
child | 1343:7dbde05b48a9 |
rev | line source |
---|---|
945
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 -- Publishes Twitter search results over pubsub |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 -- |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 -- Config: |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 -- Component "pubsub.example.com" "pubsub" |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 -- modules_enabled = { |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 -- "pubsub_twitter"; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 -- } |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 -- twitter_searches = { -- node -> query |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 -- prosody = "prosody xmpp"; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 -- } |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 -- twitter_pull_interval = 20 -- minutes |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 -- |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 local pubsub = module:depends"pubsub"; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 local json = require "util.json"; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 local http = require "net.http"; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 local set = require "util.set"; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 local it = require "util.iterators"; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 local array = require "util.array"; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 local st = require "util.stanza"; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 --local dump = require"util.serialization".serialize; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 local xmlns_atom = "http://www.w3.org/2005/Atom"; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 local twitter_searches = module:get_option("twitter_searches", {}); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 local refresh_interval = module:get_option_number("twitter_pull_interval", 20) * 60; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 local api_url = module:get_option_string("twitter_search_url", "http://search.twitter.com/search.json"); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 local month_number = { |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 Jan = "01", Feb = "02", Mar = "03"; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 Apr = "04", May = "05", Jun = "06"; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 Jul = "07", Aug = "08", Sep = "09"; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 Oct = "10", Nov = "11", Dec = "12"; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 }; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
38 local active_searches = {}; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 local function publish_result(search_name, result) |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 local node, id = search_name, result.id_str; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
42 --"Tue, 02 Apr 2013 15:40:54 +0000" |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
43 local timestamp_date, timestamp_month, timestamp_year, timestamp_time = |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 result.created_at:match(" (%d+) (%a+) (%d+) (%d%d:%d%d:%d%d)"); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
45 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 local timestamp = ("%s-%s-%sT%sZ"):format(timestamp_year, month_number[timestamp_month], timestamp_date, timestamp_time); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 |
978
c8f4502c764f
mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents:
945
diff
changeset
|
48 local item = st.stanza("item", { xmlns = "http://jabber.org/protocol/pubsub", id = id }) |
c8f4502c764f
mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents:
945
diff
changeset
|
49 :tag("entry", { xmlns = xmlns_atom }) |
c8f4502c764f
mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents:
945
diff
changeset
|
50 :tag("id"):text(id):up() |
c8f4502c764f
mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents:
945
diff
changeset
|
51 :tag("author") |
c8f4502c764f
mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents:
945
diff
changeset
|
52 :tag("name"):text(result.from_user_name.." (@"..result.from_user..")"):up() |
c8f4502c764f
mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents:
945
diff
changeset
|
53 :tag("uri"):text("http://twitter.com/"..result.from_user):up() |
c8f4502c764f
mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents:
945
diff
changeset
|
54 :up() |
c8f4502c764f
mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents:
945
diff
changeset
|
55 :tag("published"):text(timestamp):up() |
c8f4502c764f
mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents:
945
diff
changeset
|
56 :tag("title"):text(result.text):up() |
c8f4502c764f
mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents:
945
diff
changeset
|
57 :tag("link", { rel = "alternate" , href = "https://twitter.com/"..result.from_user.."/status/"..id}):up(); |
945
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
58 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
59 module:log("debug", "Publishing Twitter result: %s", tostring(item)); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
60 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
61 local ok, err = pubsub.service:publish(node, true, id, item); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
62 if not ok then |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
63 if err == "item-not-found" then -- try again |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
64 local ok, err = pubsub.service:create(node, true); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
65 if not ok then |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
66 module:log("error", "could not create node %s: %s", node, err); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
67 return; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
68 end |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
69 local ok, err = pubsub.service:publish(node, true, id, item); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
70 if not ok then |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
71 module:log("error", "could not create or publish node %s: %s", node, err); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
72 return |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
73 end |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
74 else |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
75 module:log("error", "publishing %s failed: %s", node, err); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
76 end |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
77 end |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
78 end |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
79 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
80 local function is_retweet(tweet) |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
81 return not not tweet.text:match("^RT "); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
82 end |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
83 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
84 function update_all() |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
85 module:log("debug", "Updating all searches"); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
86 for name, search in pairs(active_searches) do |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
87 module:log("debug", "Fetching new results for '%s'", name); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
88 http.request(search.refresh_url or search.url, nil, function (result_json, code) |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
89 if code ~= 200 then |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
90 module:log("warn", "Twitter search query '%s' failed with code %d", name, code); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
91 return; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
92 end |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
93 local response = json.decode(result_json); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
94 module:log("debug", "Processing %d results for %s", #response.results, name); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
95 search.refresh_url = api_url..response.refresh_url; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
96 for _, result in ipairs(response.results) do |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
97 if not is_retweet(result) then |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
98 publish_result(name, result); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
99 end |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
100 end |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
101 end); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
102 end |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
103 return refresh_interval; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
104 end |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
105 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
106 function module.load() |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
107 local config_searches = set.new(array.collect(it.keys(twitter_searches))); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
108 local current_searches = set.new(array.collect(it.keys(active_searches))); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
109 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
110 local disable_searches = current_searches - config_searches; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
111 local new_searches = config_searches - current_searches; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
112 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
113 for search_name in disable_searches do |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
114 module:log("debug", "Disabled old Twitter search '%s'", search_name); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
115 active_searches[search_name] = nil; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
116 end |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
117 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
118 for search_name in new_searches do |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
119 module:log("debug", "Created new Twitter search '%s'", search_name); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
120 local query = twitter_searches[search_name]; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
121 active_searches[search_name] = { |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
122 url = api_url.."?q="..http.urlencode(query); |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
123 }; |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
124 end |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
125 end |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
126 |
dbcbcec37d24
mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
127 module:add_timer(5, update_all); |