Monday, October 24, 2022

[SOLVED] Filtering array using curl (qBittorrent Web API)

Issue

Hoping someone can help me. I'm trying to understand the qBittorrent Web API. At the moment I'm listing all the paused torrents with:

curl -i http://localhost:8080/api/v2/torrents/info?category=test

The problem is that lists the whole JSON array - my question is can I just display the "name" or "hash" fields? This is all using curl through cmd, but I've tried this in Git Bash & Powershell:

[{"eta":8640000,"f_l_piece_prio":false,"force_start":false,"hash":"8419d48d86a14335c83fdf4930843438a2f75a6b","last_activity":1664863523,"magnet_uri":"","max_seeding_time":0,"**name**":"TestTorrentName","num_complete":12,"num_incomplete":1,"num_leechs":0,"num_seeds":0,"priority":0,"progress":1,"ratio":0,"ratio_limit":-2,"save_path":"F:\\Completed\\test\\","seeding_time":0,"seeding_time_limit":-2,"seen_complete":1664863523,"seq_dl":false,"size":217388295,"state":"pausedUP","super_seeding":false,"tags":"","time_active":569,"total_size":217388295,"tracker":"udp://open.stealth.si:80/announce","trackers_count":10,"up_limit":-1,"uploaded":0,"uploaded_session":0,"upspeed":0}]

I've tried the following that should work according to https://jqplay.org/ - see screenshot

curl -i http://localhost:8080/api/v2/torrents/info?category=test | jq --raw-output '.[] | .name'

But unfortunately I'm getting the following error:

curl -i http://localhost:8080/api/v2/torrents/info?category=test | jq --raw-output '.[] | .name'
  % Total    % Received % Xferd  Average Speed   Time    '.name'' is not recognized as an internal or external command,
operable program or batch file.
Ti

Solution

curl -i http://localhost:8080/api/v2/torrents/info?category=test | jq --raw-output '.[] | .name'

The -i let curl give some header info, that is parsed to jq, but jq can only parse JSON end therefore fails.

Remove the -i and optionally replace it with -s to remove the stats:

curl -s http://localhost:8080/api/v2/torrents/info?category=test | jq --raw-output '.[] | .name'


Answered By - 0stone0
Answer Checked By - Pedro (WPSolving Volunteer)