| 2 Jan 2022 |
@grahamc:nixos.org | * it'd be great to have a script which extracts all of the rooms in a space, recursively through subspaces | 19:07:53 |
| 3 Jan 2022 |
@janne.hess:helsinki-systems.de | In reply to @grahamc:nixos.org it'd be great to have a script which extracts all of the rooms in a space, recursively through subspaces #!/usr/bin/env bash
set -euo pipefail
hs='https://helsinki-systems.de'
accessToken='' # must match the HS!
recurseSpace() {
local mxid="${1}"
local pathSoFar="${2:-}"
# Get some basic info
local roomName="$(curl -fsLH 'Accept: application/json' -H "Authorization: Bearer ${accessToken}" "${hs}/_matrix/client/r0/rooms/${mxid}/state/m.room.name" | jq -r .name || :)"
[ -z "${roomName}" ] && return # wat
local roomType="$(curl -fsLH 'Accept: application/json' -H "Authorization: Bearer ${accessToken}" "${hs}/_matrix/client/r0/rooms/${mxid}/state/m.room.create" | jq -r .type)"
if [ "${roomType}" = m.space ]; then
# It's a space - fetch children and recurse them
for child in $(curl -fsLHH 'Accept: application/json' -H "Authorization: Bearer ${accessToken}" "${hs}/_matrix/client/r0/rooms/${mxid}/state" | jq -r '.[] | select(.type == "m.space.child") | .state_key'); do
recurseSpace "${child}" "${pathSoFar}/${roomName}"
done
else
# It's not a space - print it
echo "${mxid} - ${pathSoFar}/${roomName}"
fi
}
recurseSpace "!MKvhXlSTLGJUXpYuWF%3Anixos.org"
| 11:39:47 |
@janne.hess:helsinki-systems.de | this does however only work when you can see the room state and some rooms only show the state when you joined them which is why the list is incomplete for me:
!DBFhtjpqmJNENpLDOv:nixos.org - /NixOS/NixOS Systemd
!GsmxjHfeAYLsTEQmjS:nixos.org - /NixOS/Nix Matrix Discussion
!KEJUbONnoBpiYKGWEq:nixos.org - /NixOS/NixOS Gaming
!KqkRjyTEzAGRiZFBYT:nixos.org - /NixOS/Nix / NixOS
!RjBlCIbsLDzHBIzmaA:nixos.org - /NixOS/NixOS on ARM
!DBFhtjpqmJNENpLDOv:nixos.org - /NixOS/Teams/NixOS Systemd
!MthpOIxqJhTgrMNxDS:nixos.org - /NixOS/Teams/NixOS ACME / LetsEncrypt
!RROtHmAaQIkiJzJZZE:nixos.org - /NixOS/Teams/NixOS.org Infrastructure
!RjBlCIbsLDzHBIzmaA:nixos.org - /NixOS/Teams/NixOS on ARM
!UNVBThoJtlIiVwiDjU:nixos.org - /NixOS/Teams/Staging
!ZRgXNaHrdpGqwUnGnj:nixos.org - /NixOS/Teams/NixOS Security
!aGqRytqbCECitOFhbt:nixos.org - /NixOS/Teams/Release Management
!sBfrWMVsLoSyFTCkNv:nixos.org - /NixOS/Teams/OfBorg
!vxTmkuJzhGPsMdkAOc:transformierende-gesellschaft.org - /NixOS/Teams/NixOS Matrix Subsystem
!zghijEASpYQWYFzriI:nixos.org - /NixOS/Teams/Hydra
!VRULIdgoKmKPzJZzjj:nixos.org - /NixOS/Nix Hackers
!ZRgXNaHrdpGqwUnGnj:nixos.org - /NixOS/NixOS Security
!vxTmkuJzhGPsMdkAOc:transformierende-gesellschaft.org - /NixOS/Community/NixOS Matrix Subsystem
!kjdutkOsheZdjqYmqp:nixos.org - /NixOS/Nix / Nixpkgs / NixOS Dev
!rMMJVYqfOEOLttKGza:nixos.org - /NixOS/Nix Matrix Suggestions
!sgkZKRutwatDMkYBHU:nixos.org - /NixOS/Nix Offtopic
!tCyGickeVqkHsYjWnh:nixos.org - /NixOS/NixOS Networking
!tDnwWRNkmmYtMXfaZl:nixos.org - /NixOS/Nix Language
!MthpOIxqJhTgrMNxDS:nixos.org - /NixOS/Topics/NixOS ACME / LetsEncrypt
!UUYziobKGGxpovWyAN:nixos.org - /NixOS/Topics/Robotnix
!ayCRiZriCVtuCUpeLp:nixos.org - /NixOS/Topics/Nix Cross Compiling
!kyXJonZuBXCGzVwuSn:nixos.org - /NixOS/Topics/Systems Programming
!zghijEASpYQWYFzriI:nixos.org - /NixOS/Hydra
| 11:40:26 |
@janne.hess:helsinki-systems.de | In reply to @grahamc:nixos.org it'd be great to have a script which extracts all of the rooms in a space, recursively through subspaces * #!/usr/bin/env bash
set -euo pipefail
hs='https://helsinki-systems.de'
accessToken='' # must match the HS!
recurseSpace() {
local mxid="${1}"
local pathSoFar="${2:-}"
# Get some basic info
local roomName="$(curl -fsLH 'Accept: application/json' -H "Authorization: Bearer ${accessToken}" "${hs}/_matrix/client/r0/rooms/${mxid}/state/m.room.name" | jq -r .name || :)"
[ -z "${roomName}" ] && return # wat
local roomType="$(curl -fsLH 'Accept: application/json' -H "Authorization: Bearer ${accessToken}" "${hs}/_matrix/client/r0/rooms/${mxid}/state/m.room.create" | jq -r .type)"
if [ "${roomType}" = m.space ]; then
# It's a space - fetch children and recurse them
for child in $(curl -fsLH 'Accept: application/json' -H "Authorization: Bearer ${accessToken}" "${hs}/_matrix/client/r0/rooms/${mxid}/state" | jq -r '.[] | select(.type == "m.space.child") | .state_key'); do
recurseSpace "${child}" "${pathSoFar}/${roomName}"
done
else
# It's not a space - print it
echo "${mxid} - ${pathSoFar}/${roomName}"
fi
}
recurseSpace "!MKvhXlSTLGJUXpYuWF%3Anixos.org"
| 11:55:36 |
@grahamc:nixos.org | Woohoo! Thank you! | 12:11:41 |
| 4 Jan 2022 |
adisbladis | grahamc (he/him): Made you an admin on #poetry2nix:blad.is | 07:02:29 |
Sandro | In reply to @janne.hess:helsinki-systems.de
this does however only work when you can see the room state and some rooms only show the state when you joined them which is why the list is incomplete for me:
!DBFhtjpqmJNENpLDOv:nixos.org - /NixOS/NixOS Systemd
!GsmxjHfeAYLsTEQmjS:nixos.org - /NixOS/Nix Matrix Discussion
!KEJUbONnoBpiYKGWEq:nixos.org - /NixOS/NixOS Gaming
!KqkRjyTEzAGRiZFBYT:nixos.org - /NixOS/Nix / NixOS
!RjBlCIbsLDzHBIzmaA:nixos.org - /NixOS/NixOS on ARM
!DBFhtjpqmJNENpLDOv:nixos.org - /NixOS/Teams/NixOS Systemd
!MthpOIxqJhTgrMNxDS:nixos.org - /NixOS/Teams/NixOS ACME / LetsEncrypt
!RROtHmAaQIkiJzJZZE:nixos.org - /NixOS/Teams/NixOS.org Infrastructure
!RjBlCIbsLDzHBIzmaA:nixos.org - /NixOS/Teams/NixOS on ARM
!UNVBThoJtlIiVwiDjU:nixos.org - /NixOS/Teams/Staging
!ZRgXNaHrdpGqwUnGnj:nixos.org - /NixOS/Teams/NixOS Security
!aGqRytqbCECitOFhbt:nixos.org - /NixOS/Teams/Release Management
!sBfrWMVsLoSyFTCkNv:nixos.org - /NixOS/Teams/OfBorg
!vxTmkuJzhGPsMdkAOc:transformierende-gesellschaft.org - /NixOS/Teams/NixOS Matrix Subsystem
!zghijEASpYQWYFzriI:nixos.org - /NixOS/Teams/Hydra
!VRULIdgoKmKPzJZzjj:nixos.org - /NixOS/Nix Hackers
!ZRgXNaHrdpGqwUnGnj:nixos.org - /NixOS/NixOS Security
!vxTmkuJzhGPsMdkAOc:transformierende-gesellschaft.org - /NixOS/Community/NixOS Matrix Subsystem
!kjdutkOsheZdjqYmqp:nixos.org - /NixOS/Nix / Nixpkgs / NixOS Dev
!rMMJVYqfOEOLttKGza:nixos.org - /NixOS/Nix Matrix Suggestions
!sgkZKRutwatDMkYBHU:nixos.org - /NixOS/Nix Offtopic
!tCyGickeVqkHsYjWnh:nixos.org - /NixOS/NixOS Networking
!tDnwWRNkmmYtMXfaZl:nixos.org - /NixOS/Nix Language
!MthpOIxqJhTgrMNxDS:nixos.org - /NixOS/Topics/NixOS ACME / LetsEncrypt
!UUYziobKGGxpovWyAN:nixos.org - /NixOS/Topics/Robotnix
!ayCRiZriCVtuCUpeLp:nixos.org - /NixOS/Topics/Nix Cross Compiling
!kyXJonZuBXCGzVwuSn:nixos.org - /NixOS/Topics/Systems Programming
!zghijEASpYQWYFzriI:nixos.org - /NixOS/Hydra
IIRC the room state can only be displayed if the home-server knows about it and that is the case when any user on the hs joined it. | 19:36:56 |