Mercurial > prosody-modules
annotate mod_pubsub_twitter/mod_pubsub_twitter.lua @ 4191:e2728b540223
Merge
author | JC Brand <jc@opkode.com> |
---|---|
date | Mon, 12 Oct 2020 18:04:05 +0200 |
parents | 7dbde05b48a9 |
children |
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 |
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); |