1
0
10 atproto
syui edited this page 2024-09-20 09:13:19 +00:00

curl

no-authorization

https://docs.bsky.app/docs/api/com-atproto-repo-describe-repo

handle=yui.syui.ai
host=bsky.social
api=$host/xrpc
plc=plc.directory
url=$api/com.atproto.repo.describeRepo

curl -sL ${host}/xrpc/_health

d=`curl -sL "${url}?repo=$handle"`
echo $d
did=`echo $d|jq -r .did`
echo $did

collection=app.bsky.feed.post
url=$api/com.atproto.repo.listRecords
timed=`curl -sL "${url}?repo=$handle&collection=$collection&reverse=true&limit=1"|jq -r ".[]|.[0]?|.value.createdAt"`
cid=`curl -sL "${url}?repo=$handle&collection=$collection&reverse=true&limit=1"|jq -r ".[]|.[0]?|.cid"`
uri=`curl -sL "${url}?repo=$handle&collection=$collection&reverse=true&limit=1"|jq -r ".[]|.[0]?|.uri"`

rkey=`echo $uri|cut -d / -f 5`
url=$api/com.atproto.repo.getRecord
curl -sL "$url?repo=$did&collection=$collection&rkey=$rkey"|jq .

uri=at://did:plc:vjug55kidv6sye7ykr5faxxn/app.bsky.feed.post/3jzn6g7ixgq2y
cid=bafyreiey2tt4dhvuvr7tofatdverqrxmscnnus2uyfcmkacn2fov3vb4wa
did=did:plc:vjug55kidv6sye7ykr5faxxn
rkey=3jzn6g7ixgq2y
url=$api/com.atproto.repo.getRecord
curl -sL "$url?repo=$did&collection=$collection&rkey=$rkey&cid="|jq .

did

handle=yui.syui.ai
curl -sL "https://public.api.bsky.app/xrpc/com.atproto.identity.resolveHandle?handle=$handle"

{"did":"did:plc:4hqjfn7m6n5hno3doamuhgef"}
did=did:plc:4hqjfn7m6n5hno3doamuhgef
curl -sL https://plc.directory/$did | jq -r ".alsoKnownAs.[]"

at://yui.syui.ai

login

# session
host=bsky.social
handle=syui.bsky.social
pass=xxx
url=https://$host/xrpc/com.atproto.server.createSession
curl -sL -X POST -H "Content-Type: application/json" -d "{\"identifier\":\"$handle\",\"password\":\"$pass\"}" $url

# refresh
j=`!!`
token=`echo $j|jq -r .accessJwt`
refresh=`echo $j|jq -r .refreshJwt`
url=https://$host/xrpc/com.atproto.server.refreshSession
curl -sL -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $refresh" $url

jq

ここではaiosにインストールされているjq, daselexampleをまとめます。

null

id:3name:nullを除外して表示

[
  {
    "id": 1,
    "name": "aios",
    "display": "ai os"
  },
  {
    "id": 2,
    "name": "archlinux",
    "display": "Arch Linux"
  },
  {
    "id": 3,
    "display": "Linux Kernel"
  }
]
$ echo $json|jq -r ".[]|{name, display}|select(.name | length > 0)|.name,.display"
aios
ai os
archlinux
Arch Linux
$ echo $json|jq -r ".[]|.name // empty"
aios
archlinux

dasel

$ cat ~/.config/ai/token.toml|dasel -r toml host
'syu.is'

feed

feed = at://did:plc:4hqjfn7m6n5hno3doamuhgef/app.bsky.feed.generator/cmd

# https://docs.bsky.app/docs/api/app-bsky-feed-get-feed
token=`cat ~/.config/ai/token.json|jq -r .accessJwt`
url=at://did:plc:4hqjfn7m6n5hno3doamuhgef/app.bsky.feed.generator/cmd
curl -sL "https://public.api.bsky.app/xrpc/app.bsky.feed.getFeed?feed=$url" -H "Authorization: Bearer $token"