public IList <Subtitle> SearchSubtitlesFromQuery(string languages, string query) { if (string.IsNullOrEmpty(query)) { throw new ArgumentNullException("query"); } var request = new SearchSubtitlesRequest { sublanguageid = languages, query = query }; return(SearchSubtitlesInternal(request)); }
public IList <Subtitle> SearchSubtitlesFromImdb(string languages, string imdbId) { if (string.IsNullOrEmpty(imdbId)) { throw new ArgumentNullException("imdbId"); } var request = new SearchSubtitlesRequest { sublanguageid = languages, imdbid = imdbId }; return(SearchSubtitlesInternal(request)); }
public Task <IList <Subtitle> > SearchSubtitlesFromHash(string languages, string fileHash, long moviebytesize) { var request = new SearchSubtitlesRequest { Sublanguageid = languages }; request.Moviehash = fileHash; request.Moviebytesize = moviebytesize; request.Imdbid = string.Empty; request.Query = string.Empty; return(SearchSubtitlesInternal(request)); }
public Task <IList <Subtitle> > SearchSubtitlesFromQuery(string languages, string query, int?season = null, int?episode = null) { if (string.IsNullOrEmpty(query)) { throw new ArgumentNullException("query"); } var request = new SearchSubtitlesRequest { Sublanguageid = languages, Query = query, Season = season, Episode = episode }; return(SearchSubtitlesInternal(request)); }
private IList <Subtitle> SearchSubtitlesInternal(SearchSubtitlesRequest request) { var response = proxy.SearchSubtitles(token, new SearchSubtitlesRequest[] { request }); VerifyResponseCode(response); var subtitles = new List <Subtitle>(); var subtitlesInfo = response.data as object[]; if (null != subtitlesInfo) { foreach (var infoObject in subtitlesInfo) { var subInfo = SimpleObjectMapper.MapToObject <SearchSubtitlesInfo>((XmlRpcStruct)infoObject); subtitles.Add(BuildSubtitleObject(subInfo)); } } return(subtitles); }
private async Task <IList <Subtitle> > SearchSubtitlesInternal(SearchSubtitlesRequest request) { var keys = new List <string>(); if (request.Episode != null) { keys.Add($"episode-{request.Episode}"); } if (request.Imdbid != null) { keys.Add($"imdbid-{request.Imdbid}"); } if (request.Moviebytesize != null) { keys.Add($"moviebytesize-{request.Moviebytesize}"); } if (!string.IsNullOrEmpty(request.Moviehash)) { keys.Add($"moviehash-{request.Moviehash}"); } if (!string.IsNullOrEmpty(request.Query)) { keys.Add($"query-{WebUtility.UrlEncode(request.Query)}"); } if (request.Season != null) { keys.Add($"season-{request.Season}"); } if (!string.IsNullOrEmpty(request.Sublanguageid)) { keys.Add($"sublanguageid-{request.Sublanguageid}"); } var response = await Get <List <Subtitle> >(keys) .ConfigureAwait(false); return(response); }
public Task <IList <Subtitle> > SearchSubtitlesFromFile(string languages, string filename) { if (string.IsNullOrEmpty(filename)) { throw new ArgumentNullException("filename"); } FileInfo file = new FileInfo(filename); if (!file.Exists) { throw new ArgumentException("File doesn't exist", "filename"); } var request = new SearchSubtitlesRequest { Sublanguageid = languages }; request.Moviehash = HashHelper.ToHexadecimal(HashHelper.ComputeMovieHash(filename)); request.Moviebytesize = file.Length; request.Imdbid = string.Empty; request.Query = string.Empty; return(SearchSubtitlesInternal(request)); }