コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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));
        }