public string GetAuthorPage(string url) { var _url = url; _url = (_url.EndsWith("/")) ? _url : _url + "/"; return(WEB.DownloadPageSilent(_url)); }
public string GetAuthorPage(string url) { var _url = url; if (!_url.EndsWith("indexdate.shtml") && !_url.EndsWith("indextitle.shtml")) { _url = (_url.EndsWith("/")) ? url + "indextitle.shtml" : url + "/indextitle.shtml"; } return(WEB.DownloadPageSilent(_url)); }
///// <summary> ///// Обновляет информацию о произведениях автора. ///// Адрес берется из поля author.URL. ///// </summary> ///// <exception <exception cref="System.Exception">Когда страница не загружена</exception> ///// <returns>true-есть новые произведения, false-нет</returns> //public bool UpdateAuthor() //{ // bool retValue; // if (!URL.EndsWith("indexdate.shtml")) // URL = (URL.EndsWith("/")) // ? URL + "indexdate.shtml" // : URL + "/indexdate.shtml"; // byte[] buffer = WEB.DownloadPageSilent(URL); // if (buffer != null) // { // retValue = UpdateAuthorInfo(WEB.ConvertPage(buffer)); // } // else // { // throw new Exception(string.Format("Недоступна страница '{0}'", Name)); // } // return retValue; //} public string GetAuthorPage() { string url = URL; if (!url.EndsWith("indexdate.shtml")) { url = (url.EndsWith("/")) ? URL + "indexdate.shtml" : URL + "/indexdate.shtml"; } return(WEB.DownloadPageSilent(url)); }
public void Start() { if (_isDownloading) { return; } _isDownloading = true; _client = null; _stop = false; Logger.Add(string.Format("Запущена закачка книги '{0}'.", AuthorText.Name)); WEB.DownloadPageSilent(AuthorText.GetFullLink(_author), Progress, Complete); }
public static Author AddAuthor(string url) { _logger.Add("Добавление автора..."); // Перевести URL на samlib.ru url = url.ToLowerInvariant().Replace("zhurnal.lib.ru", "samlib.ru"); // аналог DoEvents в WPF, иначе "Добавление автора..." вообще не появляется, т.к. метод синхронный Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { })); if (!url.StartsWith("http://") && !url.StartsWith("https://")) { url = "http://" + url; } Sites.ISite site = Sites.SitesDetector.GetSite(url); if (site == null) { _logger.Add("Указан незнакомый адрес/домен/протокол.", true, true); return(null); } // Если URL заканчивается на index.shtml, преобразовать его в нужный) url = site.PrepareAuthorUrlOnAdding(url); Author author = Authors.FindAuthor(url); if (author != null) { _logger.Add("Этот автор уже присутствует в списке", true, true); return(author); } try { string pageContent = WEB.DownloadPageSilent(url); if (pageContent == null) { _logger.Add("Не удалось открыть страницу автора", true, true); return(null); } string authorName = ""; DateTime updateDate = DateTime.MinValue; site.GetAuthorCredentials(pageContent, out authorName, out updateDate); //int index = pageContent.IndexOf('.', pageContent.IndexOf("<title>")) + 1; //string authorName = pageContent.Substring(index, pageContent.IndexOf('.', index) - index); //DateTime updateDate = GetUpdateDate(pageContent); if (updateDate == DateTime.MinValue) { _logger.Add("Не удалось получить дату со страницы автора", true, true); return(null); } if (authorName.Trim() == "") { _logger.Add("Не удалось получить имя автора", true, true); return(null); } author = new Author { Name = authorName, IsNew = false, UpdateDate = updateDate, URL = url }; author.CheckID();// генерим id Authors.Add(author); author.UpdateAuthorInfo(pageContent, SynchronizationContext.Current); _logger.Add("Добавлен: " + author.Name); author.Changed = true; } catch (Exception ex) { _logger.Add(ex.StackTrace, false, true); _logger.Add(ex.Message, false, true); _logger.Add("Необработанная ошибка при добавлении автора", true, true); } return(author); }