From 02fb276232d31358a2e1b0ef873165b66d35addc Mon Sep 17 00:00:00 2001 From: localhost_frssoft Date: Sat, 6 Aug 2022 16:00:46 +0300 Subject: [PATCH] Group by timelines; auto update home, local, direct timelines; Create status --- pleroma-cli.sh | 33 +++++++++++++++++++++++++++----- utils/extract_fields_statuses.sh | 2 +- utils/statuses2files.sh | 1 + utils/statuses2files_acct.sh | 16 ---------------- utils/statuses2files_group.sh | 19 ++++++++++++++++++ 5 files changed, 49 insertions(+), 22 deletions(-) delete mode 100755 utils/statuses2files_acct.sh create mode 100755 utils/statuses2files_group.sh diff --git a/pleroma-cli.sh b/pleroma-cli.sh index 830bc2a..a2fce32 100755 --- a/pleroma-cli.sh +++ b/pleroma-cli.sh @@ -1,6 +1,8 @@ #!/bin/sh -instance=$(jj -i config.json instance) +if [ -z "$instance" ]; then + instance=$(jj -i config.json instance) +fi alias default_auth_browser=links export main_basedir=$(dirname $0) @@ -983,10 +985,14 @@ statuses_auto_update() { while true; do echo "Updating statuses..." - timeline='home' - export instance - timeline_api | ./utils/statuses2files.sh - echo "Waiting..." + for i in home local direct; do + echo "checking timeline $i" + timeline="$i" + export instance timeline + timeline_api | ./utils/statuses2files.sh + sleep 3 + done + echo "Sleeping..." sleep 30 done } @@ -1028,6 +1034,23 @@ if [ "$daemon_mode" = 'yes' ]; then ;; esac fi + write_status_action=$(/bin/ls $main_basedir/all_statuses/$instance/create 2>/dev/null) + if [ -n "$write_status_action" ]; then + dir_write_status=$(dirname "$write_status_action") + if [ -d "$dir_status/attachments" ]; then + attach_id='' + echo "Uploading attachments..." + for attach in "$dir_write_status"/attachments/*; do + attach_id=$(upload_api_media "@$attach" | jj id) + attach_id="${attach_id}," + echo $attach_id + done + mediaattach=$(echo $attach_id | sed 's/,$//g') + echo $mediaattach + fi + write_api_status $dir_write_status/message + rm $write_status_action + fi done done fi diff --git a/utils/extract_fields_statuses.sh b/utils/extract_fields_statuses.sh index 93a7782..a660f37 100755 --- a/utils/extract_fields_statuses.sh +++ b/utils/extract_fields_statuses.sh @@ -31,4 +31,4 @@ for i in $ids; do done export ids -echo "$json" | "$main_basedir"/utils/statuses2files_acct.sh +echo "$json" | "$main_basedir"/utils/statuses2files_group.sh diff --git a/utils/statuses2files.sh b/utils/statuses2files.sh index 9bd9e87..7aa2241 100755 --- a/utils/statuses2files.sh +++ b/utils/statuses2files.sh @@ -6,6 +6,7 @@ ids=$(echo "$json" | jj -l '#.id' | sed 's/"//g') mkdir -p "$main_basedir/all_statuses/$instance" mkdir -p "$main_basedir/statuses/$instance" +mkdir -p "$main_basedir/timelines/$instance/$timeline" for i in $ids; do if [ -f "$main_basedir"/all_statuses/$instance/$i/$i.json ]; then diff --git a/utils/statuses2files_acct.sh b/utils/statuses2files_acct.sh deleted file mode 100755 index cf51108..0000000 --- a/utils/statuses2files_acct.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -# Move statuses to acct dirs - -json=$(cat) - -for i in $ids; do - status_id=$i - acct=$(echo "$json" | jj "#[id=$i].account.acct") - mkdir -m 711 -p "$main_basedir"/statuses/$instance/$acct - if [ -n "$status_id" ]; then - ln -s -r "$main_basedir"/all_statuses/$instance/$status_id "$main_basedir"/statuses/$instance/$acct/$status_id - touch --reference "$main_basedir"/all_statuses/$instance/$status_id "$main_basedir"/statuses/$instance/$acct/$status_id - fi -done - diff --git a/utils/statuses2files_group.sh b/utils/statuses2files_group.sh new file mode 100755 index 0000000..a20c023 --- /dev/null +++ b/utils/statuses2files_group.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +# Group statuses by acct and timelines dirs + +json=$(cat) + +for i in $ids; do + status_id=$i + acct=$(echo "$json" | jj "#[id=$i].account.acct") + mkdir -m 711 -p "$main_basedir"/statuses/$instance/$acct + if [ -n "$status_id" ]; then + ln -s -r "$main_basedir"/all_statuses/$instance/$status_id "$main_basedir"/statuses/$instance/$acct/$status_id + touch --reference "$main_basedir"/all_statuses/$instance/$status_id "$main_basedir"/statuses/$instance/$acct/$status_id + + ln -s -r "$main_basedir"/all_statuses/$instance/$status_id "$main_basedir"/timelines/$instance/$timeline/$status_id + touch --reference "$main_basedir"/all_statuses/$instance/$status_id "$main_basedir"/timelines/$instance/$timeline/$status_id + fi +done +