mod_pubsub_twitter/mod_pubsub_twitter.lua
author Matthew Wild <mwild1@gmail.com>
Sat, 24 Sep 2022 09:25:46 +0100
changeset 5062 39c2824c2880
parent 1343 7dbde05b48a9
permissions -rw-r--r--
mod_cloud_notify: README overhaul
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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);