mirror of https://github.com/nealey/Horrors2
108 lines
2.5 KiB
Bash
Executable File
108 lines
2.5 KiB
Bash
Executable File
#! /bin/sh
|
|
|
|
kersplit () {
|
|
first=1
|
|
# Add an extra line to chop
|
|
parts=$( (cat horrors2.xhtml; echo) | sed -n '/class="part/=;$=')
|
|
for part in $parts; do
|
|
fn=$1; shift
|
|
cat head.xhtml > $fn
|
|
last=$(expr $part - 1)
|
|
sed -n "${first},${last}p" horrors2.xhtml >> $fn
|
|
cat foot.xhtml >> $fn
|
|
first=$part
|
|
done
|
|
}
|
|
|
|
xhtml="epub/book.xhtml epub/part1.xhtml epub/part2.xhtml epub/part3.xhtml epub/part4.xhtml epub/part5.xhtml epub/part6.xhtml epub/part7.xhtml"
|
|
kersplit $xhtml
|
|
|
|
|
|
rm -rf epub/art
|
|
if true; then
|
|
mkdir epub/art
|
|
for i in art/*.png; do
|
|
echo $i
|
|
pngtopnm $i | pnmscale -xysize 800 600 | pnmtopng > epub/$i
|
|
done
|
|
for i in art/*.jpg; do
|
|
echo $i
|
|
jpegtopnm $i | pnmscale -xysize 800 600 | pnmtojpeg > epub/$i
|
|
done
|
|
fi
|
|
cp style.css epub/
|
|
|
|
|
|
|
|
cd epub
|
|
echo -n application/epub+zip > mimetype
|
|
cat >MANIFEST <<EOF
|
|
mimetype
|
|
META-INF/container.xml
|
|
content.opf
|
|
EOF
|
|
cat > content.opf <<EOF
|
|
<?xml version="1.0"?>
|
|
<package version="2.0" xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId">
|
|
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
|
|
<dc:title>Horrors 2</dc:title>
|
|
<dc:language>en</dc:language>
|
|
<dc:identifier id="BookId" opf:scheme="title">Horrors2</dc:identifier>
|
|
<dc:creator opf:file-as="Something Awful Forums" opf:role="aut">The Something Awful Forums</dc:creator>
|
|
</metadata>
|
|
|
|
<manifest>
|
|
EOF
|
|
rm spine
|
|
find . -type f | sed 's#./##' | while read fn; do
|
|
b=$(basename $fn)
|
|
id=thing$count
|
|
count=$(expr $count + 1)
|
|
case "$b" in
|
|
META-INF/*|MANIFEST|mimetype|content.opf|spine)
|
|
continue
|
|
;;
|
|
*.xhtml)
|
|
id=$(basename $b .xhtml)
|
|
type=application/xhtml+xml
|
|
echo $id >> spine
|
|
;;
|
|
*.css)
|
|
type=image/css
|
|
;;
|
|
book.ncx)
|
|
id=ncx
|
|
;;
|
|
*.png)
|
|
type=image/png
|
|
;;
|
|
*.jpg)
|
|
type=image/jpeg
|
|
;;
|
|
*.svg)
|
|
type=image/svg+xml
|
|
;;
|
|
*.otf)
|
|
type=application/octet-stream
|
|
;;
|
|
esac
|
|
echo "<item id=\"$id\" href=\"$fn\" media-type=\"$type\"/>" >> content.opf
|
|
echo $fn >> MANIFEST
|
|
done
|
|
cat >> content.opf <<EOF
|
|
</manifest>
|
|
|
|
<spine toc="ncx">
|
|
EOF
|
|
sort spine | while read id; do
|
|
# "book" sorts before "part*" :)
|
|
echo " <itemref idref=\"$id\" />" >> content.opf
|
|
done
|
|
rm spine
|
|
cat >> content.opf <<EOF
|
|
</spine>
|
|
</package>
|
|
EOF
|
|
|
|
xargs zip -Xr9D ../book.epub < MANIFEST
|