Example #1
0
        private string GetLanguageCodes(SubtitleSearchQuery query)
        {
            string str1 = "";

            foreach (string str2 in query.LanguageCodes)
            {
                str1 = str1 + str2 + ",";
            }
            if (query.LanguageCodes.Length > 0)
            {
                str1 = str1.Remove(str1.Length - 1, 1);
            }
            return(str1);
        }
        /// <summary>
        /// Search subtitles in page
        /// </summary>
        /// <param name="page">html page</param>
        /// <param name="query">the search query</param>
        /// <returns>List of subtitles</returns>
        private static List <Subtitle> Search(HtmlDocument page, SubtitleSearchQuery query)
        {
            var subtitles = new List <Subtitle>();

            var subtitlesGroups = GetSubtitlesGroups(page);

            var parsedSubtitles = ParseSubtitlesGroups(subtitlesGroups);

            foreach (var language in parsedSubtitles)
            {
                foreach (var group in language.Value)
                {
                    foreach (var quality in group.Value)
                    {
                        foreach (var index in quality.Value)
                        {
                            // parse each subtitle here
                            // mandatory fields: id, subtitle_version,
                            var id = "";
                            var subtitleVersion = "";
                            var key             = "";
                            foreach (var param in index.Value)
                            {
                                switch (param.Key)
                                {
                                case "\"id\"":
                                {
                                    id = param.Value;
                                    break;
                                }

                                case "\"subtitle_version\"":
                                {
                                    subtitleVersion = param.Value;
                                    break;
                                }

                                case "\"key\"":
                                {
                                    key = param.Value;
                                    break;
                                }

                                default:
                                {
                                    break;
                                }
                                }
                            }

                            // Add subtitles
                            if (id != "" && subtitleVersion != "" && key != "")
                            {
                                var    version  = subtitleVersion.Replace("\"", "");
                                var    cleanKey = key.Replace("\"", "");
                                string languageName;
                                LanguageShortToLongCodeDictionary.TryGetValue(language.Key.Replace("\"", ""), out languageName);
                                var languageCode = Languages.GetLanguageCode(languageName);

                                // Check language
                                if (query.HasLanguageCode(languageCode))
                                {
                                    subtitles.Add(new Subtitle(id + " " + cleanKey, version, version, languageCode));
                                }
                            }
                        }
                    }
                }
            }

            return(subtitles);
        }
Example #3
0
        private List <Subtitle> Search(string baseUrl, SubtitleSearchQuery query)
        {
            Dictionary <string, string> dictionary = this.ParseLanguageOptions();
            List <Subtitle>             list       = new List <Subtitle>();

            foreach (string current in dictionary.Keys)
            {
                if (query.HasLanguageCode(Languages.FindLanguageCode(current)))
                {
                    string         str = dictionary[current];
                    string         requestUriString = baseUrl + "&sJ=" + str;
                    HttpWebRequest httpWebRequest   = (HttpWebRequest)WebRequest.Create(requestUriString);
                    if (this.SearchTimeout > 0)
                    {
                        httpWebRequest.Timeout = this.SearchTimeout * 1000;
                    }
                    HttpWebResponse   httpWebResponse   = (HttpWebResponse)httpWebRequest.GetResponse();
                    XmlReaderSettings xmlReaderSettings = new XmlReaderSettings();
                    xmlReaderSettings.ProhibitDtd    = false;
                    xmlReaderSettings.ValidationType = ValidationType.None;
                    XmlReader reader = XmlReader.Create(httpWebResponse.GetResponseStream(), xmlReaderSettings);
                    this.xmlDoc = new XmlDocument();
                    this.xmlDoc.Load(reader);
                    XmlNodeList elementsByTagName = this.xmlDoc.GetElementsByTagName("subtitle");
                    foreach (XmlNode xmlNode in elementsByTagName)
                    {
                        string id   = null;
                        string text = null;
                        for (int i = 0; i < xmlNode.ChildNodes.Count; i++)
                        {
                            if (xmlNode.ChildNodes[i].Name == "url")
                            {
                                id = xmlNode.ChildNodes[i].InnerText;
                            }
                            else
                            {
                                if (xmlNode.ChildNodes[i].Name == "release")
                                {
                                    text = xmlNode.ChildNodes[i].InnerText.TrimEnd(new char[0]).TrimStart(new char[0]);
                                }
                            }
                        }
                        if (!string.IsNullOrEmpty(text))
                        {
                            //if (text.Contains(" "))
                            //{
                            //    string[] array = text.Split(new char[]
                            //    {
                            //        ' '
                            //    });
                            //    string[] array2 = array;
                            //    for (int j = 0; j < array2.Length; j++)
                            //    {
                            //        string text2 = array2[j];
                            //        Subtitle item = new Subtitle(id, text2, text2, Languages.FindLanguageCode(current));
                            //        list.Add(item);
                            //    }
                            //}
                            //else
                            //{
                            Subtitle item2 = new Subtitle(id, text, text, Languages.FindLanguageCode(current));
                            list.Add(item2);
                            //}
                        }
                    }
                }
            }
            return(list);
        }