diff --git a/server/services/qBittorrent/clientGatewayService.ts b/server/services/qBittorrent/clientGatewayService.ts index 1505045d..4e0c7730 100644 --- a/server/services/qBittorrent/clientGatewayService.ts +++ b/server/services/qBittorrent/clientGatewayService.ts @@ -179,9 +179,11 @@ class QBittorrentClientGatewayService extends ClientGatewayService { } async setTorrentsTags({hashes, tags}: SetTorrentsTagsOptions): Promise { - return this.clientRequestManager - .torrentsAddTags(hashes, tags) - .then(this.processClientRequestSuccess, this.processClientRequestError); + return this.clientRequestManager.torrentsRemoveTags(hashes).then(() => { + this.clientRequestManager + .torrentsAddTags(hashes, tags) + .then(this.processClientRequestSuccess, this.processClientRequestError); + }); } async setTorrentsTrackers({hashes, trackers}: SetTorrentsTrackersOptions): Promise { diff --git a/server/services/qBittorrent/clientRequestManager.ts b/server/services/qBittorrent/clientRequestManager.ts index f86dbb71..826ce3db 100644 --- a/server/services/qBittorrent/clientRequestManager.ts +++ b/server/services/qBittorrent/clientRequestManager.ts @@ -253,6 +253,20 @@ class ClientRequestManager { }); } + async torrentsRemoveTags(hashes: Array, tags?: Array): Promise { + return axios + .get(`${this.apiBase}/torrents/removeTags`, { + params: { + hashes: hashes.join('|'), + tags: tags?.join(','), + }, + headers: {Cookie: await this.authCookie}, + }) + .then(() => { + // returns nothing + }); + } + async torrentsAddTrackers(hash: string, urls: Array): Promise { return axios .get(`${this.apiBase}/torrents/addTrackers?hash=${hash}&urls=${urls.join('|')}`, {