summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorMichal Hruby <michal.mhr@gmail.com>2012-03-07 21:25:20 +0100
committerMichal Hruby <michal.mhr@gmail.com>2012-03-07 21:25:20 +0100
commit366552f0376a470e577994a600d23882d2f077fb (patch)
treea76d50e5c5d1a5c5251b0ba7d4e2c85a670f1821 /tools
parent6a1f196b63c67b9eb5a896da6837334f437bffcb (diff)
downloadzeitgeist-366552f0376a470e577994a600d23882d2f077fb.tar.gz
Add talis to tools
Diffstat (limited to 'tools')
-rwxr-xr-xtools/talis79
1 files changed, 79 insertions, 0 deletions
diff --git a/tools/talis b/tools/talis
new file mode 100755
index 00000000..2226a66c
--- /dev/null
+++ b/tools/talis
@@ -0,0 +1,79 @@
+#! /usr/bin/python
+
+import sys, os
+from zeitgeist.datamodel import Event, Subject, ResultType, TimeRange
+from zeitgeist.client import ZeitgeistDBusInterface
+
+USAGE = \
+"""Talis is a command line tool to search your history.
+USAGE:
+ talis [options] <enter search terms here>
+
+OPTIONS:
+ --mode=, -m= MODE
+ --offset=, -o= Offset into result set
+ --hits=, -h= Max number of hits to return
+
+MODES:
+ LeastPopularActor
+ LeastPopularSubjects
+ LeastRecentActor
+ LeastRecentEvents
+ LeastRecentSubjects
+ MostPopularActor
+ MostPopularSubjects
+ MostRecentActor
+ MostRecentEvents
+ MostRecentSubjects
+ Relevancy (default)
+"""
+
+if len(sys.argv) <= 1:
+ print USAGE
+ raise SystemExit(1)
+
+offset = 0
+maxhits = 10
+mode = 100
+mode_string = "Relevancy"
+query = ""
+relevancy_mode = False
+for i in range(1, len(sys.argv)):
+ if sys.argv[i].startswith("--mode=") or sys.argv[i].startswith("-m="):
+ mode_string = sys.argv[1].replace("--mode=", "").replace("-m=", "").strip()
+ if mode_string == "Relevancy":
+ mode = 100
+ else:
+ mode = getattr(ResultType, mode_string)
+ elif sys.argv[i].startswith("--offset=") or sys.argv[i].startswith("-o="):
+ offset = int(sys.argv[i].replace("--offset=", "").replace("-o=", "").strip())
+ elif sys.argv[i].startswith("--hits=") or sys.argv[i].startswith("-h="):
+ maxhits = int(sys.argv[i].replace("--hits=", "").replace("-h=", "").strip())
+ elif sys.argv[i] in ["--relevancies", "-r"]:
+ relevancy_mode = True
+ else:
+ query += " " + sys.argv[i]
+
+query = query.strip()
+
+fts = ZeitgeistDBusInterface().get_extension("Index", "index/activity")
+if relevancy_mode:
+ results, relevancies, count = fts.SearchWithRelevancies(query, TimeRange.always(), [], 2, offset, maxhits, mode)
+else:
+ results, count = fts.Search(query, TimeRange.always(), [], offset, maxhits, mode)
+
+if len(results) == 0:
+ print "No hits for '%s'" % query
+ raise SystemExit(0)
+
+print "%s-%s of %s hits for '%s'. Sorted by '%s':" % (offset+1, len(results)+offset, count, query, "Relevancy+" + mode_string if relevancy_mode else mode_string)
+
+i = offset+1
+events = map(Event, results)
+for event in events:
+ for subject in event.subjects:
+ if relevancy_mode:
+ print " %s. %s\t(%.2f)" % (i, subject.uri, relevancies[i-1])
+ else:
+ print " %s. %s" % (i, subject.uri)
+ i += 1