KanoopTorrentQt 0.1.0
Qt6 wrapper library for libtorrent-rasterbar
Loading...
Searching...
No Matches
torrentsearcher.h
1#ifndef TORRENTSEARCHER_H
2#define TORRENTSEARCHER_H
3
4#include <Kanoop/torrent/kanooptorrent.h>
5#include <Kanoop/torrent/torrentsearchresult.h>
6#include <Kanoop/utility/loggingbaseclass.h>
7#include <QNetworkProxy>
8#include <QObject>
9
10/**
11 * @brief Asynchronous torrent search against a public API.
12 *
13 * TorrentSearcher queries an HTTP torrent index (default: apibay.org)
14 * and returns results as a list of TorrentSearchResult objects. Results
15 * are filtered to the Audio category.
16 *
17 * @code
18 * auto* searcher = new TorrentSearcher(this);
19 * connect(searcher, &TorrentSearcher::searchComplete,
20 * this, [](const QList<TorrentSearchResult>& results) {
21 * for (const auto& r : results)
22 * qDebug() << r.name() << r.seeders();
23 * });
24 * searcher->search("pink floyd");
25 * @endcode
26 */
27class LIBKANOOPTORRENT_EXPORT TorrentSearcher : public QObject,
28 public LoggingBaseClass
29{
30 Q_OBJECT
31public:
32 /**
33 * @brief Construct a TorrentSearcher.
34 * @param parent Optional QObject parent.
35 */
36 explicit TorrentSearcher(QObject* parent = nullptr);
37
38 /**
39 * @brief Start an asynchronous search.
40 * @param query The search query string.
41 *
42 * Results arrive via searchComplete(); errors via searchFailed().
43 */
44 void search(const QString& query);
45
46 /** @brief Base URL for the search API (default: @c "https://apibay.org"). */
47 QString apiBaseUrl() const { return _apiBaseUrl; }
48 /** @brief Set a custom search API base URL. */
49 void setApiBaseUrl(const QString& value) { _apiBaseUrl = value; }
50
51 /** @brief SOCKS5 proxy used for search HTTP requests. */
52 QNetworkProxy networkProxy() const { return _networkProxy; }
53 /** @brief Set a SOCKS5 proxy for search requests. */
54 void setNetworkProxy(const QNetworkProxy& value) { _networkProxy = value; }
55
56signals:
57 /** @brief Emitted when a search completes successfully. May be empty if no results were found. */
58 void searchComplete(const QList<TorrentSearchResult>& results);
59 /** @brief Emitted when a search fails (network error, parse error, etc.). */
60 void searchFailed(const QString& errorMessage);
61
62private slots:
63 void onHttpFinished();
64
65private:
66 QNetworkProxy _networkProxy;
67 QString _apiBaseUrl;
68};
69
70#endif // TORRENTSEARCHER_H
Asynchronous torrent search against a public API.
TorrentSearcher(QObject *parent=nullptr)
Construct a TorrentSearcher.
void search(const QString &query)
Start an asynchronous search.
void searchFailed(const QString &errorMessage)
Emitted when a search fails (network error, parse error, etc.).
void setNetworkProxy(const QNetworkProxy &value)
Set a SOCKS5 proxy for search requests.
void setApiBaseUrl(const QString &value)
Set a custom search API base URL.
QNetworkProxy networkProxy() const
SOCKS5 proxy used for search HTTP requests.
void searchComplete(const QList< TorrentSearchResult > &results)
Emitted when a search completes successfully.
QString apiBaseUrl() const
Base URL for the search API (default: "https://apibay.org").