パラメータをコマンドに渡す前に再作成してください。

パラメータをコマンドに渡す前に再作成してください。

私は使用しますrtorrent。マグネットリンクを使用すると、「メタ」ファイル(.meta)が生成されます。長い16進数(0-9、AF)形式を取ります。たとえば、

0123456789ABCDEF0123456.meta

既存のメタファイルを「使用」して起動するには、最初にrtorrentサフィックスなし(「.meta」なし)でファイル名を「分離」できます。

0123456789ABCDEF0123456

この16進部分は実際には(常に?)41文字の長さです。

次に、その前にプロトコルを追加し、その後にトラッカーのリストを追加する必要があります。

magnet:?xt=urn:btih:0123456789ABCDEF0123456&tr=http://tracker1.com:80&tr=udp://tracker2.net:8080

トラッカーのリストを変更できればいいと思います。理想的には、トラッカーURLを1行に1つのトラッカーを含むファイルから読み取る必要があり、必要な&tr=場所に追加する必要があります。トラッカーはhttp://またはudp://をプロトコルとして使用し、通常はポート番号を(:port最後に)指定する必要があります。

一つはい実際の「tracker-tail」(16進数の次の部分)は次のとおりです。

&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A80&tr=udp%3A%2F%2Fglotorrents.pw%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969

ただし、これを変更することは可能であり、理想的には別々のファイルにリストする必要があります。

たとえば、これらのファイルには以下を含めることができます。

trackers.txt:

udp://tracker.coppersurfer.tk:80
udp://glotorrents.pw:6969/announce
udp://tracker.leechers-paradise.org:6969
udp://tracker.opentrackr.org:1337/announce
udp://exodus.desync.com:6969

(注:トラッカーはプロトコルとしてhttp://も使用します。)

.meta"=削除と追加magnet:...- 混乱を&tr=...避けるために引用符で囲む&- その後、結果をbashrtorrentにパラメータとして渡すことができます。


私が望むのは、この変換プロセスを自動化し、結果をrtorrent。 1つはスクリプトによって開始されます)。bashrtorrent

rtorrent "magnet:...12345..." "magnet:...6789..." "magnet:...ABCD..."

残念ながら、私はスクリプトがうまくいきませんがbash、このようなことをする方法を知っていますか?

ベストアンサー1

以下は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[@]}"

また、あなたのシナリオでは、どのプログラムがどのプログラムを呼び出すのか、いつ、どのようにパラメータが生成され、他のプログラムに渡されるのかわかりません。それで私は次のような仮定をしました。

  1. トラッカーリストファイルを最初の引数として使用し、メタファイルを残りの引数として使用してスクリプトを呼び出します。
  2. スクリプトは次から始める必要があります。rtorrent

これらの仮定が間違っている場合は、上記のスクリプトを明確にするか、使用してニーズに合わせて調整してください。

おすすめ記事