rudimentary weechat links scanner

This commit is contained in:
Alexander Bocken 2021-05-14 09:41:02 +02:00
parent 83f6e0960f
commit eaa5964611
Signed by: Alexander
GPG Key ID: 1D237BE83F9B05E8
3 changed files with 41 additions and 4 deletions

View File

@ -8,7 +8,7 @@ appearance.dayseparator=yes
appearance.emptyline=yes appearance.emptyline=yes
appearance.notifybar=yes appearance.notifybar=yes
appearance.sidebarwidth=0 appearance.sidebarwidth=0
appearance.theme=default on default appearance.theme=blue on black
appearance.todoview=hide-completed appearance.todoview=hide-completed
appearance.headingpos=right-justified appearance.headingpos=right-justified
daemon.enable=yes daemon.enable=yes

View File

@ -44,6 +44,7 @@ def main():
description='Download and decrypt matrix attachments' description='Download and decrypt matrix attachments'
) )
parser.add_argument('url', help='the url of the attachment') parser.add_argument('url', help='the url of the attachment')
parser.add_argument('file', nargs='?', help='save attachment to <file>')
parser.add_argument('--plumber', parser.add_argument('--plumber',
help='program that gets called with the ' help='program that gets called with the '
'dowloaded file') 'dowloaded file')
@ -68,11 +69,19 @@ def main():
print("Error downloading file") print("Error downloading file")
return -2 return -2
plumber = args.plumber or "/usr/bin/rifle" plumber = args.plumber
plaintext = decrypt_attachment(request.content, key, hash, iv) plaintext = decrypt_attachment(request.content, key, hash, iv)
file_name = save_file(plaintext)
subprocess.run([plumber, "{file}".format(file=file_name)]) if args.file is None:
file_name = save_file(plaintext)
if plumber is None:
plumber = "xdg-open"
else:
file_name = args.file
open(file_name, "wb").write(plaintext)
if plumber is not None:
subprocess.run([plumber, file_name])
return 0 return 0

28
.local/bin/weechatlinks Executable file
View File

@ -0,0 +1,28 @@
#!/bin/sh
all="$(perl -pe 's/[^│]*([^│]*?)│/\1/' |
perl -pe 's/^.*?\| //' |
sed 's/ │.*//' |
head -n-3 | tr -d '\n'|
grep -aEo '(<[^]]*>|\[[^ ]*\])')"
filenames="$( echo "$all" | grep -E '^<[^>]*>' | tr -d '<>')"
links="$( echo "$all" | grep -E '^\[' | tr -d [])"
choice="$(printf 'most recent\nall\n%s' "$filenames" | dmenu -i -p 'open which file?' -l 10)"
case "$choice" in
"most recent") link="$(echo "$links" | tail -n1)";;
"all") link="$links";;
*) #TODO: implement dmenu multiline support
linenr="$(echo "$filenames" | awk "/$choice/ {print NR}")"
[ "$(echo "$linenr" | wc -l)" -gt 1 ] && notify-send "weechatdls" "multiple files with that name, not yet supported"
link="$(echo "$links" | awk "NR==$linenr")";;
esac
if [ "$(echo "$link" | wc -l)" -eq 1 ]; then
if echo "$link" | grep -qE '^emxc'; then
matrix_decrypt.py "$link"
else
curl -L "$link" -o "/tmp/$choice"
rifle "/tmp/$choice"
fi
else
notify-send "weechatdls" "multi-link downloads not yet supported"
fi