File: epub_create.py

package info (click to toggle)
python-ebooklib 0.15~ds0-1
  • links: PTS, VCS
  • area: main
  • in suites: buster, jessie, jessie-kfreebsd, stretch
  • size: 468 kB
  • ctags: 258
  • sloc: python: 1,611; sh: 166; makefile: 137
file content (92 lines) | stat: -rw-r--r-- 2,545 bytes parent folder | download
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
84
85
86
87
88
89
90
91
92
# coding=utf-8

from ebooklib import epub



if __name__ == '__main__':
    book = epub.EpubBook()

    book.set_identifier('id123456')
    book.set_title('This is my book')
    book.set_language('fi')

    book.add_metadata('DC', 'title', 'Naslov', {'id': 't1'})
    book.add_metadata(None, 'meta', 'main', {'refines': '#t1', 'property': 'title-type'})
    book.add_metadata('DC', 'title', 'Naslov', {'id': 't2'})
    book.add_metadata(None, 'meta', 'edition', {'refines': '#t2', 'property': 'title-type'})

    book.add_author('Mirko Bulaja')
    book.add_author('Danko Bananko', file_as='Gospodin Danko Bananko', role='ill', uid='coauthor')

    img = open('image.jpg', 'r').read()
    book.set_cover("image.jpg", img)

    # create chapters
    c1 = epub.EpubHtml(title='Intro 1', file_name='chap_01.xhtml', lang='hr')
    c1.set_content(u'<html><head></head><body><h1>This is I!</h1><p>This is something i am writing.</p><p>Šime Đodan ima puno posla.</p></body></html>')

    c2 = epub.EpubHtml(title='Intro 2', file_name=u'chap_02_đšž.xhtml')
    c2.set_content('<h1>This is I!</h1><p>Helou, helou!</p><p><a href="http://ajme/">Ovo je link</a></p>')
    c2.properties.append('rendition:layout-pre-paginated rendition:orientation-landscape rendition:spread-none')

    # add all the items
    book.add_item(c1)
    book.add_item(c2)
    
    book.toc = ( (epub.Section('Languages'),
                    (c1, c2)),
                )


    style = '''
@namespace epub "http://www.idpf.org/2007/ops";

body {
    font-family: Cambria, Liberation Serif, Bitstream Vera Serif, Georgia, Times, Times New Roman, serif;
}

h2 {
     text-align: left;
     text-transform: uppercase;
     font-weight: 200;     
}

ol {
        list-style-type: none;
}

ol > li:first-child {
        margin-top: 0.3em;
}


nav[epub|type~='toc'] > ol > li > ol  {
    list-style-type:square;
}


nav[epub|type~='toc'] > ol > li > ol > li {
        margin-top: 0.3em;
}

'''
    nav_css = epub.EpubItem(uid="style_nav", file_name="style/nav.css", media_type="text/css", content=style)
    book.add_item(nav_css)

    # this should be maybe add by default or something
    book.add_item(epub.EpubNcx())
    nav = epub.EpubNav()
    nav.add_item(nav_css)
    book.add_item(nav)

    # this probably is not correct. should be able to define other properties also
    book.spine = ['cover', 'nav', c1, c2]

    # write book to the file
    epub.write_epub('test.epub', book)

    print '------------'
    for x in nav.get_links_of_type('text/css'):
        print x