Home > OS >  Filtering array using curl (qBittorrent Web API)
Filtering array using curl (qBittorrent Web API)

Time:10-04

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

CodePudding user response:

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'
  • Related