「Ktorrent」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(文字列「Category:BitTorrent クライアント]]」を「Category:BitTorrent]]」に置換)
(古い記事の差し換え)
5行目: 5行目:
 
{{Pkg|ktorrent}} パッケージをインストールします。
 
{{Pkg|ktorrent}} パッケージをインストールします。
   
== コマンドラインで管理するスクリプト ==
 
   
  +
== Troubleshooting ==
Ktorrent は GUI のみのアプリケーションですが、幸運な事に DBUS インターフェースを持っています。したがって次のようなスクリプトにより (SSHなどの) コマンドラインから管理することができます。
 
   
  +
Without {{Pkg|geoip}}, KTorrent is unable to show any information about the seeders, leechers and the current trackers. [[Install]] it as a dependency. It is advised to enable DHT inside the Settings to avoid slow speeds and low amount of seeders.
以下は (元は amaurea によって作られた) OpenSUSE フォーラムからのコピペです。この例では ktorrent のサスペンド/リジュームとアップロード/ダウンロードコマンドを統合しています。
 
   
  +
== Script to manage it in command line ==
{{hc|/usr/local/bin/kt|<nowiki>
 
#!/usr/bin/env bash
 
#
 
# Public domain script by amaurea/amaur on IRC (freenode for example).
 
# Modified by trapanator to support download/upload rate setting and
 
# to suspend/resume ktorrent network activity
 
#
 
# gary example
 
# qdbus org.ktorrent.ktorrent /core startAll
 
   
  +
Since KTorrent is a GUI only application, it fortunately has a DBUS interface, so you can use scripts to manage it in command line (i.e. from SSH). See the following [https://www.linuxquestions.org/questions/linux-software-2/terminal-commands-for-ktorrent-4175441715/#post4851070 linuxquestions forum answer] for details.
 
case $1 in
 
help)
 
echo "kt: A simple console interface for ktorrent.
 
Usage: In the following \"id\" indicates either a torrent hash or index.
 
[] indicates optional arguments.
 
 
kt start [id]: If ktorrent is not running, start it. Otherwise,
 
if id is given, start that torrent, otherwise start
 
all torrents.
 
kt quit: Quit ktorrent.
 
kt load url: Load the torrent given by url. Note that the torrent must
 
be manually startet afterwards.
 
kt ls: Print a list of all torrents, of the format: index hash name.
 
kt info [id]: Print more detailed info about the selected (or all)
 
torrent(s).
 
kt stop [id]: Stop the torrent given by id, or all if id is missing.
 
kt name [id]: Like ls, but names only.
 
kt remove id: Remove the torrent given by id (but not the actual files).
 
kt clear: Remove all torrents.
 
kt files [id]: List information about the files of the selected torrent.
 
kt pri [id] [priority]: Give the selected torrent the given priority.
 
kt pri [id] [file index] [priority]: Set the priority of the given file.
 
kt pri [id] equal: Give all files of the torrent the same priority.
 
kt pri [id] first: Download the first files in the torrent first.
 
kt stu [n] set upload rate to n.
 
kt sdu [n] set download rate to n.
 
kt suspend suspend all torrents.
 
kt resume resume all torrents."
 
exit ;;
 
esac
 
pid=$(pidof ktorrent)
 
if [ ! $pid ]; then
 
case "$1" in
 
start)
 
ktorrent --display :0.0 ;;
 
*)
 
echo "ktorrent is not running!" ;;
 
esac
 
exit
 
fi
 
eval "export $(perl -pne 's/\0/\n/g' /proc/$(pidof ktorrent)/environ | fgrep -a DBUS_SESSION_BUS_ADDRESS)"
 
loc="org.ktorrent.ktorrent"
 
cmd="qdbus $loc"
 
case "$1" in
 
stu)
 
if [ "$2" ]; then
 
qdbus org.ktorrent.ktorrent /settings setMaxUploadRate $2
 
qdbus org.ktorrent.ktorrent /settings apply
 
else echo "upload rate missing!" ; fi ;;
 
std)
 
if [ "$2" ]; then
 
qdbus org.ktorrent.ktorrent /settings setMaxDownloadRate $2
 
qdbus org.ktorrent.ktorrent /settings apply
 
else echo "download rate missing!" ; fi ;;
 
suspend)
 
qdbus org.ktorrent.ktorrent /core org.ktorrent.core.setSuspended true ;;
 
resume)
 
qdbus org.ktorrent.ktorrent /core org.ktorrent.core.setSuspended false ;;
 
load)
 
res=$($cmd /core loadSilently "$2" 1) ;;
 
list|ls)
 
torrents=$($cmd /core torrents)
 
i=0
 
for torrent in $torrents; do
 
name=$($cmd /torrent/$torrent name)
 
printf "%d %s %s\n" $i $torrent "$name"
 
i=$(($i+1))
 
done ;;
 
info)
 
if [ "$2" ]; then
 
if (( ${#2} < 4 )); then
 
torrents=($($cmd /core torrents))
 
torrents=${torrents[$2]}
 
else torrents=$2; fi
 
else torrents=$($cmd /core torrents); fi
 
i=0
 
for torrent in $torrents; do
 
name=$($cmd /torrent/$torrent name)
 
size=$($cmd /torrent/$torrent totalSize)
 
dsize=$($cmd /torrent/$torrent bytesToDownload)
 
prog=$($cmd /torrent/$torrent bytesDownloaded)
 
speed=$($cmd /torrent/$torrent downloadSpeed)
 
seed=$($cmd /torrent/$torrent seedersConnected)
 
leech=$($cmd /torrent/$torrent leechersConnected)
 
priority=$($cmd /torrent/$torrent priority)
 
sl=$(printf "[%d|%d]" $seed $leech)
 
pri=$(printf "(%d)" $priority)
 
printf "%3.0lf%% of %11d %4.0lf kb/s %8s %4s %s\n" $((100*$prog/$dsize)) $dsize $(($speed/1000)) $sl $pri "$name"
 
i=$(($i+1))
 
done ;;
 
name|stop|start|remove|files)
 
if (( ${#2} < 4 )); then
 
torrents=($($cmd /core torrents))
 
torrent=${torrents[$2]}
 
else torrent=$2; fi
 
case "$1" in
 
name)
 
$cmd /torrent/$torrent name ;;
 
start)
 
if [ "$2" ]; then res=$($cmd /core start $torrent)
 
else res=$($cmd /core startAll); fi;;
 
stop)
 
if [ "$2" ]; then res=$($cmd /core stop $torrent)
 
else res=$($cmd /core stopAll); fi;;
 
remove)
 
# qdbus boolean bug workaround: use dbus-send instead
 
res=$(dbus-send --type=method_call --dest=$loc /core org.ktorrent.core.remove string:"$torrent" boolean:false) ;;
 
files)
 
n=$($cmd /torrent/$torrent numFiles)
 
for (( i=0; i < $n; i++ )); do
 
path=$($cmd /torrent/$torrent filePath $i)
 
pct=$($cmd /torrent/$torrent filePercentage $i)
 
size=$($cmd /torrent/$torrent fileSize $i)
 
priority=$($cmd /torrent/$torrent filePriority $i)
 
printf "%d %3.0lf%% of %11d [%d] %s\n" $i $pct $size $priority "$path"
 
done ;;
 
esac ;;
 
pri|priority|prioritize)
 
if [ $3 ]; then
 
if (( ${#2} < 4 )); then
 
torrents=($($cmd /core torrents))
 
torrent=${torrents[$2]}
 
else torrent=$2; fi
 
if [ ! $torrent ]; then exit; fi
 
n=$($cmd /torrent/$torrent numFiles)
 
if [ $4 ]; then
 
res=$($cmd /torrent/$torrent setFilePriority $3 $4)
 
else
 
case $3 in
 
equal|equalize)
 
for (( i=0; i < $n; i++ )); do
 
res=$($cmd /torrent/$torrent setFilePriority $i 40)
 
done ;;
 
inc|increasing)
 
for (( i=0; i < $n; i++ )); do
 
pri=$(printf "%2.0lf" $(((4*$i/$n+3)*10)))
 
res=$($cmd /torrent/$torrent setFilePriority $i $pri)
 
done ;;
 
dec|decreasing)
 
for (( i=0; i < $n; i++ )); do
 
pri=$(printf "%2.0lf" $(((4*($n-$i-1)/$n+3)*10)))
 
res=$($cmd /torrent/$torrent setFilePriority $i $pri)
 
done ;;
 
first)
 
m=$(($n < 3 ? $n : 3))
 
for (( i=0; i < $m; i++ )); do
 
res=$($cmd /torrent/$torrent setFilePriority $i $(((6-$i)*10)))
 
done
 
for (( i=3; i < $n; i++ )) do
 
res=$($cmd /torrent/$torrent setFilePriority $i 30)
 
done ;;
 
*)
 
res=$($cmd /torrent/$torrent setPriority $3) ;;
 
esac
 
fi
 
else echo Too few arguments!; fi ;;
 
clear)
 
torrents=$($cmd /core torrents)
 
for torrent in $torrents; do
 
res=$(dbus-send --type=method_call --dest=$loc /core org.ktorrent.core.remove string:"$torrent" boolean:false)
 
done ;;
 
quit)
 
res=$($cmd /MainApplication quit) ;;
 
*)
 
echo "Unrecognized command: '$1'" ;;
 
esac
 
</nowiki>}}
 

2023年2月21日 (火) 16:14時点における版

Ktorrent は KDE のための BitTorrent クライアントです。

インストール

ktorrent パッケージをインストールします。


Troubleshooting

Without geoip, KTorrent is unable to show any information about the seeders, leechers and the current trackers. Install it as a dependency. It is advised to enable DHT inside the Settings to avoid slow speeds and low amount of seeders.

Script to manage it in command line

Since KTorrent is a GUI only application, it fortunately has a DBUS interface, so you can use scripts to manage it in command line (i.e. from SSH). See the following linuxquestions forum answer for details.