From 35485fab2c87e882d458c0d2f77f8de0eedcfb78 Mon Sep 17 00:00:00 2001 From: Zergling_man Date: Sat, 27 Aug 2022 15:46:03 +1000 Subject: [PATCH] v1 --- shitty_api.sh | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100755 shitty_api.sh diff --git a/shitty_api.sh b/shitty_api.sh new file mode 100755 index 0000000..798d424 --- /dev/null +++ b/shitty_api.sh @@ -0,0 +1,50 @@ +#!/bin/sh + +accs=$(cat ~/.config/clemmy/accounts.csv) +i=0 +for line in ${accs[*]}; do + IFS=, read insts[$i] tokes[$i] <<< $line + i=$((i+1)) +done +INSTANCE=${insts[0]} +TOKE=${tokes[0]} + +baseurl="https://$INSTANCE/api/v3/" +# Please don't abuse jq like this +showcomment='(.post | (.id | tostring)+" "+(.name | tostring)), +(.comment | (.parent_id | tostring)+"->"+(.id | tostring))+", "+(.creator.display_name // .creator.name)+":", +((.comment // .post) | .published, +(.body // .content)), +""' + +comments=".[] | $showcomment" + +#Generics +get(){ curl -s "$baseurl$1?${*:3}" | jq "$2"; } +getauth(){ get "$1" "$2" "auth=$TOKE&${*:3}"; } +post(){ curl -s "$baseurl$1" --json "$(echo ${*:2} | jq .+{\"auth\":\"$TOKE\"})"; } + +#Utils +getbody(){ a=$(cat); body=${a//\"/\\\"}; } + +actions="notifs notifs2 comments freepost shitpost follow unfollow following deref whoami login" +#Endpoints. +notifs(){ getauth "user/replies" ".replies | $comments"; } +notifs2(){ getauth "user/mention"; } +comments(){ getauth "post" "(.post_view | $showcomment), (.comments | reverse | $comments)" "id=$1"; } +freepost(){ getbody; post "post" "{\"community_id\":$1,\"name\":\"$2\",\"body\":\"$body\"}"; } +shitpost(){ getbody; postid=$1; parentid=$2; shift 2; post "comment" "{\"post_id\":$postid,\"parent_id\":$parentid,\"content\":\"$body\"}"; } +follow(){ post "community/follow" "{\"community_id\":$1,\"follow\":true}"; } +unfollow(){ post "community/follow" "{\"community_id\":$1,\"follow\":false}"; } +following(){ getauth "post/list" ".posts | $comments" "type_=Subscribed"; } +deref(){ getauth "resolve_object" "" "q=$*"; } +whoami(){ echo $INSTANCE $TOKE; } +login(){ post "user/login" "{\"username_or_email\":\"$1\",\"password\":\"$2\"}"; } + +while getopts "a:h" o;do case "${o}" in + a) INSTANCE=${insts[$OPTARG]}; TOKE=${tokes[$OPTARG]};; + h) echo $actions; exit;; +esac done +shift $((OPTIND-1)) + +$* \ No newline at end of file