Skip to content

Instantly share code, notes, and snippets.

@HaleTom
Last active March 23, 2024 09:07
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save HaleTom/fe873dc2f3c5bd14f7418efefc2b91a8 to your computer and use it in GitHub Desktop.
Save HaleTom/fe873dc2f3c5bd14f7418efefc2b91a8 to your computer and use it in GitHub Desktop.
Update aria2.conf with 20 "best" BitTorrent trackers
#!/bin/bash
# Update the bt-tracker= line in aria2.conf
# Any bt-tracker= lines are removed and and a new one added at the bottom of the file
# Updates at: https://gist.github.com/HaleTom/fe873dc2f3c5bd14f7418efefc2b91a8
# Inspiration: https://github.com/wuyuansushen/aria2c_TrackersList
set -euo pipefail
shopt -s failglob
warn() { printf "%s: %s\n" "$0" "$*"; }
die() { warn "$1"; exit 1; }
conf=${XDG_CONFIG_HOME:-$HOME/.conifg}/aria2/aria2.conf
url='https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt'
tmp=$(mktemp -p /tmp) || die 'Cannot make temp file'
cleanup() { rm -rf "$tmp"; } # Ensure tmp file is always removed, eg if we can't curl
trap cleanup EXIT
# Strip out any old bt-tracker= lines
[ -e "$conf" ] || die "config file $conf does not exist"
sed -E '/^[[:space:]]*bt-tracker/d' "$conf" >| "$tmp"
trackers=$(curl --no-progress-meter "$url" | sed '/^$/d' | tr '\n' ',') \
|| die "Couldn't get trackers list" >> "$tmp"
printf 'bt-tracker=%s\n' "$trackers" >> "$tmp"
mv "$tmp" "$conf"
@HaleTom
Copy link
Author

HaleTom commented Aug 5, 2023

Does anyone have the sed-fu to replace all bt-tracker= lines rather than delete and append?

@m-rey
Copy link

m-rey commented Mar 23, 2024

Does anyone have the sed-fu to replace all bt-tracker= lines rather than delete and append?

yes. try using sed like this instead:

# Replace bt-tracker= lines
sed -i -E "/^[[:space:]]*bt-tracker=/c bt-tracker=$trackers" "$conf" >| $tmp || die "Failed to update $conf"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment