initial
This commit is contained in:
commit
915e4edbd2
|
@ -0,0 +1,104 @@
|
|||
#!/usr/bin/fish
|
||||
set db /var/lib/quassel/quassel-storage.sqlite
|
||||
|
||||
argparse --name=quasseldump "s=" "l#" "b=" "n=" "t" "j" "c" "h" "d=" "f=" -- $argv
|
||||
|
||||
if test -z "$_flag_l"
|
||||
set -g limit 20
|
||||
else
|
||||
set -g limit "$_flag_l"
|
||||
end
|
||||
|
||||
if test "$_flag_h"
|
||||
echo "-s text search
|
||||
-b select buffer
|
||||
-l set limit
|
||||
-n filter nicks
|
||||
-t show time
|
||||
-c show channel
|
||||
-j show join/part
|
||||
-d custom date format
|
||||
-f time range (date|date)"
|
||||
exit
|
||||
end
|
||||
|
||||
set wanted_types 1
|
||||
|
||||
if test -n "$_flag_j"
|
||||
set -a wanted_types 32 128
|
||||
end
|
||||
|
||||
set types (string join "," $wanted_types)
|
||||
|
||||
set query_start "select * from (select backlog.type, backlog.time, buffer.buffername, sender.sender, backlog.message from backlog natural join sender natural join buffer where type in ($types) "
|
||||
set query_search "and message like \"%$_flag_s%\" "
|
||||
set query_nick "and sender.sender like \"$_flag_n!%\" "
|
||||
set query_end "order by backlog.time desc limit $limit ) order by time asc;"
|
||||
|
||||
set -a query_string $query_start
|
||||
|
||||
if test -n "$_flag_b"
|
||||
set buffer_id ( sqlite3 $db "select bufferid from buffer where buffername=\"$_flag_b\" " )
|
||||
set query_chan "and bufferid = \"$buffer_id\" "
|
||||
set -a query_string $query_chan
|
||||
end
|
||||
|
||||
function to_milis -a datestring
|
||||
math -- (date -d "$datestring" "+%s" ) x 1000
|
||||
end
|
||||
|
||||
if test -n "$_flag_f"
|
||||
set datesplit (string split "|" "$_flag_f")
|
||||
if test -n "$datesplit[2]"
|
||||
set s_time (to_milis "$datesplit[1]")
|
||||
set e_time (to_milis "$datesplit[2]")
|
||||
set query_date "and backlog.time between $s_time and $e_time "
|
||||
set -a query_string $query_date
|
||||
else
|
||||
echo "must specify range"
|
||||
exit
|
||||
end
|
||||
end
|
||||
|
||||
if test -n "$_flag_s"
|
||||
set -a query_string $query_search
|
||||
end
|
||||
|
||||
if test -n "$_flag_n"
|
||||
set -a query_string $query_nick
|
||||
end
|
||||
|
||||
set -a query_string $query_end
|
||||
|
||||
function query
|
||||
sqlite3 $db "$query_string"
|
||||
end
|
||||
|
||||
while read line
|
||||
set split (string split -m5 "|" $line)
|
||||
set nick (string split -m1 "!" $split[4])[1]
|
||||
set seconds (math ceil -- $split[2] / 1000)
|
||||
set date_format "%y-%m-%d %R"
|
||||
|
||||
if test "$_flag_d"
|
||||
set date_format "$_flag_d"
|
||||
end
|
||||
set time ( date -d "@$seconds" "+$date_format" )
|
||||
|
||||
if test "$_flag_c"
|
||||
printf "%s " "$split[3]"
|
||||
end
|
||||
|
||||
if test "$_flag_t"
|
||||
printf "%s " "$time"
|
||||
end
|
||||
|
||||
switch "$split[1]"
|
||||
case "32"
|
||||
printf "→ %s\n" "$nick"
|
||||
case "1"
|
||||
printf "<%s> %s\n" "$nick" "$split[5]"
|
||||
case "128"
|
||||
printf "← %s\n" "$nick"
|
||||
end
|
||||
end < (query | psub)
|
Loading…
Reference in New Issue