App / API testing
aka freamon
Codeberg: https://codeberg.org/freamon?tab=activity
Anything from https://lemmon.website is me too.
aka freamon
Codeberg: https://codeberg.org/freamon?tab=activity
Anything from https://lemmon.website is me too.
I asked in that issue whether Lemmy finds community via to/cc (it does). Does PieFed do the same?
Yes - PieFed does the same. It looks in 'audience', then 'cc', then 'to'. It has to, to support all the platforms that haven't adopted 'audience. It's a convenient field, but PieFed won't be affected if Lemmy goes through with removing it.
Would this also open up the possibility of a topic/context being part of multiple audiences/communities?
Not at present. If you do something like cc: [community1, community2] it will only go to community1 (on both Lemmy and PieFed). There's so many activities that are effectively duplicates, both in normal operation and when platforms are bugged (both Lemmy and Mastodon have gone through phases of sending the same activity multiple times), that you need a way to make sure you're only processing one. On PieFed, this is done by having a UNIQUE constraint of the 'ap_id' column of the Post table (the ap_id of your post is https://community.nodebb.org/post/103806), so it means you can't have the same post in more than one community.
Hi @[email protected]/@freamon and @[email protected] —I'm working (not-so-secretly) on refactoring NodeBB so that it is able to "browse" remote audience...
App / API testing
More so 'other Fediverse socials'.
Here's an example on PieFed, that's a PixelFed user tagging their photos with 'dailyphoto' and then sharing via a.gup.pe on Mastodon: https://piefed.social/tag/dailyphoto
Lemmy has mangled that script a bit.
Where it says '%24%7Bpage%7D', it should a dollar sign, an open curly bracket, the word 'page', then a close curly bracket.
It displays a bit better at the source (click the multi-coloured fedi-link thing).
The only way I can think of is to use the API to get all communities, and then filter out the ones without local subs. So a basic BASH script would be:
#!/bin/bash
echo -n '' > /tmp/allcomms.txt
page=1
while true
do
communities=$(curl --request GET --url "https://walledgarden.xyz/api/v3/community/list?type_=All&page=${page}&limit=50" --header 'accept: application/json' | jq .communities[])
if [ "${communities}" == "" ]
then
break
fi
jq -r '[.community.id, .counts.subscribers_local] | @sh' <<<$communities >> /tmp/allcomms.txt
page=$(( page + 1 ))
sleep .5
done
while read id count
do
if [ $count -eq 0 ]
then
echo "$id has no local subs"
fi
done < /tmp/allcomms.txt
(It'll take a few minutes to run)
After that, how you purge the communities with those IDs I'm less sure of. My guess would be:
Get a login tokin:
JWT=$(curl --request POST --url https://walledgarden.xyz/api/v3/user/login --header 'accept: application/json' --header 'content-type: application/json' --data '{"username_or_email": "YOUR_USERNAME","password": "YOUR_PASSWORD"}' | jq -r .jwt)
Use Admin/Purge from the API:
curl --request POST --url https://walledgarden.xyz/api/v3/admin/purge/community --header "authorization: Bearer $JWT" --header 'content-type: application/json' --data "{"community_id": ${id}, "reason": "no local subs"}"
As long as purge lets the community be recreated again (which it should do), then that should be okay.
Don't take my word for any of this for an in-production Lemmy server, though. Test first!
I saw a post recently that was from Friendica to Lemmy: https://libranet.de/display/0b6b25a8-2267-afe6-6e6e-34b123429965 was to https://beehaw.org/post/18472167
Maybe you can copy whatever they did (or ask them).