Online video hd

Смотреть русское видео

Официальный сайт 24/7/365

Смотреть видео бесплатно

31.05.09 17:48 pluton

Tips & tricksСкрипт перекодировки fb2 из win1251 в utf8

Всем привет!
Выкладываю небольшой скрипт для перекодировки fb2-файлов из win1251 в utf8.

Скрипт распаковывает все *.fb2.zip файлы, дальше проверяет кодировку, если она windows-1251, то конвертирует в utf-8. Потом каждый файл запаковывается в архив.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/bin/bash

# fb2conv - Script unpacks fb2.zip archives,

#           reencodes fb2 files from cp1251 to utf8,

#           and pack fb2 to fb2.zip

# Copyright (C) 2009  pluton <[email protected]> <[email protected]>

# License: GNU GPL v3



# constants

MASK="*.fb2"

ZIPS="$MASK.zip"

TMPF=".tmp"



# unzip & delete all fb2 archives

zipcount=$( ls $ZIPS 2>/dev/null | wc -l )

if (( $zipcount > 0 ))

then

    unzip -qq "$ZIPS" && rm -f $ZIPS

fi



count=0

processed=0

chmod -x $MASK      # just in case

for f in $MASK

do

    # get present encoding

    enc=$( head -1 "$f" | sed 's/^.*encoding="\([^"]*\)".*$/\1/i' |

        tr 'A-Z' 'a-z' )

   

    # check encoding

    if [ x"$enc" == x"windows-1251" ]

    then

        iconv -f cp1251 "$f" | sed '1s/encoding="windows-1251"/encoding="utf-8"/i' > "$TMPF"

        mv -f "$TMPF" "$f"

        let processed=$processed+1

    fi

   

    # pack single file to archive

    zip -9qq "$f".zip "$f" && rm -f "$f"

   

    let count=$count+1

done

echo "Altogether $count, processed $processed file(s)"


Собственно, fb2 -- это обычный xml, поэтому можно (попробовать) изменить константу MASK вначале на нужные типы файлов.

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



konkere 31.05.09 19:26 # +-1
А iconv не возьмёт fb2?
konkere 31.05.09 19:27 # +1
да, не туда смотрю (:
Minoru 31.05.09 21:41 # +0
Сначала тоже про iconv подумал, но прочитав код, понял свою ошибку. Вобщем-то да, неплохо — только зачем? Все FB2 ридеры понимают encoding, к тому же UTF-8 избыточна по отношению к CP1251 (файл разрастётся в полтора-два раза)… Или ты читаешь FB2 с помощью less или more? :)
P.S. И не ржите — впервые я FB2 читал в Блокноте под виндой :)
xT 31.05.09 21:53 # +3
Присоединяюсь - зачем?!
pluton 31.05.09 22:04 # +2
Присоединяюсь - зачем?!

эта затея понадобилась с покупкой lbook reader v3. он действительно читает в utf8 и cp1251, но, как говорят, только с последней прошивки (у меня она и стоит). но, мало ли чего, мож захочу более старые посмотреть (вроде там батарея меньше тратится).
то есть, смысла не много, но пусть будет в Ъ кодировке.
+ появилась возможность поковырять shell scripting и написать полезный скрипт
xT 01.06.09 00:00 # +3
Принято ;)
Minoru 01.06.09 14:48 # +0
Ясно.
ibnteo 01.06.09 02:28 # +-1
fb2 файлы это XML, и тут уже по барабану какая у него кодировка, если она указана в заголовке конечно - <?xml version="1.0" encoding="windows-1251"?>
Неужели есть программы, не умеющие работать с отличной от utf-8 кодировкой в fb2?
Minoru 01.06.09 14:49 # +0
Мы всё это уже обсудили выше.

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 151)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 3043 из 225 городов)
            Топ пользователей Топ блогов
            В сети: WiseLord, nvbn, shidoh

            Новенькие: allef, Seryak, panic1329, panic, kuzmoha
            welinux.ru

            Смотреть видео онлайн

            Онлайн видео бесплатно


            Смотреть русское с разговорами видео

            Online video HD

            Видео скачать на телефон

            Русские фильмы бесплатно

            Full HD video online

            Смотреть видео онлайн

            Смотреть HD видео бесплатно

            School смотреть онлайн