/// <summary> /// Обрабатывает json ответ с запроса поиска /// </summary> /// <param name="Html"></param> /// <param name="searchNewElemEvent"></param> private void HtmlGetResulSearch(string Html, bool GetMoreInfo, SearchNewElemEvent searchNewElemEvent = null) { List <InfoFideoOrSerial> dataFilms = new List <InfoFideoOrSerial>(0); string Page = ParsJson(Html, "current_page"); uint PageUint = 0; if (Page != null) { PageUint = Convert.ToUInt32(Page) - 1; } // Очистка начала Html = Html.Remove(0, Html.IndexOf("\"items\"")); Html = Html.Remove(0, Html.IndexOf('[') + 1); // Очистка конца Html = Html.Substring(0, Html.IndexOf(']')); // Разбиваем данные на части string[] Elements = Html.Split('}'); Html = null; foreach (var elem in Elements) { string elemN = elem + "}"; if (ParsJson(elemN, "name_rus") != null) { List <InfoFideoOrSerial.DataVideo[]> Series = new List <InfoFideoOrSerial.DataVideo[]>(0); string id = ParsJson(elemN, "mobi_link_id"); if (id == null) { id = GetID(ParsJson(elemN, "name_id")); } dataFilms.Add( new InfoFideoOrSerial(new InfoFideoOrSerial.DataVideo[][] { new InfoFideoOrSerial.DataVideo[] { new InfoFideoOrSerial.DataVideo(id) } }, ParsJson(elemN, "year"), Convert.ToDouble(ParsJson(elemN, "rating_kinopoisk")?.Replace('.', ',')), ParsJson(elemN, "name_rus"), Convert.ToBoolean(ParsJson(elemN, "serial")), ParsJson(elemN, "name_id"), ParsJson(elemN, "cover")?.Replace("\\/", "/") )); if (GetMoreInfo) { dataFilms[dataFilms.Count - 1].GetMoreInfo(); } if (searchNewElemEvent != null) { try { searchNewElemEvent.Invoke(dataFilms[dataFilms.Count - 1]); } catch { } } } } FilmsAndSerials[PageUint] = dataFilms.ToArray(); }
/// <summary> /// Подгрузить страницу /// </summary> /// <param name="Pages">Номер страницы (отсчёт с 0)</param> /// <param name="searchNewElemEvent">Вызывается при каждом новом найденном фильме или сериале</param> public void LoadPages(uint Pages, bool GetMoreInfo = false, SearchNewElemEvent searchNewElemEvent = null) { if (Pages > CountPages) { Pages = CountPages; } if (FilmsAndSerials[Pages] != null) { return; } string JsonReqest = webClientSearch.DownloadString(SearchUrl + "?page=" + (Pages + 1)); HtmlGetResulSearch(JsonReqest, GetMoreInfo, searchNewElemEvent); }
public GetFilmsAndSerialZona(Filters Search, bool GetMoreInfo = false, bool AllPages = false, SearchNewElemEvent searchNewElemEvent = null) { Start(); // Производим запрос на сервер string JsonReqest; SearchUrl = "https://w84.zona.plus/" + (Search.IsSerial ? "tvseries" : "movies") + (Search.GenreSelected != "0" ? "/" + Search.GenreSelected : null) + (Search.YearSelected != "0" ? "/" + Search.YearSelected : null) + (Search.CountrySelected != "0" ? "/" + Search.CountrySelected : null) + (Search.RatingSelected != "0" ? "/" + Search.RatingSelected : null) + (Search.SortSelected != "0" ? "/" + Search.SortSelected : null) ; JsonReqest = webClientSearch.DownloadString(SearchUrl); GetInfoHtml(JsonReqest); HtmlGetResulSearch(JsonReqest, GetMoreInfo, searchNewElemEvent); if (AllPages) { for (uint i = 1; i < CountPages; i++) { LoadPages(i, GetMoreInfo, searchNewElemEvent); } } }
/// <summary> /// Поиск фильма или сериала по названию /// </summary> /// <param name="Search"></param> /// <param name="GetMoreInfo"></param> /// <param name="AllPages"></param> /// <param name="searchNewElemEvent"></param> public GetFilmsAndSerialZona(string Search, bool GetMoreInfo = false, bool AllPages = false, SearchNewElemEvent searchNewElemEvent = null) { Start(); // Производим запрос на сервер string JsonReqest; SearchUrl = "https://w84.zona.plus/search/" + Search; JsonReqest = webClientSearch.DownloadString(SearchUrl); GetInfoHtml(JsonReqest); HtmlGetResulSearch(JsonReqest, GetMoreInfo, searchNewElemEvent); if (AllPages) { for (uint i = 1; i < CountPages; i++) { LoadPages(i, GetMoreInfo, searchNewElemEvent); } } }