author | Matthew Wild <mwild1@gmail.com> |
Sat, 03 Sep 2022 18:09:04 +0100 | |
changeset 5038 | f7eaf73b8f30 |
parent 1343 | 7dbde05b48a9 |
permissions | -rw-r--r-- |
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 |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
978
diff
changeset
|
12 |
-- |
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
|
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" |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
978
diff
changeset
|
43 |
local timestamp_date, timestamp_month, timestamp_year, timestamp_time = |
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
|
44 |
result.created_at:match(" (%d+) (%a+) (%d+) (%d%d:%d%d:%d%d)"); |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
978
diff
changeset
|
45 |
|
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
|
46 |
local timestamp = ("%s-%s-%sT%sZ"):format(timestamp_year, month_number[timestamp_month], timestamp_date, timestamp_time); |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
978
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(); |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
978
diff
changeset
|
58 |
|
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
|
59 |
module:log("debug", "Publishing Twitter result: %s", tostring(item)); |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
978
diff
changeset
|
60 |
|
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
|
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))); |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
978
diff
changeset
|
109 |
|
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
|
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; |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
978
diff
changeset
|
112 |
|
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
|
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); |