Fix for the removal of the instant availability api for real-debrid

GetAvailableFiles in ReaDebridTorrentClient now returns an empty list.
This commit is contained in:
GabbeHags 2024-11-23 13:02:36 +01:00
parent f33380e77b
commit e225ae43e4

View file

@ -57,7 +57,7 @@ public class RealDebridTorrentClient(ILogger<RealDebridTorrentClient> logger, IH
{ {
logger.LogError(ex, $"The connection to RealDebrid has timed out: {ex.Message}"); logger.LogError(ex, $"The connection to RealDebrid has timed out: {ex.Message}");
throw; throw;
} }
} }
@ -115,7 +115,7 @@ public class RealDebridTorrentClient(ILogger<RealDebridTorrentClient> logger, IH
public async Task<TorrentClientUser> GetUser() public async Task<TorrentClientUser> GetUser()
{ {
var user = await GetClient().User.GetAsync(); var user = await GetClient().User.GetAsync();
return new() return new()
{ {
Username = user.Username, Username = user.Username,
@ -139,19 +139,9 @@ public class RealDebridTorrentClient(ILogger<RealDebridTorrentClient> logger, IH
public async Task<IList<TorrentClientAvailableFile>> GetAvailableFiles(String hash) public async Task<IList<TorrentClientAvailableFile>> GetAvailableFiles(String hash)
{ {
var result = await GetClient().Torrents.GetAvailableFiles(hash); // Real-Debrid has removed there instant availability api, so we are now forced
// to return an empty list
var files = result.SelectMany(m => m.Value).SelectMany(m => m.Value).SelectMany(m => m.Values); return await Task.Run(() => new List<TorrentClientAvailableFile>());
var groups = files.Where(m => m.Filename != null).GroupBy(m => $"{m.Filename}-{m.Filesize}");
var torrentClientAvailableFiles = groups.Select(m => new TorrentClientAvailableFile
{
Filename = m.First().Filename!,
Filesize = m.First().Filesize
}).ToList();
return torrentClientAvailableFiles;
} }
public async Task SelectFiles(Data.Models.Data.Torrent torrent) public async Task SelectFiles(Data.Models.Data.Torrent torrent)
@ -216,7 +206,7 @@ public class RealDebridTorrentClient(ILogger<RealDebridTorrentClient> logger, IH
files = newFiles; files = newFiles;
Log($"Found {files.Count} files that match the regex", torrent); Log($"Found {files.Count} files that match the regex", torrent);
} }
else if (!String.IsNullOrWhiteSpace(torrent.ExcludeRegex)) else if (!String.IsNullOrWhiteSpace(torrent.ExcludeRegex))
{ {
Log($"Using regular expression {torrent.IncludeRegex} to ignore files matching this regex", torrent); Log($"Using regular expression {torrent.IncludeRegex} to ignore files matching this regex", torrent);
@ -380,7 +370,7 @@ public class RealDebridTorrentClient(ILogger<RealDebridTorrentClient> logger, IH
} }
Log($"Torrent has {torrent.Files.Count(m => m.Selected)} selected files out of {torrent.Files.Count} files, found {downloadLinks.Count} links, torrent ended: {torrent.RdEnded}", torrent); Log($"Torrent has {torrent.Files.Count(m => m.Selected)} selected files out of {torrent.Files.Count} files, found {downloadLinks.Count} links, torrent ended: {torrent.RdEnded}", torrent);
// Check if all the links are set that have been selected // Check if all the links are set that have been selected
if (torrent.Files.Count(m => m.Selected) == downloadLinks.Count) if (torrent.Files.Count(m => m.Selected) == downloadLinks.Count)
{ {
@ -413,7 +403,7 @@ public class RealDebridTorrentClient(ILogger<RealDebridTorrentClient> logger, IH
} }
Log($"Did not find any suiteable download links", torrent); Log($"Did not find any suiteable download links", torrent);
return null; return null;
} }