Aqui está um trecho de fazer a conversão no bash.
#!/bin/bash
# The array of results passed to rtorrent in the end
results=()
# The file listing the trackers is the first argument
trackers="$1"
shift
# create the tracker list url part.
# sed reads the file and puts '&tr=' before each line,
# then it replaces all : and / with the percent escaped version for urls.
# tr deletes all newlines (turning the text into one long line)
tracker_list_for_url="$(sed 's/^/&tr=/;s/:/%3A/g;s#/#%2F#g' < "$trackers" \
| tr -d '\n')"
# loop over arguments and add them to $results
for arg in "$@"; do
# remove the extension
hex_part="${arg%.meta}"
# append to results array
results+="magnet:?xt=urn:btih:$hex_part$tracker_list_for_url"
done
exec rtorrent "${results[@]}"
Ainda não entendo qual programa em seu cenário chama qual programa e quando e como os argumentos são criados e passados para outros programas. Então eu fiz estas suposições:
- você chama seu script com o arquivo da lista de rastreadores como primeiro argumento e os arquivos meta como o restante dos argumentos
- seu script deve começar a
rtorrent
Se essas suposições estiverem erradas, por favor, esclareça ou use o roteiro acima e o adote de acordo com sua necessidade.