sync 2026-09-23: refresh README, add new scripts
This commit is contained in:
Executable
+62
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
API="https://graph.facebook.com/v25.0"
|
||||
TOKEN="${FACEBOOK_TOKEN:-}"
|
||||
if [ -z "$TOKEN" ] && [ -f "$HOME/.facebook-token" ]; then
|
||||
TOKEN="$(tr -d '\n' < "$HOME/.facebook-token")"
|
||||
fi
|
||||
if [ -z "$TOKEN" ]; then
|
||||
echo "ERROR: no token. Set FACEBOOK_TOKEN or create ~/.facebook-token (long-lived Page access token)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PAGE_ID="${FACEBOOK_PAGE_ID:-}"
|
||||
if [ -z "$PAGE_ID" ] && [ -f "$HOME/.facebook-page-id" ]; then
|
||||
PAGE_ID="$(tr -d '\n' < "$HOME/.facebook-page-id")"
|
||||
fi
|
||||
if [ -z "$PAGE_ID" ]; then
|
||||
echo "ERROR: no page id. Set FACEBOOK_PAGE_ID or create ~/.facebook-page-id" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then
|
||||
echo "Usage: $0 'post caption' [image-file]" >&2
|
||||
exit 1
|
||||
fi
|
||||
CAPTION="$1"
|
||||
IMAGE="${2:-}"
|
||||
|
||||
json_field() {
|
||||
python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('$1','') or '')"
|
||||
}
|
||||
|
||||
if [ -n "$IMAGE" ]; then
|
||||
if [ ! -f "$IMAGE" ]; then
|
||||
echo "ERROR: image not found: $IMAGE" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "--> Publishing photo to page $PAGE_ID..."
|
||||
RESP="$(curl -sS -X POST "$API/$PAGE_ID/photos" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-F "source=@$IMAGE" \
|
||||
--form-string "caption=$CAPTION")"
|
||||
ID="$(echo "$RESP" | json_field id)"
|
||||
if [ -z "$ID" ]; then
|
||||
echo "ERROR: photo post failed: $RESP" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "--> Posted photo, id: $ID"
|
||||
echo " https://www.facebook.com/photo.php?fbid=$ID"
|
||||
else
|
||||
echo "--> Publishing text post to page $PAGE_ID..."
|
||||
RESP="$(curl -sS -X POST "$API/$PAGE_ID/feed" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
--data-urlencode "message=$CAPTION")"
|
||||
ID="$(echo "$RESP" | json_field id)"
|
||||
if [ -z "$ID" ]; then
|
||||
echo "ERROR: post failed: $RESP" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "--> Posted, id: $ID"
|
||||
fi
|
||||
Reference in New Issue
Block a user