매개변수를 명령에 전달하기 전에 다시 작성하세요.

매개변수를 명령에 전달하기 전에 다시 작성하세요.

나는 사용한다 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을 한 줄에 하나의 트래커가 있는 파일에서 읽어야 하며 &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. 하나는 스크립트에 의해 시작됨).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

이러한 가정이 잘못된 경우 위 스크립트를 명확히 하거나 사용하고 필요에 맞게 조정하십시오.

관련 정보