public void SetTorrentSeedingConfiguration(string hash, TorrentSeedConfiguration seedConfiguration, TransmissionSettings settings) { if (seedConfiguration == null) { return; } var arguments = new Dictionary <string, object>(); arguments.Add("ids", new[] { hash }); if (seedConfiguration.Ratio != null) { arguments.Add("seedRatioLimit", seedConfiguration.Ratio.Value); arguments.Add("seedRatioMode", 1); } if (seedConfiguration.SeedTime != null) { arguments.Add("seedIdleLimit", Convert.ToInt32(seedConfiguration.SeedTime.Value.TotalMinutes)); arguments.Add("seedIdleMode", 1); } ProcessRequest("torrent-set", arguments, settings); }
public TorrentSeedConfiguration GetSeedConfiguration(int indexerId) { if (indexerId == 0) { return(null); } var seedCriteria = _cache.Get(indexerId.ToString(), () => FetchSeedCriteria(indexerId)); if (seedCriteria == null) { return(null); } var seedConfig = new TorrentSeedConfiguration { Ratio = seedCriteria.SeedRatio }; var seedTime = seedCriteria.SeedTime; if (seedTime.HasValue) { seedConfig.SeedTime = TimeSpan.FromMinutes(seedTime.Value); } return(seedConfig); }
public void SetTorrentSeedingConfiguration(string hash, TorrentSeedConfiguration seedConfiguration, QBittorrentSettings settings) { var ratioLimit = seedConfiguration.Ratio.HasValue ? seedConfiguration.Ratio : -2; var seedingTimeLimit = seedConfiguration.SeedTime.HasValue ? (long)seedConfiguration.SeedTime.Value.TotalMinutes : -2; var request = BuildRequest(settings).Resource("/api/v2/torrents/setShareLimits") .Post() .AddFormParameter("hashes", hash) .AddFormParameter("ratioLimit", ratioLimit) .AddFormParameter("seedingTimeLimit", seedingTimeLimit); try { ProcessRequest(request, settings); } catch (DownloadClientException ex) { // setShareLimits was added in api v2.0.1 so catch it case of the unlikely event that someone has api v2.0 if (ex.InnerException is HttpException && (ex.InnerException as HttpException).Response.StatusCode == HttpStatusCode.NotFound) { return; } throw; } }
public void AddTorrentFromUrl(string torrentUrl, TorrentSeedConfiguration seedConfiguration, QBittorrentSettings settings) { var request = BuildRequest(settings).Resource("/command/download") .Post() .AddFormParameter("urls", torrentUrl); if (settings.Category.IsNotNullOrWhiteSpace()) { request.AddFormParameter("category", settings.Category); } // Note: ForceStart is handled by separate api call if ((QBittorrentState)settings.InitialState == QBittorrentState.Start) { request.AddFormParameter("paused", false); } else if ((QBittorrentState)settings.InitialState == QBittorrentState.Pause) { request.AddFormParameter("paused", true); } var result = ProcessRequest(request, settings); // Note: Older qbit versions returned nothing, so we can't do != "Ok." here. if (result == "Fails.") { throw new DownloadClientException("Download client failed to add torrent by url"); } }
public void AddTorrentFromFile(string fileName, byte[] fileContent, TorrentSeedConfiguration seedConfiguration, QBittorrentSettings settings) { var request = BuildRequest(settings).Resource("/api/v2/torrents/add") .Post() .AddFormUpload("torrents", fileName, fileContent); if (settings.MusicCategory.IsNotNullOrWhiteSpace()) { request.AddFormParameter("category", settings.MusicCategory); } // Note: ForceStart is handled by separate api call if ((QBittorrentState)settings.InitialState == QBittorrentState.Start) { request.AddFormParameter("paused", false); } else if ((QBittorrentState)settings.InitialState == QBittorrentState.Pause) { request.AddFormParameter("paused", true); } if (seedConfiguration != null) { AddTorrentSeedingFormParameters(request, seedConfiguration); } var result = ProcessRequest(request, settings); // Note: Current qbit versions return nothing, so we can't do != "Ok." here. if (result == "Fails.") { throw new DownloadClientException("Download client failed to add torrent"); } }
public void SetTorrentSeedingConfiguration(string hash, TorrentSeedConfiguration seedConfiguration, UTorrentSettings settings) { if (seedConfiguration == null) { return; } var requestBuilder = BuildRequest(settings) .AddQueryParam("action", "setprops") .AddQueryParam("hash", hash); requestBuilder.AddQueryParam("s", "seed_override") .AddQueryParam("v", 1); if (seedConfiguration.Ratio != null) { requestBuilder.AddQueryParam("s", "seed_ratio") .AddQueryParam("v", Convert.ToInt32(seedConfiguration.Ratio.Value * 1000)); } if (seedConfiguration.SeedTime != null) { requestBuilder.AddQueryParam("s", "seed_time") .AddQueryParam("v", Convert.ToInt32(seedConfiguration.SeedTime.Value.TotalSeconds)); } ProcessRequest(requestBuilder, settings); }
public void SetTorrentSeedingConfiguration(string hash, TorrentSeedConfiguration seedConfiguration, DelugeSettings settings) { if (seedConfiguration.Ratio != null) { var ratioArguments = new Dictionary <string, object>(); ratioArguments.Add("stop_ratio", seedConfiguration.Ratio.Value); ProcessRequest <object>(settings, "core.set_torrent_options", new string[] { hash }, ratioArguments); } }
private void AddTorrentSeedingFormParameters(HttpRequestBuilder request, TorrentSeedConfiguration seedConfiguration, bool always = false) { var ratioLimit = seedConfiguration.Ratio.HasValue ? seedConfiguration.Ratio : -2; var seedingTimeLimit = seedConfiguration.SeedTime.HasValue ? (long)seedConfiguration.SeedTime.Value.TotalMinutes : -2; if (ratioLimit != -2 || always) { request.AddFormParameter("ratioLimit", ratioLimit); } if (seedingTimeLimit != -2 || always) { request.AddFormParameter("seedingTimeLimit", seedingTimeLimit); } }
public void SetTorrentSeedingConfiguration(string hash, TorrentSeedConfiguration seedConfiguration, TransmissionSettings settings) { var arguments = new Dictionary<string, object>(); arguments.Add("ids", new string[] { hash }); if (seedConfiguration.Ratio != null) { arguments.Add("seedRatioLimit", seedConfiguration.Ratio.Value); arguments.Add("seedRatioMode", 1); } if (seedConfiguration.SeedTime != null) { arguments.Add("seedIdleLimit", Convert.ToInt32(seedConfiguration.SeedTime.Value.TotalMinutes)); arguments.Add("seedIdleMode", 1); } ProcessRequest("torrent-set", arguments, settings); }
public void AddTorrentFromFile(string fileName, byte[] fileContent, TorrentSeedConfiguration seedConfiguration, QBittorrentSettings settings) { var request = BuildRequest(settings).Resource("/api/v2/torrents/add") .Post() .AddFormUpload("torrents", fileName, fileContent); AddTorrentDownloadFormParameters(request, settings); if (seedConfiguration != null) { AddTorrentSeedingFormParameters(request, seedConfiguration); } var result = ProcessRequest(request, settings); // Note: Current qbit versions return nothing, so we can't do != "Ok." here. if (result == "Fails.") { throw new DownloadClientException("Download client failed to add torrent"); } }
public void AddTorrentFromUrl(string torrentUrl, TorrentSeedConfiguration seedConfiguration, QBittorrentSettings settings) { var request = BuildRequest(settings).Resource("/api/v2/torrents/add") .Post() .AddFormParameter("urls", torrentUrl); AddTorrentDownloadFormParameters(request, settings); if (seedConfiguration != null) { AddTorrentSeedingFormParameters(request, seedConfiguration); } var result = ProcessRequest(request, settings); // Note: Older qbit versions returned nothing, so we can't do != "Ok." here. if (result == "Fails.") { throw new DownloadClientException("Download client failed to add torrent by url"); } }
public TorrentSeedConfiguration GetSeedConfiguration(RemoteMovie remoteMovie) { if (remoteMovie.Release.DownloadProtocol != DownloadProtocol.Torrent) { return(null); } if (remoteMovie.Release.IndexerId == 0) { return(null); } try { var indexer = _indexerFactory.Get(remoteMovie.Release.IndexerId); var torrentIndexerSettings = indexer.Settings as ITorrentIndexerSettings; if (torrentIndexerSettings != null && torrentIndexerSettings.SeedCriteria != null) { var seedConfig = new TorrentSeedConfiguration { Ratio = torrentIndexerSettings.SeedCriteria.SeedRatio }; var seedTime = torrentIndexerSettings.SeedCriteria.SeedTime; if (seedTime.HasValue) { seedConfig.SeedTime = TimeSpan.FromMinutes(seedTime.Value); } return(seedConfig); } } catch (ModelNotFoundException) { return(null); } return(null); }
public void SetTorrentSeedingConfiguration(string hash, TorrentSeedConfiguration seedConfiguration, QBittorrentSettings settings) { var request = BuildRequest(settings).Resource("/api/v2/torrents/setShareLimits") .Post() .AddFormParameter("hashes", hash); AddTorrentSeedingFormParameters(request, seedConfiguration, true); try { ProcessRequest(request, settings); } catch (DownloadClientException ex) { // setShareLimits was added in api v2.0.1 so catch it case of the unlikely event that someone has api v2.0 if (ex.InnerException is HttpException && (ex.InnerException as HttpException).Response.StatusCode == HttpStatusCode.NotFound) { return; } throw; } }
public void SetTorrentSeedingConfiguration(string hash, TorrentSeedConfiguration seedConfiguration, UTorrentSettings settings) { var arguments = new List <KeyValuePair <string, object> >(); arguments.Add("action", "setprops"); arguments.Add("hash", hash); arguments.Add("s", "seed_override"); arguments.Add("v", 1); if (seedConfiguration.Ratio != null) { arguments.Add("s", "seed_ratio"); arguments.Add("v", Convert.ToInt32(seedConfiguration.Ratio.Value * 1000)); } if (seedConfiguration.SeedTime != null) { arguments.Add("s", "seed_time"); arguments.Add("v", Convert.ToInt32(seedConfiguration.SeedTime.Value.TotalSeconds)); } ProcessRequest(arguments, settings); }
public void SetTorrentSeedingConfiguration(string hash, TorrentSeedConfiguration seedConfiguration, UTorrentSettings settings) { var requestBuilder = BuildRequest(settings) .AddQueryParam("action", "setprops") .AddQueryParam("hash", hash); requestBuilder.AddQueryParam("s", "seed_override") .AddQueryParam("v", 1); if (seedConfiguration.Ratio != null) { requestBuilder.AddQueryParam("s", "seed_ratio") .AddQueryParam("v", Convert.ToInt32(seedConfiguration.Ratio.Value * 1000)); } if (seedConfiguration.SeedTime != null) { requestBuilder.AddQueryParam("s", "seed_time") .AddQueryParam("v", Convert.ToInt32(seedConfiguration.SeedTime.Value.TotalSeconds)); } ProcessRequest(requestBuilder, settings); }
public void SetTorrentSeedingConfiguration(string hash, TorrentSeedConfiguration seedConfiguration, QBittorrentSettings settings) { // Not supported on api v1 }
public void SetTorrentSeedingConfiguration(String hash, TorrentSeedConfiguration seedConfiguration, UTorrentSettings settings) { var arguments = new List<KeyValuePair<String, Object>>(); arguments.Add("action", "setprops"); arguments.Add("hash", hash); arguments.Add("s", "seed_override"); arguments.Add("v", 1); if (seedConfiguration.Ratio != null) { arguments.Add("s","seed_ratio"); arguments.Add("v", Convert.ToInt32(seedConfiguration.Ratio.Value * 1000)); } if (seedConfiguration.SeedTime != null) { arguments.Add("s", "seed_time"); arguments.Add("v", Convert.ToInt32(seedConfiguration.SeedTime.Value.TotalSeconds)); } ProcessRequest(arguments, settings); }