#include #include #include #include #include #include "invapi.hpp" using namespace std; using json = nlohmann::json; vector getInstances() { vector result; cpr::Response r = cpr::Get(cpr::Url{"https://api.invidious.io/instances.json"}, cpr::Parameters{{"sort_by", "health"}}); if (r.status_code > 299) { cerr << "invidious.io returned error code " << r.status_code << "!!" << endl; throw runtime_error("bad response"); } json j = json::parse(r.text); for ( json i: j ) { if ( i[1]["api"] != json::value_t::null && i[1]["api"]) { result.push_back( i[1]["uri"] ); } } return result; }