Пример #1
0
        public string GetAuthorPage(string url)
        {
            var _url = url;

            _url = (_url.EndsWith("/")) ? _url  : _url + "/";
            return(WEB.DownloadPageSilent(_url));
        }
Пример #2
0
        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));
        }
Пример #3
0
        ///// <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));
        }
Пример #4
0
 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);
 }
Пример #5
0
        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);
        }