niedziela, 5 września 2010

calibre własna recipe

W poprzednim artykule opisaliśmy jak łatwo można dodać kanał RSS. Tworzenie własnych źródeł jest bardzo proste jeśli ktoś miał w ogóle do czynienia z HTML. Przełączenie calibre w tryb zaawansowany umożliwia ingerencje w treść ściąganych news'ów za pomocą kilku prostych sztuczek.

Do szukania niewygodnych elementów w kodzie html można użyć np Firebug'a - następnie należy dodać dwie sekcje: w jednej deklarujemy co pobieramy:
keep_only_tags = [
dict(name='div', attrs={'class':'art'})
]
a w drugiej co ma zostać wycięte
remove_tags = [
dict(name='div', attrs={'class':'tagi'}),
]
W przypadku gdy artykułu są wielostronicowe należy poszukać wersji do druku
przykład1 - jeśli wersja do druku różni się tylko końcówką
http://www.adres.pl/fajna-strona.html
http://www.adres.pl/fajna-strona.html/do-druku

to wystarczy dodać
def print_version(self, url):
return url + '/do-druku'
przykład2 - jeśli różni się środkiem
http://www.adres.pl/czytaj/fajna-strona.html
http://www.adres.pl/drukuj/fajna-strona.html

to trzeba zastąpić czytaj na drukuj
def print_version(self, url):
return url.replace('czytaj', 'drukuj')
przykład3 - jeśli w środku dodano przekierowanie
http://www.adres.pl/fajna-strona.html
http://www.adres.pl/drukuj/fajna-strona.html

to dzielimy url - jako znak podziału musimy wybrać / i liczymy po ilu / chcemy podzielić a potem wstawić i na końcu po ilu połączyć [podział i łączenie określamy liczbą 3]
def print_version(self,url):
segments = url.split('/')
printURL = '/'.join(segments[0:3]) + '/drukuj/' + '/'.join(segments[3:])
return printURL
Nazwy kanałów możemy określi na dwa sposoby
przykład1 - calibre pobiera oryginalne nazwy kanału
feeds = []
feeds.append(u'http://www.parkiet.com/rss/7.html'),
przykład2 - określamy własne nazwy kanału jeśli oryginalne są za długie
feeds = [
('Pierwsza strona', 'http://www.adres.com/rss/1.html'),
('Druga strona', 'http://www.adres.com/rss/2.html'),
('Sport', 'http://www.adres.com/rss/5.html'),
]

Brak komentarzy:

Prześlij komentarz