web-dev-qa-db-ja.com

qBittorrentがダウンロードされているかどうかを検出するにはどうすればよいですか?

クエリするバッチ/スクリプトファイルを作成するにはどうすればよいですか qBittorrent 何かをダウンロードしているかどうかを確認するには?

結果に応じて、さらにコマンドを実行したいと思います。

2
Richard

以下は、 qBittorrent v4.1(またはそれ以降)API を使用して、何かがダウンロードされているかどうかに応じてメッセージを返す2つのコード(1つはWindows用、もう1つはLinux用)です。

ウィンドウズ

@echo off

rem Remove existing cookie jar
del /F %temp%\cookies.txt 2>nul

rem Login to qBittorrent
curl -s -b %temp%\cookies.txt -c %temp%\cookies.txt --header "Referer: http://localhost:8080" --data "username=admin&password=secret" http://localhost:8080/api/v2/auth/login >nul

rem Get list of downloading torrents
curl -s -b %temp%\cookies.txt -c %temp%\cookies.txt --header "Referer: http://localhost:8080" "http://localhost:8080/api/v2/torrents/info" | jq | findstr """state""" | findstr /R "stalledDL downloading metaDL" >nul

if errorlevel 0 (
    echo Something downloading
) else (
    echo Nothing downloading
)

rem Remove used cookie jar
del /F %temp%\cookies.txt 2>nul

Linux

#!/bin/bash

# Remove existing cookie jar
rm -f ~/.cookies.txt

# Login to qbittorrent
curl -s -b ~/.cookies.txt -c ~/.cookies.txt --header "Referer: http://localhost:8080" --data "username=admin&password=secret" http://localhost:8080/api/v2/auth/login >/dev/null 2>&1

# Get list of downloading torrents
if [[ $(curl -s -b ~/.cookies.txt -c ~/.cookies.txt --header "Referer: http://localhost:8080" "http://localhost:8080/api/v2/torrents/info" | jq . | grep "state" | egrep "(stalledDL|downloading|metaDL)") ]]; then
        echo "Something downloading"
else
        echo "Nothing downloading"
fi

# Remove used cookie jar
rm -f ~/.cookies.txt

両方のバージョンについて注意すべきいくつかのポイント

  • QBittorrent内でWebUIを有効にし、ユーザー名とパスワードを設定する必要があります。
  • コードのユーザー名はadmin、パスワードはsecretです。これらは、変更する必要があります。
  • コードはlocalhost:8080に接続します。これのすべてのインスタンスを、正しいマシン名/ IPおよびポート番号に変更する必要があります
  • SIDを保持するためのCookiejar(cookies.txtと呼ばれる)を作成します。これは、ログインが成功した後に提供され、さらにコマンドを実行するときに送信する必要があります。それが終了すると、クッキージャーは削除されます。
  • エラー処理はありません。何かが失敗した場合、おそらく(そしておそらく間違って)「何かをダウンロードしています」と報告します。
  • このコードは、stalledDLdownloading、およびmetaDLの状態がダウンロードされていると見なします。これは、文書化されているさまざまな状態を確認することで変更できます ここ
  • jqは、qBittorrent APIからJSON出力を取得し、読み取り/解析しやすい方法でフォーマットします。

Windows版特有のポイント

  • Windows 10を実行していない場合は、インストールする必要があります curl
  • ダウンロードする必要があります jq 、名前をjq.exeに変更し、このスクリプトと同じフォルダーに配置します-個人的にはC:\Windows\System32に配置するので、どの場所からでも機能しますフォルダ
  • qBittorrentからの出力は非常に長い行で構成されている可能性があるため、jqは不可欠です。これは、findstrでは処理できません(エラーをスローします)。

Linuxバージョンに固有のいくつかのポイント

  • コードはcurlを使用しました。これは通常、デフォルトで使用できます。そうでない場合は、DebianでSudo apt-get install curlを使用できます
  • これを機能させるには、jqをインストールする必要があり、ほとんどのリポジトリで利用できます。 DebianではこれはSudo apt-get install jqです
  • 傾向があると感じた場合は、jqは技術的に必要ではなく、egrepを変更して状態と値の両方をフィルタリングできます。
2
Richard