|
|
Teraz jest 22 lis 2024 10:34:13
|
|
Strona 1 z 1
|
[ Posty: 10 ] |
|
Calibre i Wprost na Kindle - rozwiązanie!
Autor |
Wiadomość |
Użytkownik
Dołączył(a): 03 maja 2011 16:20:28 Posty: 8
eCzytnik: Kindle
|
Calibre i Wprost na Kindle - rozwiązanie!
Ponieważ nie mogłem się doczekać rozwiązania ze stronicowaniem Wprost na Kindle ściaganym przez Calibre, więc usiadłem, podłubałem i... zrobiłem. Problem polegał na tym, że cały artykuł jest konwertowany jako jedna wielka tabela. Kindle nie radzi sobie z wyświetlaniem komórki większej niż ekran. Najprostsze rozwiązanie: w pliku wprost.recipe dodać kod usuwający tagi table,tr,td , a później zapisac go jako własne źródło danych. | | | | Kod: preprocess_regexps = [(re.compile(r'style="display: none;"'), lambda match: ''), (re.compile(r'display: block;'), lambda match: ''), (re.compile(r'\<td\>\<tr\>\<\/table\>'), lambda match: ''), (re.compile(r'\<table .*?\>'), lambda match: ''), (re.compile(r'\<tr>'), lambda match: ''), (re.compile(r'\<td .*?\>'), lambda match: '')]
| | | | |
Poprawiony plik recipe można ściągnąć stąd: http://hotfile.com/dl/116646829/004a6a5 ... ecipe.htmlżeby dodać: zapisujemy plik na dysku, z menu wybieramy "Pobierz newsy" -> "Dodaj własne źródło newsów". klikamy "Wczytaj źródło z pliku" Przy pytaniu o nadpisanie istniejącego należy potwierdzić. Nowe Wprost będzie widoczne w drzewie wyboru pod hasłem "Dostosuj" Miłego czytania!
|
03 maja 2011 18:21:31 |
|
|
SwiatCzytnikow.pl
Dołączył(a): 14 sie 2010 11:00:21 Posty: 1873
eCzytnik: kindle, onyx, nook, kobo, pb, ipad
|
Re: Calibre i Wprost na Kindle - rozwiązanie!
Super, że Ci się udało. A możesz całą receptę wkleić po prostu w treści?
Nie mogę się przebić przez captchę w hotfile (mówi mi że błędny kod), a serwis rapideo, którego używam do takich linków twierdzi, że jest problem z plikiem.
_________________ http://swiatczytnikow.pl (dawniej: Świat Kindle) http://ebooki.swiatczytnikow.pl - (prawie) wszystkie polskie e-booki w jednym miejscu, czyli porównywarka ofert księgarni.
|
03 maja 2011 19:37:11 |
|
|
Użytkownik
Dołączył(a): 19 sty 2011 2:10:52 Posty: 11
eCzytnik: Kindle 3
|
Re: Calibre i Wprost na Kindle - rozwiązanie!
Super robota!
|
03 maja 2011 19:37:18 |
|
|
Użytkownik
Dołączył(a): 03 maja 2011 16:20:28 Posty: 8
eCzytnik: Kindle
|
Re: Calibre i Wprost na Kindle - rozwiązanie!
W zasadzie mogę ale jak sie coś przy przeklejaniu sknoci to bedzie problem. Dlatego lepiej pobrac plik Jesli jednak chcesz: | | | | Kod: #!/usr/bin/env python
__license__ = 'GPL v3' __copyright__ = '2010, matek09, matek09@gmail.com' __copyright__ = 'Modified 2011, Mariusz Wolek <mariusz_dot_wolek @ gmail dot com>'
from calibre.web.feeds.news import BasicNewsRecipe import re
class Wprost(BasicNewsRecipe): EDITION = 0 FIND_LAST_FULL_ISSUE = True EXCLUDE_LOCKED = True ICO_BLOCKED = 'http://www.wprost.pl/G/icons/ico_blocked.gif'
title = u'Wprost' __author__ = 'matek09' description = 'Weekly magazine' encoding = 'ISO-8859-2' no_stylesheets = True language = 'pl' remove_javascript = True
remove_tags_before = dict(dict(name = 'div', attrs = {'id' : 'print-layer'})) remove_tags_after = dict(dict(name = 'div', attrs = {'id' : 'print-layer'}))
'''keep_only_tags =[] keep_only_tags.append(dict(name = 'table', attrs = {'id' : 'title-table'})) keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'div-header'})) keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'div-content'})) keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'def element-autor'}))'''
preprocess_regexps = [(re.compile(r'style="display: none;"'), lambda match: ''), (re.compile(r'display: block;'), lambda match: ''), (re.compile(r'\<td\>\<tr\>\<\/table\>'), lambda match: ''), (re.compile(r'\<table .*?\>'), lambda match: ''), (re.compile(r'\<tr>'), lambda match: ''), (re.compile(r'\<td .*?\>'), lambda match: '')]
remove_tags =[] remove_tags.append(dict(name = 'div', attrs = {'class' : 'def element-date'})) remove_tags.append(dict(name = 'div', attrs = {'class' : 'def silver'})) remove_tags.append(dict(name = 'div', attrs = {'id' : 'content-main-column-right'}))
extra_css = ''' .div-header {font-size: x-small; font-weight: bold} ''' #h2 {font-size: x-large; font-weight: bold} def is_blocked(self, a): if a.findNextSibling('img') is None: return False else: return True
def find_last_issue(self): soup = self.index_to_soup('http://www.wprost.pl/archiwum/') a = 0 if self.FIND_LAST_FULL_ISSUE: ico_blocked = soup.findAll('img', attrs={'src' : self.ICO_BLOCKED}) a = ico_blocked[-1].findNext('a', attrs={'title' : re.compile('Zobacz spis tre.ci')}) else: a = soup.find('a', attrs={'title' : re.compile('Zobacz spis tre.ci')}) self.EDITION = a['href'].replace('/tygodnik/?I=', '') self.cover_url = a.img['src']
def parse_index(self): self.find_last_issue() soup = self.index_to_soup('http://www.wprost.pl/tygodnik/?I=' + self.EDITION) feeds = [] for main_block in soup.findAll(attrs={'class':'main-block-s3 s3-head head-red3'}): articles = list(self.find_articles(main_block)) if len(articles) > 0: section = self.tag_to_string(main_block) feeds.append((section, articles)) return feeds
def find_articles(self, main_block): for a in main_block.findAllNext( attrs={'style':['','padding-top: 15px;']}): if a.name in "td": break if self.EXCLUDE_LOCKED & self.is_blocked(a): continue yield { 'title' : self.tag_to_string(a), 'url' : 'http://www.wprost.pl' + a['href'], 'date' : '', 'description' : '' }
| | | | |
Ostatnio edytowano 04 maja 2011 3:40:06 przez zaslav, łącznie edytowano 2 razy
|
03 maja 2011 19:51:11 |
|
|
SwiatCzytnikow.pl
Dołączył(a): 14 sie 2010 11:00:21 Posty: 1873
eCzytnik: kindle, onyx, nook, kobo, pb, ipad
|
Re: Calibre i Wprost na Kindle - rozwiązanie!
Jakbym mógł pobrać, to bym nie prosił o wklejenie. Wszystko ładnie działa.
_________________ http://swiatczytnikow.pl (dawniej: Świat Kindle) http://ebooki.swiatczytnikow.pl - (prawie) wszystkie polskie e-booki w jednym miejscu, czyli porównywarka ofert księgarni.
|
03 maja 2011 20:36:05 |
|
|
Użytkownik
Dołączył(a): 19 paź 2010 21:00:49 Posty: 18
|
Re: Calibre i Wprost na Kindle - rozwiązanie!
Dzięki, działa super. A czy jest jakiś sposób, żeby te ostatnie numery, z których ściągał tylko pierwsze strony artykułów, jeszcze raz dociągnąć w całości? Tzn. czy można ściągnąć tylko ostatni numer, czy wcześniejsze z archiwum także?
|
03 maja 2011 20:41:41 |
|
|
Użytkownik
Dołączył(a): 03 maja 2011 16:20:28 Posty: 8
eCzytnik: Kindle
|
Re: Calibre i Wprost na Kindle - rozwiązanie!
receptura dla Wprost - pozwala pobrać dowolny udostępniony numer archiwalny z 2011 roku . Tytuł jest odpowiednio ustawiany. Proponuję zapiąć, uruchomić pobieranie i wszystko stanie sie jasne lista dostępnych numerów: http://www.wprost.pl/archiwum - to te, które nie mają ikonki 'SMS/Karta' Uwaga - to jest wersja interaktywna i nie należy jej używać do normalnego, cyklicznego pobierania! | | | | Kod: #!/usr/bin/env python
__license__ = 'GPL v3' __copyright__ = '2010, matek09, matek09@gmail.com' __copyright__ = 'Modified 2011, Mariusz Wolek <mariusz_dot_wolek at gmail dot com>'
from calibre.web.feeds.news import BasicNewsRecipe import re import sys from PyQt4 import QtGui from PyQt4 import QtCore
class Wprost(BasicNewsRecipe): EDITION = 0 FIND_LAST_FULL_ISSUE = True EXCLUDE_LOCKED = True ICO_BLOCKED = 'http://www.wprost.pl/G/icons/ico_blocked.gif'
title = u'Wprost' __author__ = 'matek09' description = 'Weekly magazine' encoding = 'ISO-8859-2' no_stylesheets = True language = 'pl' remove_javascript = True
remove_tags_before = dict(dict(name = 'div', attrs = {'id' : 'print-layer'})) remove_tags_after = dict(dict(name = 'div', attrs = {'id' : 'print-layer'}))
'''keep_only_tags =[] keep_only_tags.append(dict(name = 'table', attrs = {'id' : 'title-table'})) keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'div-header'})) keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'div-content'})) keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'def element-autor'}))'''
preprocess_regexps = [(re.compile(r'style="display: none;"'), lambda match: ''), (re.compile(r'display: block;'), lambda match: ''), (re.compile(r'\<td\>\<tr\>\<\/table\>'), lambda match: ''), (re.compile(r'\<table .*?\>'), lambda match: ''), (re.compile(r'\<tr>'), lambda match: ''), (re.compile(r'\<td .*?\>'), lambda match: '')]
remove_tags =[] remove_tags.append(dict(name = 'div', attrs = {'class' : 'def element-date'})) remove_tags.append(dict(name = 'div', attrs = {'class' : 'def silver'})) remove_tags.append(dict(name = 'div', attrs = {'id' : 'content-main-column-right'}))
extra_css = ''' .div-header {font-size: x-small; font-weight: bold} ''' #h2 {font-size: x-large; font-weight: bold} def is_blocked(self, a): if a.findNextSibling('img') is None: return False else: return True
def find_last_issue(self): soup = self.index_to_soup('http://www.wprost.pl/archiwum/') a = 0 app = QtGui.QApplication(sys.argv) widget = QtGui.QWidget() numer_get, ok=QtGui.QInputDialog.getInteger(widget, 'Ktory numer z archiwum?', 'Numer z archiwum: 1-ostatni, 2-przedostatni etc',1,min=1,max=52)
#take value if ok was pressed otherwise use default value if ok: numer=numer_get self.title = self.title + ' archiwum ' + str(numer) else: numer=1
pages = range(1, numer) if self.FIND_LAST_FULL_ISSUE: ico_blocked = soup.findAll('img', attrs={'src' : self.ICO_BLOCKED}) a = ico_blocked[-1].findNext('a', attrs={'title' : re.compile('Zobacz spis tre.ci')}) for page in pages: a = a.findNext('a', attrs={'title' : re.compile('Zobacz spis tre.ci')}) else: a = soup.find('a', attrs={'title' : re.compile('Zobacz spis tre.ci')}) if numer > 1: pref,data=a.img['alt'].split('numeru') self.title = u'WPROST - numer'+data self.EDITION = a['href'].replace('/tygodnik/?I=', '') self.cover_url = a.img['src']
def parse_index(self): self.find_last_issue() soup = self.index_to_soup('http://www.wprost.pl/tygodnik/?I=' + self.EDITION) feeds = [] for main_block in soup.findAll(attrs={'class':'main-block-s3 s3-head head-red3'}): articles = list(self.find_articles(main_block)) if len(articles) > 0: section = self.tag_to_string(main_block) feeds.append((section, articles)) return feeds
def find_articles(self, main_block): for a in main_block.findAllNext( attrs={'style':['','padding-top: 15px;']}): if a.name in "td": break if self.EXCLUDE_LOCKED & self.is_blocked(a): continue yield { 'title' : self.tag_to_string(a), 'url' : 'http://www.wprost.pl' + a['href'], 'date' : '', 'description' : '' }
| | | | |
|
04 maja 2011 3:41:04 |
|
|
Użytkownik
Dołączył(a): 19 paź 2010 21:00:49 Posty: 18
|
Re: Calibre i Wprost na Kindle - rozwiązanie!
Wspaniale, dzięki wielkie. A co zrobić, żeby pobrać numery z 2010? Próbowałem pogrzebać w kodzie i zmienić linijkę: soup = self.index_to_soup('http://www.wprost.pl/archiwum/'), ale nie działa. Podpowiesz jak to zrobić?
|
04 maja 2011 19:01:47 |
|
|
Użytkownik
Dołączył(a): 03 maja 2011 16:20:28 Posty: 8
eCzytnik: Kindle
|
Re: Calibre i Wprost na Kindle - rozwiązanie!
na początku trzeba zmienić FIND_LAST_FULL_ISSUE = Truena FIND_LAST_FULL_ISSUE = Falsea dalej podmienić funkcje find_last_issue | | | | Kod: def find_last_issue(self): soup = self.index_to_soup('http://www.wprost.pl/archiwum/?Y=2010') a = 0 app = QtGui.QApplication(sys.argv) widget = QtGui.QWidget() numer_get, ok=QtGui.QInputDialog.getInteger(widget, 'Ktory numer z archiwum?', 'Numer z archiwum: 1-ostatni, 2-przedostatni etc',1,min=1,max=52) if ok: numer=numer_get else: numer=1
pages = range(1, numer) if self.FIND_LAST_FULL_ISSUE: ico_blocked = soup.findAll('img', attrs={'src' : self.ICO_BLOCKED}) a = ico_blocked[-1].findNext('a', attrs={'title' : re.compile('Zobacz spis tre.ci')}) else: a = soup.find('a', attrs={'title' : re.compile('Zobacz spis tre.ci')}) for page in pages: a = a.findNext('a', attrs={'title' : re.compile('Zobacz spis tre.ci')}) pref,data=a.img['alt'].split('numeru') self.title = u'WPROST - numer'+data self.EDITION = a['href'].replace('/tygodnik/?I=', '') self.cover_url = a.img['src']
| | | | |
dla 2009 powinna wystarczyć zmiana soup = self.index_to_soup('http://www.wprost.pl/archiwum/?Y= 2010') na soup = self.index_to_soup('http://www.wprost.pl/archiwum/?Y= 2009') jeśli chcesz dalej sam próbować, to porównaj zmiany, zajrzyj tu http://calibre-ebook.com/user_manual/news.html i tu http://calibre-ebook.com/user_manual/news_recipe.html - może coś się wyjaśni
|
04 maja 2011 20:02:40 |
|
|
Użytkownik
Dołączył(a): 19 paź 2010 21:00:49 Posty: 18
|
Re: Calibre i Wprost na Kindle - rozwiązanie!
Dzięki zaslav, dobra robota. A czy da się wpleść podobny mechanizm do ściągania numerów archiwalnych Polityki albo Newsweeka?
|
07 maja 2011 18:52:26 |
|
|
|
Strona 1 z 1
|
[ Posty: 10 ] |
|
Kto przegląda forum |
Użytkownicy przeglądający to forum: Brak zalogowanych użytkowników i 0 gości |
|
Nie możesz rozpoczynać nowych wątków Nie możesz odpowiadać w wątkach Nie możesz edytować swoich postów Nie możesz usuwać swoich postów
|
|
|
|