|
|
@ -40,23 +40,9 @@ namespace NzbDrone.Core.Download.Clients.RTorrent
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_proxy.AddTorrentFromUrl(magnetLink, Settings);
|
|
|
|
_proxy.AddTorrentFromUrl(magnetLink, Settings);
|
|
|
|
|
|
|
|
|
|
|
|
// Wait until url has been resolved before returning
|
|
|
|
var tries = 10;
|
|
|
|
var TRIES = 5;
|
|
|
|
var retryDelay = 500;
|
|
|
|
var RETRY_DELAY = 500; //ms
|
|
|
|
if (WaitForTorrent(hash, tries, retryDelay))
|
|
|
|
var ready = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < TRIES; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
ready = _proxy.HasHashTorrent(hash, Settings);
|
|
|
|
|
|
|
|
if (ready)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Thread.Sleep(RETRY_DELAY);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (ready)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_proxy.SetTorrentLabel(hash, Settings.TvCategory, Settings);
|
|
|
|
_proxy.SetTorrentLabel(hash, Settings.TvCategory, Settings);
|
|
|
|
|
|
|
|
|
|
|
@ -69,8 +55,8 @@ namespace NzbDrone.Core.Download.Clients.RTorrent
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_logger.Debug("Magnet {0} could not be resolved in {1} tries at {2} ms intervals.", magnetLink, TRIES, RETRY_DELAY);
|
|
|
|
_logger.Debug("rTorrent could not resolve magnet {0}. Removing", magnetLink);
|
|
|
|
// Remove from client, since it is discarded
|
|
|
|
|
|
|
|
RemoveItem(hash, true);
|
|
|
|
RemoveItem(hash, true);
|
|
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
return null;
|
|
|
@ -80,14 +66,28 @@ namespace NzbDrone.Core.Download.Clients.RTorrent
|
|
|
|
protected override string AddFromTorrentFile(RemoteEpisode remoteEpisode, string hash, string filename, byte[] fileContent)
|
|
|
|
protected override string AddFromTorrentFile(RemoteEpisode remoteEpisode, string hash, string filename, byte[] fileContent)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_proxy.AddTorrentFromFile(filename, fileContent, Settings);
|
|
|
|
_proxy.AddTorrentFromFile(filename, fileContent, Settings);
|
|
|
|
_proxy.SetTorrentLabel(hash, Settings.TvCategory, Settings);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SetPriority(remoteEpisode, hash);
|
|
|
|
var tries = 2;
|
|
|
|
SetDownloadDirectory(hash);
|
|
|
|
var retryDelay = 100;
|
|
|
|
|
|
|
|
if (WaitForTorrent(hash, tries, retryDelay))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
_proxy.SetTorrentLabel(hash, Settings.TvCategory, Settings);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SetPriority(remoteEpisode, hash);
|
|
|
|
|
|
|
|
SetDownloadDirectory(hash);
|
|
|
|
|
|
|
|
|
|
|
|
_proxy.StartTorrent(hash, Settings);
|
|
|
|
_proxy.StartTorrent(hash, Settings);
|
|
|
|
|
|
|
|
|
|
|
|
return hash;
|
|
|
|
return hash;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
_logger.Debug("rTorrent could not add file");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RemoveItem(hash, true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override string Name
|
|
|
|
public override string Name
|
|
|
@ -251,5 +251,22 @@ namespace NzbDrone.Core.Download.Clients.RTorrent
|
|
|
|
_proxy.SetTorrentDownloadDirectory(hash, Settings.TvDirectory, Settings);
|
|
|
|
_proxy.SetTorrentDownloadDirectory(hash, Settings.TvDirectory, Settings);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private bool WaitForTorrent(string hash, int tries, int retryDelay)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
for (var i = 0; i < tries; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (_proxy.HasHashTorrent(hash, Settings))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Thread.Sleep(retryDelay);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_logger.Debug("Could not find hash {0} in {1} tries at {2} ms intervals.", hash, tries, retryDelay);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|