среда, 27 июля 2011 г.

python: Переименовать файлы *.fb2

Возникла задача: переименовать файлы *.fb2 в формат "<Автор> <Название>.FB2"

Так как *.fb2 - это на самом деле xml, то решение простое:
1. Получить список файлов в каталоге
2. Загрузить в парсер каждый файл
3. Найти там имя автора и название книги
4. Переименовать файл

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os

import xml.dom.minidom
from xml.dom.minidom import Node

path = os.path.expanduser(u"~/Загрузки/fb2/")

dirList = (file for file in os.listdir(path) if os.path.isfile(os.path.join(path, file)) and file.endswith("fb2"))

for fname in dirList:

    print fname

    doc = xml.dom.minidom.parse(path + fname)

    last_name = ""
    book_title = ""

    for title_node in doc.getElementsByTagName("title-info"):

        for author_node in title_node.getElementsByTagName("author"):
            for node2 in author_node.getElementsByTagName("last-name"):
                for node3 in node2.childNodes:
                    if node3.nodeType == Node.TEXT_NODE:
                        last_name = node3.data

        for book_node in title_node.getElementsByTagName("book-title"):
            for node2 in book_node.childNodes:
                if node2.nodeType == Node.TEXT_NODE:
                    book_title = node2.data

    if last_name != "" and book_title != "":
        new_fname = u'%s %s.fb2' % (last_name, book_title)
        os.rename(path + fname, path + new_fname)
        print "%s = %s" % (fname, new_fname)

Комментариев нет:

Отправить комментарий