mirror of
https://github.com/benbusby/farside.git
synced 2025-04-20 02:48:42 +00:00
138 lines
5.2 KiB
YAML
138 lines
5.2 KiB
YAML
on:
|
|
workflow_dispatch:
|
|
schedule:
|
|
- cron: '0 0 * * *'
|
|
|
|
jobs:
|
|
update-instances:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install dependencies
|
|
run: sudo apt-get install -y jq
|
|
|
|
- uses: webfactory/ssh-agent@v0.5.3
|
|
with:
|
|
ssh-private-key: |
|
|
${{ secrets.PRIMARY_REPO_KEY }}
|
|
|
|
- name: Fetch instances
|
|
run: |
|
|
function apply_update() {
|
|
mv services-tmp.json services.json
|
|
rm -f *-tmp.json
|
|
|
|
# Ensure no trailing slashes for any instance
|
|
sed -i 's/\/"/"/g' services.json
|
|
}
|
|
|
|
# ==============================================================
|
|
# Git config
|
|
# ==============================================================
|
|
git config --global user.name github-actions
|
|
git config --global user.email 41898282+github-actions[bot]@users.noreply.github.com
|
|
git remote set-url origin git@github.com:benbusby/farside.git
|
|
git checkout main
|
|
|
|
# ==============================================================
|
|
# Searx update
|
|
# ==============================================================
|
|
curl -s https://searx.space/data/instances.json | \
|
|
jq '[
|
|
.instances |
|
|
to_entries[] |
|
|
select(.value.network_type == "normal") |
|
|
select(.value.version | . != null) |
|
|
select(.value.version | startswith("1.0.0")) |
|
|
select(.value.network.asn_privacy == 0) |
|
|
select(.value.http.error == null) |
|
|
select(.value.tls.grade == "A+" or .value.tls.grade == "A") |
|
|
select(.value.http.grade == "A+" or .value.http.grade == "A") |
|
|
select(.value.html.grade == "V" or .value.html.grade == "F") |
|
|
.key
|
|
] | sort' > searx-tmp.json
|
|
|
|
cat searx-tmp.json | jq .
|
|
|
|
jq --slurpfile searx searx-tmp.json \
|
|
'( .[] | select(.type == "searx") )
|
|
.instances |= $searx[0]' services.json > services-tmp.json
|
|
|
|
apply_update
|
|
|
|
# ==============================================================
|
|
# SimplyTranslate update
|
|
# ==============================================================
|
|
curl -s https://simple-web.org/instances/simplytranslate > st-out
|
|
sed -i -e 's/^/https:\/\//' st-out
|
|
jq -ncR '[inputs]' <<< "$(cat st-out | sort)" > st-tmp.json
|
|
|
|
jq --slurpfile simplytranslate st-tmp.json \
|
|
'( .[] | select(.type == "simplytranslate") )
|
|
.instances |= $simplytranslate[0]' services.json > services-tmp.json
|
|
|
|
apply_update
|
|
|
|
# ==============================================================
|
|
# Whoogle update
|
|
# ==============================================================
|
|
curl -s https://raw.githubusercontent.com/benbusby/whoogle-search/main/misc/instances.txt > whoogle-out
|
|
jq -ncR '[inputs]' <<< "$(cat whoogle-out | sort)" > whoogle-tmp.json
|
|
|
|
jq --slurpfile whoogle whoogle-tmp.json \
|
|
'( .[] | select(.type == "whoogle") )
|
|
.instances |= $whoogle[0]' services.json > services-tmp.json
|
|
|
|
apply_update
|
|
|
|
# ==============================================================
|
|
# Invidious update
|
|
# ==============================================================
|
|
curl -s https://api.invidious.io/instances.json | \
|
|
jq '[
|
|
.[] |
|
|
select(.[1].type | contains("https")) ] |
|
|
[.[][1].uri] |
|
|
sort' > invidious-tmp.json
|
|
jq --slurpfile invidious invidious-tmp.json \
|
|
'( .[] | select(.type == "invidious") )
|
|
.instances |= $invidious[0]' services.json > services-tmp.json
|
|
|
|
apply_update
|
|
|
|
# ==============================================================
|
|
# Scribe update
|
|
# ==============================================================
|
|
curl -s https://git.sr.ht/~edwardloveall/scribe/blob/main/docs/instances.json > scribe-tmp.json
|
|
jq --slurpfile scribe scribe-tmp.json \
|
|
'( .[] | select(.type == "scribe") )
|
|
.instances |= $scribe[0]' services.json > services-tmp.json
|
|
|
|
apply_update
|
|
|
|
# ==============================================================
|
|
# teddit update
|
|
# ==============================================================
|
|
curl -s https://codeberg.org/teddit/teddit/raw/branch/main/instances.json | \
|
|
jq '[
|
|
.[] |
|
|
select(.url | contains("https")) |
|
|
.url ] |
|
|
sort' > teddit-tmp.json
|
|
jq --slurpfile teddit teddit-tmp.json \
|
|
'( .[] | select(.type == "teddit") )
|
|
.instances |= $teddit[0]' services.json > services-tmp.json
|
|
|
|
apply_update
|
|
|
|
# ==============================================================
|
|
# TODO: Update instances for other services
|
|
# ==============================================================
|
|
|
|
# ==============================================================
|
|
# Push changes
|
|
# ==============================================================
|
|
git add services.json
|
|
git commit -m '[CI] Auto update instances' || exit 0
|
|
git push
|