Софт для переименования FB2 файлов

А вот не подскажет ли кто нужную софтинку....
Дано - куча FB2 файлов с именам в транслите.
Нужно - переименовать файлы взяв информацию из тэга book-title
Очень желательно - работа из командной строки с возможностью задания маски обрабатываемых файлов.
Менее желательно - работа из командной строки с именем файла в качестве аргумента.
Хоть что-нибудь - хоть какая нибудь работа :)
скрипт на VBS тоже подойдет (сам я не могу написать, увы)
софтинка естественно должна понимать какой чарсет у FB2 файла.

Может кто знает такую? или может нарисовать на VBS ?

Комментарии

Очень неплохо работает Book2Shelf
http://unclshura.narod.ru/

Программа под виндовс
Может переименовать файлы взяв информацию из тэга book-title
возможно задать маски для переименования файлов
По умолчанию переделывает FB2 книги в виде ZIP файлов в подкаталогах (имя автора\имя автора. название.zip).

Иногда глючит ( вылетает ошибка) но FB2 файлы с 3 библиотек
fictionbook.ru
lib.aldebaran
Mylibs
смог слить в одну без особых проблем. :)

1. Глючит действительно здорово. После сотни-другой файлов подряд как правило виснет.
2. Сует все в одну папку, а для разных авторов это не здорово.
3. Не может / не хочет переименовывать без импорта форматов, что требует:
- установки нескольких библиотек .dll, которые не слишком украшают систему (там и так много всего) :(
- массу времени. Обработка каталога из сотни папок длилась так долго, что я ее прервал, терпения не хватило.
Вывод: отстой, как и все остальное. Хорошей программы, увы, пока нет (или ее никто не знает?).
А вообще кое-какие опции организованы здесь здорово, например, шаблон переименования.
Вообще же все это было бы не нужно, если бы не маразм / традиция держать все в либах с именами на транслите. Зачем?! И доколе?! Кто мне объяснит, дураку, откуда это пошло для русских книг? Из ФБ-тулз, что ли? Но они как будто могут работать с русскими именами?

Ну могу попробовать завтра на работе нарисовать на перле. Могу скомпилить под винду в exe. Мне кажется, еще нужно при переименовании проверять на совпадение имен и добавлять цифру к имени, если совпадение обнаружено. И выкидывать (заменять на что-то) символы, недопустимые в именах файлов.

О! А как компилить перл в винде? Мне этого давно хочется.

larin написал:
О! А как компилить перл в винде? Мне этого давно хочется.

Это?
Как компилить перл в .exe

Спасибо, поиграюсь.

и моя хотелка - прога для создание списка в csv формате для файлов фб2. Дано
1. название корневого каталога, откуда начинается структура с фб2 файлами. Файлы могут быть сами а могут - в зипе.
2.ини-файл, где указаны перечень тегов фб2 и номер поля в результирующем списке, куда попадают данные а также некоторые доп величины типа разделительного символа, необходимость внесения в список имени файла с его размещением и т.д.
Надо, помогите, люди добрые!

вот это было бы здорово, особенно компиленое и с контролем ошибок!

Отличные планы! Только обязательно сделайте групповую обработку, включая вложенные папки. Ждем с нетерпением ;)

Странно, что про Booki (http://freesoft.ru/?id=79889 - версия 1.7.1) никто не вспомнил.
Офсайт тут - http://booki.h12.ru/. Однако более поздние версии программы стали, как я понимаю, платными.

Переименовывает неплохо, но:
1) не обрабатывает вложенные папки (представьте, каково будет переименовать ВСЮ библиотеку) :(
2) отрубила в XP запуск на чтение fb2 Cool Reader'a, причем насмерть - не восстанавливается системными функциями! Не обойтись, наверное, без чистки реестра :(. Запустить читалку по умолчанию можно из booki, щелкнув корень каталога, но это дрянь, однако!
Вывод: отстой, не используйте или будьте готовы к проблемам.
PS. Спустя полчаса. Удалось вернуться к читалке fb2 по умолчанию (Cool Reader'у), только вручную вычистив реестр - booki прописалась в десяток разделов и полсотни параметров! Вирус, да и только ;). Таким образом, все знайте - применять эту программу опасно для системы! Она становится читалкой fb2 по умолчанию (но не читает, а только перехватывает обращение к системной читалке), и не сбрасывается никакими средствами, кроме чистки реестра. Хитрый программер писал, однако! А вы умеете редактировать реестр? Сначала научитесь, а потом можете применять booki ;)
PS. Забыл еще одно упомянуть. Переименовывает не более 300 файлов в день, потом достает арифметическими примерами и требует регистрации, а ее-то и нет, как нет! Не работает :(

Достигнут некоторый прогресс в работе с booki. Зарегистрировать программу, как уже сказано, к сожалению, невозможно (ссылка не работает, а поиск в Сети пока ничего не дал), а без регистрации она не позволяет переименовывать более 300 файлов. Однако, известный взломщик игр ArtMoney Pro v7.27 не подкачал и тут - позволяет за 2 прохода найти в памяти константу - число переименованных файлов, и сбросить ее в ноль. После чего снова несколько сотен файлов booki молчит. А сбрасывать константу ArtMoney позволяет постоянно (стоИт на нужной ячейке памяти до перезапуска booki). Кто работал с ArtMoney, справится без труда.
Кроме того, довольно легко отредактировать скрипты, чтобы привести имена переименованных файлов к желаемому виду. Словом, программа почти приемлема ;).

Спасибо всем за ссылки. Еще могу указать, http://www.dimonius.ru/index.html, там есть ренеймер, позволяющий групповое переименование любых файлов, в том числе перевод имен из латиницы в кирилицу и наоборот. Правда, имена файлов не всегда корректные на латинице, и иногда получается смешная кирилица, но обычно все понятно и очень быстро работает. Правда, освоить программу - придется разобраться, функция не очевидна. Но я справился ;), так что шансы есть.

У меня есть скрипт на Питоне для этой цели. Я немного его доработал.

import sys
if len(sys.argv)>1:
    path = sys.argv[1]
    ptern = sys.argv[2]
else:
    path = ''
    ptern = '*.fb2'

import os, glob
from xml.dom import minidom

def getnText(nodelist):
    rc = ""
    for node in nodelist:
        if node.nodeType == node.TEXT_NODE:
            rc = rc + node.data
    return rc

def fb2ren(f):
    newname = ''
    xmldoc = minidom.parse(f)
    descr = xmldoc.getElementsByTagName("description")[0]
    ti = descr.getElementsByTagName("title-info")[0]
    aList = ti.getElementsByTagName("author")
    for aut in aList:
        if newname != '':
            newname += ', '
        aname = aut.getElementsByTagName("first-name")[0]
        newname = newname + getnText(aname.childNodes)
        aname = aut.getElementsByTagName("last-name")[0]
        newname = newname + ' ' + getnText(aname.childNodes)
    newname = newname + ' - '
    bt = ti.getElementsByTagName("book-title")[0]
    newname = newname + getnText(bt.childNodes)
    newname = newname + '.fb2'
    os.rename(f, path + '\\'+newname)


def all_files(pattern, search_path, pathsep=os.pathsep):
    """ Given a search path, yield all files matching the pattern. """
    for path in search_path.split(pathsep):
        for match in glob.glob(os.path.join(path, pattern)):
            yield match


for match in all_files(ptern, path):
    fb2ren(match)

Работает под Win32. Вызов:
python fbren.py E:\temp "*.fb2"
Используется пасер минидом, поэтому он немного тормознутый.
Может быть, кому-то будет полезен.

Renamer теперь тоже понимает fb2

вот пример скрипта

[Script10]
Name=fb2 rename no utf
line1="HTML       [Name]: %title-info-author-last-name% %title-info-author-first-name% [%title-info-sequence-name%-%title-info-sequence-number%] %title-info-book-title%"
line2="Replace    [All ]: [-]|"
line3="RegExp     [Name]: \[[-%].+%\]|"
line4="RegExp     [Name]: [ ]+|_"
line5="Translite  [All ]: "
line6="RegExp     [Name]: -([0-9])\]|-0$1]"
line7="OnNameExis [Name]: %name%[%cnt%]"
line8="RegDown    [All ]: "

dup

File Grinder 0.1.2
http://fg.codeplex.com/releases/view/38331
рекомендую

Уже давно пользуюсь FB2 Toolbox - другого софта и не ищу...
http://code.google.com/p/fb2toolbox/

Цитата:
Программа предназначена для эффективного переименования, перемещения и перекодирования файлов fb2.

Что умеет делать FB2 Toolbox: Быстрое распознавание метаданных файлов FB2 (считывается только заголовок) Групповое изменение часто используемых метаданных (автор, жанр, серия и т.п.) Возможность работы с вложенными каталогами Поддержка неограниченного количества профилей для копирования/переименования файлов Поддержка таблиц замены символов/строк для каждого профиля (например для транслита) Поддержка неограниченного количества кодировок для перекодирования файлов (все поддерживаемое системой Windows, от Unicode до KOI8-r, задается пользователем) Поддержка неограниченного количества пользовательских команд (для выполнения операций над файлами) Поддержка пользовательского переименования жанров Поддержка работы с архивами .FB2.ZIP Тестирование файлов FB2 на соответствие стандарту 2.1

X