Отправляет email-рассылки с помощью сервиса Sendsay

[TC] консольный конвертор из FB2 в текст

Приветствую всех!

Пытаюсь найти утилиту, конвертирующую FB2 в текст, которую можно запускать из
командной строки.
Все, что не попадается, требует установки в систему дополнительных компонентов,
что нежелательно.
Может, кто что подскажет более подходящее :)

Заранее благодарю всех откликнувшихся!

Ответить   Sat, 13 Jun 2009 16:05:03 +0400 (#872231)

 

Ответы:

Приветствую всех.
Владимир пишет:

из

JScript + "Microsoft.XMLDOM"

Успехов. Анатолий.

Ответить   "i_chay" Sun, 14 Jun 2009 12:15:18 +0500 (#872384)

 

Приветствую всех!

Цитата из ответа Анатолия на мой вопрос:

Анатолий, Конечно, спасибо за подсказку, но в этой короткой строчке вашего ответа,
как мне кажется, работы для _меня_, по меньшей мере, на полгода. :)
Уж лучше тогда пойти по пути, предложенному разработчиками Максридера.
Они предлагают установить fb2any, и тогда в систему устанавливается VB-скрипт
fb2txt_commandline.vbs
С помощью этого скрипта вполне можно организовать пакетную конвертацию fb2 в
текстовые файлы.
Но я надеялся, что есть утилита, которая просто запускается из командной строки
и не требует установки.
Но раз подобной утилиты, похоже, никто не обнаружил, придется идти этим, на мой
взгляд, не очень желательным путем. Нежелательным, потому что теряется портабельность.
Хотя, с другой стороны, можно попробовать выковырять оттуда только то, что нужно
для решения моей задачи :)

Анатолий, еще раз благодарю за своевременную подсказку - появилась пища для размышлений.
Всего доброго, успехов!

Ответить   Sun, 14 Jun 2009 12:49:43 +0400 (#872410)

 

Приветствую всех.
Владимир пишет:

Самый простой способ получения текста из fb2-файла выглядит так (допустим, это
fb2_to_txt.js):
/* Copyleft (C) 2009 -- i_chay */
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
var fso = new ActiveXObject("Scripting.FileSystemObject");
xmldoc.load(WScript.Arguments.Item(0));
var body = xmldoc.getElementsByTagName("body").item(0);
var f = fso.CreateTextFile(WScript.Arguments.Item(1));
f.WriteLine(body.text);
f.Close()

Запуск:
fb2_to_txt.js infile.fb2 outfile.txt
Пример рабочий, но никаких проверок на правильность аргументов командной строки
и валидность xml-документа не выполняется (обо всем этом вы узнаете из откровенных
сообщений во время выполнения скрипта).
Второй вариант -- это использование xsl-преобразований. Такой вариант более корректен,
если у вас есть соответствующий и корректный xsl-файл. Для преобразования fb2
в txt вы можете найти в каталоге fb2any нужный файл. Он называется FB2_2_txt.xsl.
Скрипт будет выглядеть так:
/* Copyleft (C) 2009 -- i_chay */
var olename ="Microsoft.XMLDOM";
var xmldoc = new ActiveXObject(olename);
var xsldoc = new ActiveXObject(olename);
var fso = new ActiveXObject("Scripting.FileSystemObject");
xmldoc.load(WScript.Arguments.Item(0));
xsldoc.load(WScript.Arguments.Item(1));
var f = fso.CreateTextFile(WScript.Arguments.Item(2));
f.WriteLine(xmldoc.transformNode(xsldoc));
f.Close()

Допустим, скрипт называется fb2_to_txt_xsl.js, тогда командная строка будет такой:
fb2_to_txt_xsl.js infile.fb2 fb2_2_txt.xsl outfile.txt
В принципе, это универсальный скрипт: если вы будете менять xsl-файл, то соответственно
должен меняться формат выходного файла.
Нет никаких гарантий, что в текстах скриптов отсутствуют ошибки(явные или неявные).

Успехов. Анатолий.

Ответить   "i_chay" Sun, 14 Jun 2009 18:45:06 +0500 (#872493)

 

Приветствую всех!

Анатолий пишет:

Спасибо, Анатолий.
Подробно изучу, и если Вы не будете возражать, применю ваш скрипт для конвертирования
FB2 в текст и вставлю в пакет txt2mp3_ii. Тем более, что от пользователей поступали
пожелания, чтобы можно было обрабатывать также и fb2-файлы.

Пробовал использовать скрипты из fb2any. Пока пакет не деинсталирован, беру 2
файла: VB-скрипт и xsl-файл, помещаю их в любую папку, и все работает. Конвертирование
из командной строки происходит успешно.
Но после удаления основного пакета, не срабатывает строка из vbs-файла:
Set FBApp = CreateObject("FB2_to_TXT.FB2TXTExport")
Из-за непонимания в деталях того, что написано в этой строке, не смог победить
эту проблему.
А туту поспело ваше решение.
Большое спасибо. Буду разбираться.

И еще вопрос.
Ваши примеры, Анатолий, начинаются со строки:

/* Copyleft (C) 2009 -- i_chay */

Если бы это была строка:
/* Copyright (C) 2009 -- i_chay */
то вопросов бы не было.
А тут я не пойму: или это шутка, а я не в теме, или что-то другое.
Поясните, пожалуйста, а то я несколько смущен своей дремучестью :)

Ответить   Sun, 14 Jun 2009 19:10:23 +0400 (#872523)

 

Приветствую всех.
Владимир пишет:

Скрипт в fb2any использует компоненты, устанавливаемые в систему при инсталляции
пакета. Собственно, эта строка и обращается к такому компоненту (в папке fb2any
эти компоненты представлены в виде dll). Удаляя пакет, вы удаляете и эти компоненты,
поэтому скрипт становится неработоспособным.

В этой строке создается объект с идентификатором (ProgID) "FB2_to_TXT.FB2TXTExport".
По этому идентификатору его можно найти в реестре, если он был установлен и не
удален.
В той же ветке реестра можно узнать полное имя dll, содержащей этот компонент.
Затем вы забираете эту dll, этот скрипт и, возможно, другие нужные файлы. Удаляете
fb2any, а затем снова регистрируете в реестре компонент из командной строки:
regsvr32 имя_файла.dll
После такой регистрации dll никуда перемещать из текущего местоположения нельзя.
Теоретически, после этого скрипт должен работать. Надо только учитывать, что
регистрация компонента в системном реестре, как правило, требует прав администратора.

http://www.gnu.org/copyleft/copyleft.ru.html

Для более серьезных вещей надо указывать и прикладывать конкретную открытую лицензию,
но в этом случае текст лицензии отнял бы больше места, чем тексты скриптов.

Успехов. Анатолий.

Ответить   "i_chay" Sun, 14 Jun 2009 22:47:39 +0500 (#872548)

 

Приветствую всех!

Анатолий пишет:

Благодарю, Анатолий.
Все понятно.

Анатолий, опробовал предложенные Вами скрипты.
В первом случае, текст извлекается, правда, совершенно отсутствует форматирование.
Во втором случае, когда подключается xsl-файл от fb2any, получается точно такой
же текст, с тем же форматированием, как и при извлечении его с помощью скрипта
от fb2any.
Но в вашем случае никаких DLL не применяется.
Зачем же в FB2any применяется в этом случае DLL - осталось для меня непонятным.

И еще, Анатолий, если Вы не возражаете, я бы просил у Вас разрешения использовать
предложенные Вами скрипты в пакете txt2mp3_ii, естественно, со ссылкой на ваше
авторство.

лицензию,

Впервые столкнулся с этим, поэтому и задан был вопрос. Спасибо за разъяснение,
теперь буду знать.

Ответить   Sun, 14 Jun 2009 22:25:35 +0400 (#872563)

 

Всем, здравствуйте.

Приятель пользуется портабельной the bat 4-й версией.
В свойствах ящика установлен флажок на звук входящей почты и указан путь к файлу.
На
пробе сигнал звучит, но при поступлении писем не озвучивается.
Время срабатывания звука по умолчанию в течении суток.
Что может быть за причина этой ситуации?

Ответить   Wed, 17 Jun 2009 18:40:17 +0600 (#873809)

 

Здравствуйте, Gordeev.

Вы писали 17 июня 2009 г., 16:40:17:

к файлу.

wav-формат обязательно должен быть. хотя может четвёрки и эмпитрёхи понимает
и я ошибаюсь...

Ответить   Wed, 17 Jun 2009 20:36:07 +0400 (#873897)

 

Здравствуйте, Denis.

Вы писали 17 июня 2009 г., Время - 22:36:

используется Файл wav.
в пробе он звучит.

Ответить   Thu, 18 Jun 2009 07:54:25 +0600 (#874108)

 

Здравствуйте, Gordeev.

отвечаю на письмо от 18 июня 2009 г., 4:54:25:

надо проверить, что установлено в свойствах папок, в дереве звук,
может тут отключено. здесь имеются следующие радиокнопки:
Мелодия Почтового ящика
Звук выключен
Собственная мелодия

вот справка:
Звук
Мелодия при получении новой почты

The Bat! может оповещать вас звуковым сигналом при поступлении новых писем. (Так
как The Bat! использует WAV-файлы, у вас должна быть установлена звуковая карта
для их воспроизведения).

Установка звукового оповещения на уровне Почтового ящика будет работать, если
письмо пришло в любую папку из этого ящика. Установка собственной мелодии (на
уровне папки) необходима, если вы хотите определить дополнительные мелодии для
некоторых папок, чтоб сразу по звуку определять в какую именно папку поступила
новая почта.

В некоторых случаях может быть необходимо запретить воспроизведение мелодии в
течение некоторого временного периода (например, дома мало кому понравится услышать
оповещение The Bat! о приходе новой почты где-нибудь глубокой ночью). Вы можете
определить тот период времени, когда будет разрешено проигрывание мелодии о приходе
новой почты. Например: 9:00-20:00.

Уровень ящика

1. Выделите Ящик.

2. Вызовите пункт меню Ящик -> Свойства почтового ящика или вызовите из контекстного
меню папки ящика пункт Свойства почтового ящика.

3. В окне Свойства почтового ящика, выберите раздел Звук.

4. В верхнем левом углу диалогового окна отметьте флажок Проиграть мелодию при
получении новой почты.

5. Нажмите кнопку Обзор для выбора WAV-файла на вашем компьютере.

6. Используйте кнопку Проба для прослушивания мелодии.

7. Если вы хотите запретить воспроизведение мелодии в течение некоторого периода
времени, то введите допустимые часы в поле Время, когда мелодия разрешена.

Примечание: По умолчанию значение разрешенного диапазона равно 00:00-24:00 (т.е.
от полуночи до полуночи). Это разрешает The Bat! играть мелодии при получении
почты все 24 часа в сутки. Для запрета звука в течение нужного диапазона укажите
время начала разрешенного звука слева и время окончания разрешенного звука справа.
Например: для запрета звука до 9:00am и после 8:00pm (до 9:00 и после 20:00)
, укажите значение 09:00-20:00 (The Bat! использует 24-часовой формат времени
по внутренним часам вашего компьютера).

Уровень папки

1. Выделите Папку.

2. Вызовите пункт меню Папка -> Свойства папки или вызовите из контекстного меню
папки пункт Свойства папки.

3. В окне Свойства папки, выберите раздел Звук (закладку звук).

4. В подразделе Мелодия при получении новой почты выберите один из вариантов
в переключателе:

Мелодия почтового ящика: Играется мелодия, указанная в Свойствах почтового ящика
(см. выше).

Собственная мелодия: Используются собственные настройки, которые перекрывают
настройки Ящика.

Звук выключен: Звук выключается, если в эту папку поступают новые письма.

5. Нажмите кнопку Обзор для выбора WAV-файла на вашем компьютере.

6. Используйте кнопку Проба для прослушивания мелодии.

7. Если вы хотите запретить воспроизведение мелодии в течение некоторого периода
времени, то введите допустимые часы в поле Время, когда мелодия разрешена. Эти
настройки перекроют соответствующие настройки почтового ящика.

Примечание: По умолчанию значение разрешенного диапазона равно 00:00-24:00 (т.е.
от полуночи до полуночи). Это разрешает The Bat! играть мелодии при получении
почты все 24 часа в сутки. Для запрета звука в течение нужного диапазона укажите
время начала разрешенного звука слева и время окончания разрешенного звука справа.
Например: для запрета звука до 9:00am и после 8:00pm (до 9:00 и после 20:00)
, укажите значение 09:00-20:00 (The Bat! использует 24-часовой формат времени
по внутренним часам вашего компьютера).

Ответить   Анатолий Ивашков Thu, 18 Jun 2009 13:34:52 +0300 (#874327)