DocTheEbook: GoodNews/Function ...
Поиск:
Наблюдать | Версия для печати | Вход:   Пароль:  

Функции и возможности программы

Внешний вид, первое знакомство


На иллюстрации представлено основное окно программы. Условно его можно разделить на три части:

  • Панель слева.

С ее помощью задается структура газеты – настраиваются разделы. Разделы могут быть вложенными, количество уровней вложенности не ограничено.
Здесь же на панеле расположена кнопка «загрузить газету».

  • Панель справа.

Служит для настройки rss-подписок выбраного раздела газеты.

  • Панель снизу.

Содержит две вкладки – Downloads и Logger. Вкладка Downloads служит для работы с полученными файлами газет. Отсюда файл газеты можно открывать, копировать, удалять и т.п. На вкладке Logger можно посмотреть лог работы программы.
(примечание: в результирующий файл пишутся только отмеченные разделы и подписки.)

Функции программы

Электронные газеты

Основная функция программы – получение электронных газет.
Газета может подгружаться автоматически каждый день в указанное время (задается в настройках программы: Tools-> Options-> Downloads-> Download on Time), при этом скачиваются только последние новости. Есть возможность записать все новости не зависимо от даты их публикации, эта функция вызывается вручную через главное окно приложения.

Подключаемые конверторы

Помимо базового формата fb2, программа позволяет сохранять электронные газеты в других форматах. Это обеспечивается системой плагинов, которые могут легко подключаться к приложению. Для того чтоб приложение могло использовать дополнительный конвертор, необходимо поместить библиотеку конвертора в папку с программой. Доступные конверторы отображаются в меню программы Tools.


Для создания своего конвертора Вы должны имплементировать интерфейс IСonvertorPlugin.

public interface IConvertorPlugin
{
      String Name { get; }
      String FileExtension { get; }
 
    Byte[] Convert(Byte[] anInput);        
}

Где,
Name: Имя плагина. Отображается в меню программы. Имя плагина должно быть уникальным.
FileExtension: Расширение файла – результата конвертирования. Например если плагин позволяет конвертировать FB2 в PDF, то FileExtension должен быть “.PDF”
Convert: Основной метод выполняющий конвертацию. Он принимает массив байт, конвертирует в необходимый формат и возвращает результат опять же как массив байт.
Как видите, интерфейс предельно прост. Плагины можно писать на чем угодно (C#, Delphi, C++), главное чтобы в результате была получена скомпилированая dll’ка.
А вот пример реализации интерфейса на C# – класс преобразующий fb2 в txt:
namespace SampleConvertorPlugin
{
    public class SampleConvertorPlugin2 : IConvertorPlugin
    {
        string IConvertorPlugin.Name
        {
            get { return "FB2->Text"; }
        }
 
        string IConvertorPlugin.FileExtension
        {
            get { return ".txt"; }
        }
 
        /// <summary>
        /// Coverts .fb2 document into .txt document.
        /// </summary>
        /// <param name="fb2Data">Content of .fb2 document as byte array.</param>
        /// <returns>Content of .txt document as byte array.</returns>
        Byte[] IConvertorPlugin.Convert(Byte[] fb2Data)
        {
            String lContent = Encoding.UTF8.GetString(fb2Data);
 
            String lResult;
            XmlDocument lDocument = new XmlDocument();
            lDocument.LoadXml(lContent);
 
            // Do some transformation here
            StringBuilder sb = new StringBuilder();
 
            // Add content
            String s = lDocument.SelectSingleNode("FictionBook/description/title-info/book-title").InnerText;
            sb.AppendLine(s);
            sb.AppendLine();
 
            XmlNodeList lSections = lDocument.SelectNodes("FictionBook/body/section");
            if (lSections == null) return null;
            foreach (XmlNode lItem in lSections)
                WriteSection(lItem, sb);
 
            lResult = sb.ToString();
 
            return Encoding.UTF8.GetBytes(lResult);
        }
 
        private void WriteSection(XmlNode aNode, StringBuilder aStringBuilder)
        {
            foreach (XmlNode lNode in aNode.ChildNodes)
            {
                switch (lNode.Name)
                {
                    case "title":
                        aStringBuilder.AppendLine(lNode.InnerText);
                        break;
                    case "section":
                        fLevel++;
                        WriteSection(lNode, aStringBuilder);
                        break;
                    case "epigraph":
                        aStringBuilder.AppendLine(lNode.InnerText);
                        break;
                    case "subtitle":
                        aStringBuilder.AppendLine(lNode.InnerText);
                        break;
                    case "p":
                        aStringBuilder.AppendLine(lNode.InnerText);
                        break;
                }
            }
        }
    }
}

Автоматический запуск скриптов

В окне настройки приложения есть возможность указать путь к файлу скрипта (.bat, .js, ...), который будет запускаться каждый раз после загрузки и постконвертации файла электронной газеты. Это, помимо всего прочего, дает еще один вариант подключения сторонних конвертеров:

(Строка "{0}" будет заменена на полное имя файла закачанной газеты.)

Совместимой с прошлыми верcиями

Если у вас уже установлена предыдущая версия Good News (в те времена она называлась FBSync), то спешу сообщить, что ни смотря на то, что формат файла настроек в новой версии здорово поменялся, вы все-равно можете импортировать старые настройки. У Вас в системе они обычно лежат здесь: C:\Documents and Settings\[USER NAME]]\Application Data\Red Weaver\settings.xml.


 

Яндекс.Метрика