11-25-2010, 04:35 AM | #91 |
Junior Member
Posts: 2
Karma: 10
Join Date: Nov 2010
Device: Cybook Opus
|
Geht es übrigens nur mir so, oder ist seit ein, zwei Ausgaben die Schrift in den Artikeln hardcoded? Zwar passen sich die Überschriften und das Inhaltsverzeichnis der gewählten Schriftart in meinem Opus an, aber der eigentliche Artikeltext lässt sich nicht mehr ändern. Das war doch vorher nicht so, oder? Habe leider keine ältere ePub-Datei mehr zur Hand...
Wunsch: Hätte das gerne wieder geändert... :-) |
11-28-2010, 07:00 AM | #92 | |
Connoisseur
Posts: 54
Karma: 10
Join Date: Apr 2009
Location: London, UK
Device: Sony PRS-650
|
Quote:
ich scheine genau das gleiche Problem mit dem Inhaltsverzeichnis zu haben. In Calibre funktioniert das Inhaltsverzeichnis, auf meinem PRS650 aber nicht. Es gibt da nur einen Eintrag und der führt mich auf die Titelseite. Danke! |
|
Advert | |
|
11-28-2010, 12:03 PM | #93 |
Developer
Posts: 155
Karma: 280
Join Date: Nov 2010
Device: Kindle 3 (Keyboard) 3G / iPad 9 WiFi / Google Pixel 6a (Android)
|
Hi,
ich habe calibre jetzt so geändert, daß man EPUB Dateien herunterladen kann, ohne daß calibre sie modifiziert. Den Patch und das aktualisierte Rezept findet man hier: https://www.mobileread.com/forums/sho....php?p=1240307 Ich denke damit sollten alle Probleme behoben sein. Ciao, Steffen |
11-28-2010, 06:32 PM | #94 | |
Connoisseur
Posts: 54
Karma: 10
Join Date: Apr 2009
Location: London, UK
Device: Sony PRS-650
|
Quote:
sorry bin etwas verwirrt Um den Patch einzubinden, muss ich dazu die entsprechenden Files im source code änderen (diff?) um dann Calibre neu zu kompilieren? (edit: kompilieren? Python doch eine Scriptsprache???) Und was hätte das dann für Auswirkungen auf andere recipies? Oder denke ich gerade viel zu kompliziert? Ist leider schon ne weile her, dass ich sowas das letzte mal gemacht habe... In meinem Fall funktioniert das epub file innerhalb von calibre, aber nicht auf meinem PRS-650. Ich hätte eigentlich gar nichts dagegen, wenn das epub file so geändert wird, dass es mit dem Periodicals feature auf dem PRS-650 funktionert. Kann ich in irgendeiner Form helfen? Auf jeden vielen Dank!!! Ein ganz und gar verwirrter :-) Robert Last edited by StanByk; 11-28-2010 at 06:36 PM. |
|
11-29-2010, 03:47 AM | #95 | |||
Developer
Posts: 155
Karma: 280
Join Date: Nov 2010
Device: Kindle 3 (Keyboard) 3G / iPad 9 WiFi / Google Pixel 6a (Android)
|
Quote:
Das grundsätzliche Verfahren ist im Calibre Handbuch beschrieben (http://calibre-ebook.com/user_manual/develop.html). Einfach die Sourcen von Calibre entweder auschecken oder im Linux Downloadbereich herunterladen, dann meinen Patch anwenden und die CALIBRE_DEVELOP_FROM Environment Variable auf den Pfad mit den gepatchten Sourcen setzen, danach sollte Calibre die Änderung enthalten. Quote:
Quote:
Aber ich halte es eh für die beste Lösung, daß originale EPUB verwenden zu können. Wer gerne Calibre drüber laufen lassen will, kann ja eine EPUB zu EPUB Konvertierung anstoßen. Ciao, Steffen |
|||
Advert | |
|
12-14-2010, 04:14 PM | #96 |
Junior Member
Posts: 2
Karma: 10
Join Date: Dec 2010
Device: Kindle 3, Blackberry Bold 9000, Nexus One
|
@siebert: Danke!
Hallo Steffen,
einfach mal ein großes "Danke" an Dich: Das Skript, um die "Zeit" in Calibre runterzuladen, ist einfach super. Löst genau mein Problem, dass ich oft unterwegs bin und dann, wenn ich gerade Zeit hätte, die "Zeit" nicht auf meinen Kindle geladen und konvertiert habe. Nun kann ich einfach Calibre Donnerstag früh laufen lassen, dann kommt alles direkt auf meinen K3 geschickt. Genial, danke, dass Du Dich dessen angenommen hast. Grüße, FB |
02-13-2011, 04:27 AM | #97 | |
Zealot
Posts: 107
Karma: 172
Join Date: Sep 2010
Location: Germany
Device: PW1, PW2, KB3G, Sony PRS-T3
|
Die Zeit als Mobi @free.kindle.com
Quote:
gibt es etwas neues an dieser Front? Die Zeit als mobi an die @free.kindle.com geschickt. Alternativ: Wann kommt Die Zeit auf Amazon.com? Ich würde dann ein ABO aschließen. Über Calibre bekomme ich die Zeit feeds bereits schön zusammengestellt. Ist halt ein bisschen mehr Aufwand. Ein Amazon ABO hat den Vorteil, dass ich auch im Ausland über 3G Die Zeit lesen könnte. |
|
02-18-2011, 09:12 AM | #98 |
Junior Member
Posts: 3
Karma: 10
Join Date: Feb 2011
Device: nook
|
Hallo, ich habe zu Weihnachten von meiner Tochter ein NOOK bekommen. Obwohl ich bisher keine Zeit hatte alles zu lernen was man damit machen kann finde ich es ganz toll.
Meine Frage ist, wie ist es im Vergleich zu kindle? |
02-25-2011, 03:25 PM | #99 |
Member
Posts: 18
Karma: 36
Join Date: Feb 2011
Device: Kindle
|
Neue Version des Skriptes
Hallo zusammen,
habe mich aus eigenem Interesse mal drangemacht, einige Probleme mit dem Calibre-Skript (das traditionelle Skript, das das ePub herunterlaed und dann neu baut, also ohne Calibre-Patch) auszubessern. Im allgemeinen sind ein korrektes Titelbild und die korrekte Verwendung von Gedankenstrichen hinzugekommen. Speziell fuer Kindle-Nutzer habe ich den leeren linken Rand entfernt und dafuer gesorgt, dass tiefgestellte Zahlen halbwegs vernuenftig umgesetzt werden. Das ist besonders bei Texten ueber CO2 wichtig, da der Kindle die entsprechenden Unicode-Zeichen nicht kennt. Ich habe das neue Skript hier an ensprechender Stelle fuer die Verwendung in Calibre vorgeschlagen, mal sehen ob es aufgenommem wird. Hier auf jeden Fall schon mal fuer alle zum Ausprobieren. Viele Gruesse, Tobias PS an Die Zeit: Es scheint beim automatischen Erstellen des ePubs noch einige Probleme zu geben, an einigen Stellen sind ueberfluessige Leerzeichen vorhanden, an anderen Stellen wieder fehlen die Leerzeichen. Auch die Zwischenueberschriften in den Artikeln werden nicht, wie ich es erwarten wuerde, als kursiver Text markiert, sondern nur als normaler Text. Trotzdem ein toller Service! Code:
#!/usr/bin/env python # -*- coding: utf-8 mode: python -*- __license__ = 'GPL v3' __copyright__ = '2010, Steffen Siebert <calibre at steffensiebert.de>' __docformat__ = 'restructuredtext de' __version__ = '1.2' """ Die Zeit EPUB """ import os, urllib2, zipfile, re, string from calibre.web.feeds.news import BasicNewsRecipe from calibre.ptempfile import PersistentTemporaryFile from calibre import walk class ZeitEPUBAbo(BasicNewsRecipe): title = u'Die Zeit' description = u'Das EPUB Abo der Zeit (needs subscription)' language = 'de' lang = 'de-DE' __author__ = 'Steffen Siebert, revised by Tobias Isenberg (with some code by Kovid Goyal)' needs_subscription = True conversion_options = { 'no_default_epub_cover' : True, # fixing the wrong left margin 'mobi_ignore_margins' : True, } preprocess_regexps = [ # filtering for correct dashes (re.compile(r' - '), lambda match: ' – '), # regular "Gedankenstrich" (re.compile(r' -,'), lambda match: ' –,'), # "Gedankenstrich" before a comma (re.compile(r'(?<=\d)-(?=\d)'), lambda match: '–'), # number-number # filtering for unicode characters that are missing on the Kindle, # try to replace them with meaningful work-arounds (re.compile(u'\u2080'), lambda match: '<span style="font-size: 50%;">0</span>'), # subscript-0 (re.compile(u'\u2081'), lambda match: '<span style="font-size: 50%;">1</span>'), # subscript-1 (re.compile(u'\u2082'), lambda match: '<span style="font-size: 50%;">2</span>'), # subscript-2 (re.compile(u'\u2083'), lambda match: '<span style="font-size: 50%;">3</span>'), # subscript-3 (re.compile(u'\u2084'), lambda match: '<span style="font-size: 50%;">4</span>'), # subscript-4 (re.compile(u'\u2085'), lambda match: '<span style="font-size: 50%;">5</span>'), # subscript-5 (re.compile(u'\u2086'), lambda match: '<span style="font-size: 50%;">6</span>'), # subscript-6 (re.compile(u'\u2087'), lambda match: '<span style="font-size: 50%;">7</span>'), # subscript-7 (re.compile(u'\u2088'), lambda match: '<span style="font-size: 50%;">8</span>'), # subscript-8 (re.compile(u'\u2089'), lambda match: '<span style="font-size: 50%;">9</span>'), # subscript-9 ] def build_index(self): domain = "http://premium.zeit.de" url = domain + "/abovorteile/cgi-bin/_er_member/p4z.fpl?ER_Do=getUserData&ER_NextTemplate=login_ok" browser = self.get_browser() browser.add_password("http://premium.zeit.de", self.username, self.password) try: browser.open(url) except urllib2.HTTPError: self.report_progress(0,_("Can't login to download issue")) raise ValueError('Failed to login, check your username and password') response = browser.follow_link(text="DIE ZEIT als E-Paper") response = browser.follow_link(url_regex=re.compile('^http://contentserver.hgv-online.de/nodrm/fulfillment\\?distributor=zeit-online&orderid=zeit_online.*')) tmp = PersistentTemporaryFile(suffix='.epub') self.report_progress(0,_('downloading epub')) tmp.write(response.read()) tmp.close() zfile = zipfile.ZipFile(tmp.name, 'r') self.report_progress(0,_('extracting epub')) zfile.extractall(self.output_dir) tmp.close() index = os.path.join(self.output_dir, 'content.opf') self.report_progress(1,_('epub downloaded and extracted')) # doing regular expression filtering for path in walk('.'): (shortname, extension) = os.path.splitext(path) if extension.lower() in ('.html', '.htm', '.xhtml'): with open(path, 'r+b') as f: raw = f.read() raw = raw.decode('utf-8') for pat, func in self.preprocess_regexps: raw = pat.sub(func, raw) f.seek(0) f.truncate() f.write(raw.encode('utf-8')) # adding real cover self.report_progress(0,_('trying to download cover image (titlepage)')) self.download_cover() self.conversion_options["cover"] = self.cover_path return index # getting url of the cover def get_cover_url(self): try: inhalt = self.index_to_soup('http://www.zeit.de/inhalt') cover_url = inhalt.find('div', attrs={'class':'singlearchive clearfix'}).img['src'].replace('icon_','') except: cover_url = 'http://images.zeit.de/bilder/titelseiten_zeit/1946/001_001.jpg' return cover_url Last edited by tobias2; 02-27-2011 at 05:17 AM. |
03-04-2011, 03:38 AM | #100 |
Junior Member
Posts: 2
Karma: 10
Join Date: Dec 2010
Device: Kindle 3, Blackberry Bold 9000, Nexus One
|
Danke
Hallo Tobias,
Klappt ganz wunderbar, und die Verfeinerungen im Layout sind auf jeden Fall noch schöner. Danke schön! FB |
03-20-2011, 03:39 PM | #101 |
Member
Posts: 18
Karma: 36
Join Date: Feb 2011
Device: Kindle
|
Hallo zusammen,
Scheinbar wurden meine Verbesserungen im Zeit-Skript nicht in Calibre uebernommen. Ich habe aber nochmal etwas an dem Recipe gearbeitet. Daher hier noch einmal eine neue Version, die jetzt noch sehr viel mehr Fehler in der Originaldatei (soweit das automatisch moeglich ist) korrigiert und auch visuell ein paar Verbesserungen bringt. Ausserdem wurde der Fehler meiner vorigen Version beseitigt, der das Titelbild entfernt hatte. Im Prinzip sind nur die Filterregeln (preprocess_regexps) geaendert worden, aber trotzdem hier das gesamte Recipe: Code:
#!/usr/bin/env python # -*- coding: utf-8 mode: python -*- __license__ = 'GPL v3' __copyright__ = '2010, Steffen Siebert <calibre at steffensiebert.de>' __docformat__ = 'restructuredtext de' __version__ = '1.3' """ Die Zeit EPUB """ import os, urllib2, zipfile, re, string from calibre.web.feeds.news import BasicNewsRecipe from calibre.ptempfile import PersistentTemporaryFile from calibre import walk class ZeitEPUBAbo(BasicNewsRecipe): title = u'Die Zeit' description = u'Das EPUB Abo der Zeit (needs subscription)' language = 'de' lang = 'de-DE' __author__ = 'Steffen Siebert, revised by Tobias Isenberg (with some code by Kovid Goyal)' needs_subscription = True conversion_options = { 'no_default_epub_cover' : True, # fixing the wrong left margin 'mobi_ignore_margins' : True, } preprocess_regexps = [ # filtering for correct dashes (re.compile(' - '), lambda match: u' \u2013 '), # regular "Gedankenstrich" (re.compile(' -,'), lambda match: u' \u2013,'), # "Gedankenstrich" before a comma (re.compile(r'(?<=\d)-(?=\d)'), lambda match: u'\u2013'), # number-number # fix the number dash number dash for the title image that was broken by the previous line (re.compile(u'(?<=\d\d\d\d)\u2013(?=\d?\d\.png)'), lambda match: '-'), # filtering for certain dash cases (re.compile(r'Bild - Zeitung'), lambda match: 'Bild-Zeitung'), # the obvious (re.compile(r'EMail'), lambda match: 'E-Mail'), # the obvious # the next two lines not only fix errors but also create new ones. this is due to additional errors in # the typesetting such as missing commas or wrongly placed dashes. but more is fixed than broken. (re.compile(r'(?<!und|der|\w\w,) -(?=\w)'), lambda match: '-'), # space too much before a connecting dash (re.compile(r'(?<=\w)- (?!und\b|oder\b|wie\b|aber\b|sondern\b|bis\b|&|&\s)'), lambda match: '-'), # space too much after a connecting dash # filtering for missing spaces before the month in long dates (re.compile(r'(?<=\d)\.(?=Januar)'), lambda match: '. '), (re.compile(r'(?<=\d)\.(?=Februar)'), lambda match: '. '), (re.compile(u'(?<=\d)\.(?=M\u00E4rz)'), lambda match: '. '), (re.compile(r'(?<=\d)\.(?=April)'), lambda match: '. '), (re.compile(r'(?<=\d)\.(?=Mai)'), lambda match: '. '), (re.compile(r'(?<=\d)\.(?=Juni)'), lambda match: '. '), (re.compile(r'(?<=\d)\.(?=August)'), lambda match: '. '), (re.compile(r'(?<=\d)\.(?=September)'), lambda match: '. '), (re.compile(r'(?<=\d)\.(?=Oktober)'), lambda match: '. '), (re.compile(r'(?<=\d)\.(?=November)'), lambda match: '. '), (re.compile(r'(?<=\d)\.(?=Dezember)'), lambda match: '. '), # filtering for other missing spaces (re.compile(r'(?<=[A-Za-zÄÖÜäöü]),(?=[A-Za-zÄÖÜäöü])'), lambda match: ', '), (re.compile(r'(?<=[a-zäöü])\.(?=[A-ZÄÖÜ][A-Za-zÄÖÜäöü])'), lambda match: '. '), (re.compile(r'u\. a\.'), lambda match: 'u.a.'), # fix abbreviation that was broken by the previous line (re.compile(r'(?<=\d)[Pp]rozent'), lambda match: ' Prozent'), (re.compile(r'\.\.\.\.+'), lambda match: '...'), # too many dots (....) (re.compile(r'(?<=[^\s])\.\.\.'), lambda match: ' ...'), # spaces before ... (re.compile(r'\.\.\.(?=[^\s])'), lambda match: '... '), # spaces after ... (re.compile(r'(?<=[\[\(]) \.\.\. (?=[\]\)])'), lambda match: '...'), # fix special cases of ... in brackets (re.compile(u'(?<=[\u00BB\u203A]) \.\.\.'), lambda match: '...'), # fix special cases of ... after a quotation mark (re.compile(u'\.\.\. (?=[\u00AB\u2039,])'), lambda match: '...'), # fix special cases of ... before a quotation mark or comma (re.compile(r'(?<=\d)(?=(Femto|Piko|Nano|Mikro|Milli|Zenti|Dezi|Hekto|Kilo|Mega|Giga|Tera|Peta|Tausend|Trilli|Kubik|Quadrat))'), lambda match: ' '), # fix missing spaced before units # filtering for spaces in large numbers for better readability (re.compile(r'(?<=\d\d)(?=\d\d\d[ ,\.;\)<\?!-])'), lambda match: u'\u2008'), # end of the number with some character following (re.compile(r'(?<=\d\d)(?=\d\d\d. )'), lambda match: u'\u2008'), # end of the number with full-stop following, then space is necessary (avoid file names) (re.compile(u'(?<=\d)(?=\d\d\d\u2008)'), lambda match: u'\u2008'), # next level (re.compile(u'(?<=\d)(?=\d\d\d\u2008)'), lambda match: u'\u2008'), # next level (re.compile(u'(?<=\d)(?=\d\d\d\u2008)'), lambda match: u'\u2008'), # next level (re.compile(u'(?<=\d)(?=\d\d\d\u2008)'), lambda match: u'\u2008'), # next level # filtering for unicode characters that are missing on the Kindle, # try to replace them with meaningful work-arounds (re.compile(u'\u2080'), lambda match: '<span style="font-size: 40%;">0</span>'), # subscript-0 (re.compile(u'\u2081'), lambda match: '<span style="font-size: 40%;">1</span>'), # subscript-1 (re.compile(u'\u2082'), lambda match: '<span style="font-size: 40%;">2</span>'), # subscript-2 (re.compile(u'\u2083'), lambda match: '<span style="font-size: 40%;">3</span>'), # subscript-3 (re.compile(u'\u2084'), lambda match: '<span style="font-size: 40%;">4</span>'), # subscript-4 (re.compile(u'\u2085'), lambda match: '<span style="font-size: 40%;">5</span>'), # subscript-5 (re.compile(u'\u2086'), lambda match: '<span style="font-size: 40%;">6</span>'), # subscript-6 (re.compile(u'\u2087'), lambda match: '<span style="font-size: 40%;">7</span>'), # subscript-7 (re.compile(u'\u2088'), lambda match: '<span style="font-size: 40%;">8</span>'), # subscript-8 (re.compile(u'\u2089'), lambda match: '<span style="font-size: 40%;">9</span>'), # subscript-9 # better layout for the top line of each article (re.compile(u'(?<=DIE ZEIT N\u00B0 \d /) (?=\d\d)'), lambda match: ' 20'), # proper year in edition number (re.compile(u'(?<=DIE ZEIT N\u00B0 \d\d /) (?=\d\d)'), lambda match: ' 20'), # proper year in edition number (re.compile(u'(?<=>)(?=DIE ZEIT N\u00B0 \d\d / 20\d\d)'), lambda match: u' \u2013 '), # dash between category and DIE ZEIT ] def build_index(self): domain = "http://premium.zeit.de" url = domain + "/abovorteile/cgi-bin/_er_member/p4z.fpl?ER_Do=getUserData&ER_NextTemplate=login_ok" browser = self.get_browser() browser.add_password("http://premium.zeit.de", self.username, self.password) try: browser.open(url) except urllib2.HTTPError: self.report_progress(0,_("Can't login to download issue")) raise ValueError('Failed to login, check your username and password') response = browser.follow_link(text="DIE ZEIT als E-Paper") response = browser.follow_link(url_regex=re.compile('^http://contentserver.hgv-online.de/nodrm/fulfillment\\?distributor=zeit-online&orderid=zeit_online.*')) tmp = PersistentTemporaryFile(suffix='.epub') self.report_progress(0,_('downloading epub')) tmp.write(response.read()) tmp.close() zfile = zipfile.ZipFile(tmp.name, 'r') self.report_progress(0,_('extracting epub')) zfile.extractall(self.output_dir) tmp.close() index = os.path.join(self.output_dir, 'content.opf') self.report_progress(1,_('epub downloaded and extracted')) # doing regular expression filtering for path in walk('.'): (shortname, extension) = os.path.splitext(path) if extension.lower() in ('.html', '.htm', '.xhtml'): with open(path, 'r+b') as f: raw = f.read() raw = raw.decode('utf-8') for pat, func in self.preprocess_regexps: raw = pat.sub(func, raw) f.seek(0) f.truncate() f.write(raw.encode('utf-8')) # adding real cover self.report_progress(0,_('trying to download cover image (titlepage)')) self.download_cover() self.conversion_options["cover"] = self.cover_path return index # getting url of the cover def get_cover_url(self): try: inhalt = self.index_to_soup('http://www.zeit.de/inhalt') cover_url = inhalt.find('div', attrs={'class':'singlearchive clearfix'}).img['src'].replace('icon_','') except: cover_url = 'http://images.zeit.de/bilder/titelseiten_zeit/1946/001_001.jpg' return cover_url Tobias |
03-21-2011, 12:23 PM | #102 |
BioReader
Posts: 292
Karma: 42568
Join Date: Apr 2009
Location: Germany
Device: Various
|
Tobias,
danke auch von mir für deine Mühe Klaus |
03-28-2011, 05:08 AM | #103 |
Member
Posts: 20
Karma: 250
Join Date: Jul 2010
Location: Hamburg, Berlin
Device: iPad, Kindle, Italica, Stanza, Sony (diverse)
|
Hallo,
entschuldigen Sie mein langes Schweigen. Leider sind wir gerade mit vielen Themen beschäftigt. Wir arbeiten immer noch mit Hochdruck an dem .mobi-File für unseren Premiumbereich, sind aber auch gleichzeitig mit der Überarbeitung des Bereichs beschäftigt. Wir hoffen damit bald live gehen zu können und damit auch das .mobi-File anbieten zu können. Die Möglichkeit, sich das mobi an die E-Mailadresse schicken zu lassen, ist geplant aber wird nicht sofort beim Relaunch des Premiumbereichs zur Verfügung stehen. @tobias2: Danke für die Arbeit an dem Script. Wir werden uns das auch mal anschauen. Bzgl. des Fehlers bei der Erstellung (Leerzeichen/Kursiv usw.). Haben Sie dafür ein konkretes Beispiel an einem File? MfG, Christian Heise Last edited by Christian.Heise; 03-28-2011 at 05:10 AM. |
04-10-2011, 07:11 AM | #104 |
Enthusiast
Posts: 43
Karma: 136
Join Date: Mar 2011
Device: Kindle Paperwhite
|
|
04-21-2011, 05:53 AM | #105 |
Connoisseur
Posts: 52
Karma: 180
Join Date: Jul 2010
Device: Amazon Kindle 3
|
|
Thread Tools | Search this Thread |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
"Zeit-Odyssee"-Trilogie droht das "dunkle Turm"-Schicksal | ThR | E-Books | 4 | 02-10-2010 05:18 AM |
Pocketbook wurde als "Hersteller des Jahres 2009" bei lesen.net ausgewählt! | Forkosigan | Deutsches Forum | 2 | 12-30-2009 02:55 PM |
Google Editions: Auch "Kindle"-Inhalte sind geplant | Marc_liest | Amazon Kindle | 2 | 12-14-2009 05:55 AM |
libreka! unterstützt ab sofort auch "harten" Kopierschutz | mtravellerh | Deutsches Forum | 1 | 06-17-2009 04:39 PM |