From bcd4a9d98cb39c0365905fae79329653109a1337 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 21 Nov 2008 18:17:41 -0800 Subject: [PATCH] IGN:More serbian recipes --- src/calibre/web/feeds/recipes/__init__.py | 1 + src/calibre/web/feeds/recipes/b92.py | 98 ++++++++++++++--------- src/calibre/web/feeds/recipes/blic.py | 49 ++++++++++++ src/calibre/web/feeds/recipes/danas.py | 57 +++++++++++++ src/calibre/web/feeds/recipes/novosti.py | 51 ++++++++++++ src/calibre/web/feeds/recipes/politika.py | 89 ++++++++++++-------- src/calibre/web/feeds/recipes/vreme.py | 76 ++++++++++++++++++ 7 files changed, 350 insertions(+), 71 deletions(-) create mode 100644 src/calibre/web/feeds/recipes/blic.py create mode 100644 src/calibre/web/feeds/recipes/danas.py create mode 100644 src/calibre/web/feeds/recipes/novosti.py create mode 100644 src/calibre/web/feeds/recipes/vreme.py diff --git a/src/calibre/web/feeds/recipes/__init__.py b/src/calibre/web/feeds/recipes/__init__.py index 736d2a2249..7a7d9029fd 100644 --- a/src/calibre/web/feeds/recipes/__init__.py +++ b/src/calibre/web/feeds/recipes/__init__.py @@ -14,6 +14,7 @@ recipe_modules = [ 'politika', 'moscow_times', 'latimes', 'japan_times', 'san_fran_chronicle', 'demorgen_be', 'de_standaard', 'ap', 'barrons', 'chr_mon', 'cnn', 'faznet', 'jpost', 'jutarnji', 'nasa', 'reuters', 'spiegelde', 'wash_post', 'zeitde', + 'blic', 'novosti', 'danas', 'vreme', ] import re, imp, inspect, time, os diff --git a/src/calibre/web/feeds/recipes/b92.py b/src/calibre/web/feeds/recipes/b92.py index 2f160b8892..76ca5fb424 100644 --- a/src/calibre/web/feeds/recipes/b92.py +++ b/src/calibre/web/feeds/recipes/b92.py @@ -1,38 +1,60 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2008, Darko Miletic ' -''' -b92.net -''' - -from calibre.web.feeds.news import BasicNewsRecipe - -class B92(BasicNewsRecipe): - title = u'B92' - __author__ = 'Darko Miletic' - description = 'Dnevne vesti iz Srbije i sveta' - oldest_article = 7 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - - remove_tags_after = dict(name='div', attrs={'class':'gas'}) - remove_tags = [ - dict(name='div' , attrs={'class':'interaction clearfix' }) - ,dict(name='div' , attrs={'class':'gas' }) - ,dict(name='ul' , attrs={'class':'comment-nav' }) - ,dict(name='table', attrs={'class':'pages-navigation-form'}) - ] - - feeds = [ - (u'Vesti' , u'http://www.b92.net/info/rss/vesti.xml' ) - ,(u'Kultura' , u'http://www.b92.net/info/rss/kultura.xml' ) - ,(u'Automobili', u'http://www.b92.net/info/rss/automobili.xml') - ,(u'Zivot' , u'http://www.b92.net/info/rss/zivot.xml' ) - ,(u'Tehnopolis', u'http://www.b92.net/info/rss/tehnopolis.xml') - ,(u'Biz' , u'http://www.b92.net/info/rss/biz.xml' ) - ] - - def print_version(self, url): - return url + '&version=print' +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2008, Darko Miletic ' +''' +b92.net +''' +import locale +from calibre.web.feeds.news import BasicNewsRecipe + +class B92(BasicNewsRecipe): + title = u'B92' + __author__ = 'Darko Miletic' + description = 'Dnevne vesti iz Srbije i sveta' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + use_embedded_content = False + #Locale setting to get appropriate date/month values in Serbian if possible + try: + #Windows seting for locale + locale.setlocale(locale.LC_TIME,'Serbian (Latin)') + except locale.Error: + #Linux setting for locale -- choose one appropriate for your distribution + try: + locale.setlocale(locale.LC_TIME,'sr_YU') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_CS@Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr@Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_RS') + except locale.Error: + locale.setlocale(locale.LC_TIME,'C') + + remove_tags_after = dict(name='div', attrs={'class':'gas'}) + remove_tags = [ + dict(name='div' , attrs={'class':'interaction clearfix' }) + ,dict(name='div' , attrs={'class':'gas' }) + ,dict(name='ul' , attrs={'class':'comment-nav' }) + ,dict(name='table', attrs={'class':'pages-navigation-form'}) + ] + + feeds = [ + (u'Vesti' , u'http://www.b92.net/info/rss/vesti.xml' ) + ,(u'Kultura' , u'http://www.b92.net/info/rss/kultura.xml' ) + ,(u'Automobili', u'http://www.b92.net/info/rss/automobili.xml') + ,(u'Zivot' , u'http://www.b92.net/info/rss/zivot.xml' ) + ,(u'Tehnopolis', u'http://www.b92.net/info/rss/tehnopolis.xml') + ,(u'Biz' , u'http://www.b92.net/info/rss/biz.xml' ) + ] + + def print_version(self, url): + return url + '&version=print' diff --git a/src/calibre/web/feeds/recipes/blic.py b/src/calibre/web/feeds/recipes/blic.py new file mode 100644 index 0000000000..2cfcab25c8 --- /dev/null +++ b/src/calibre/web/feeds/recipes/blic.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2008, Darko Miletic ' +''' +blic.rs +''' +import locale +from calibre.web.feeds.news import BasicNewsRecipe + +class Blic(BasicNewsRecipe): + title = u'Blic' + __author__ = 'Darko Miletic' + description = 'Vesti' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + use_embedded_content = False + timefmt = ' [%A, %d %B, %Y]' + #Locale setting to get appropriate date/month values in Serbian if possible + try: + #Windows seting for locale + locale.setlocale(locale.LC_TIME,'Serbian (Latin)') + except locale.Error: + #Linux setting for locale -- choose one appropriate for your distribution + try: + locale.setlocale(locale.LC_TIME,'sr_YU') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_CS@Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr@Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_RS') + except locale.Error: + locale.setlocale(locale.LC_TIME,'C') + + keep_only_tags = [ dict(name='div', attrs={'class':'single_news'}) ] + + feeds = [ (u'Vesti', u'http://www.blic.rs/rssall.php')] + + def print_version(self, url): + start_url, question, rest_url = url.partition('?') + return u'http://www.blic.rs/_print.php?' + rest_url diff --git a/src/calibre/web/feeds/recipes/danas.py b/src/calibre/web/feeds/recipes/danas.py new file mode 100644 index 0000000000..165d353a91 --- /dev/null +++ b/src/calibre/web/feeds/recipes/danas.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2008, Darko Miletic ' +''' +danas.rs +''' +import locale +from calibre.web.feeds.news import BasicNewsRecipe + +class Danas(BasicNewsRecipe): + title = u'Danas' + __author__ = 'Darko Miletic' + description = 'Vesti' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = False + use_embedded_content = False + timefmt = ' [%A, %d %B, %Y]' + #Locale setting to get appropriate date/month values in Serbian if possible + try: + #Windows seting for locale + locale.setlocale(locale.LC_TIME,'Serbian (Latin)') + except locale.Error: + #Linux setting for locale -- choose one appropriate for your distribution + try: + locale.setlocale(locale.LC_TIME,'sr_YU') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_CS@Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr@Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_RS') + except locale.Error: + locale.setlocale(locale.LC_TIME,'C') + + keep_only_tags = [ dict(name='div', attrs={'id':'left'}) ] + remove_tags_after = dict(name='div', attrs={'id':'comments'}) + remove_tags = [ + dict(name='div', attrs={'class':'width_1_4'}) + ,dict(name='div', attrs={'class':'metaClanka'}) + ,dict(name='div', attrs={'id':'comments'}) + ,dict(name='div', attrs={'class':'baner'}) + ] + + + + feeds = [ (u'Vesti', u'http://www.danas.rs/rss/rss.asp')] + +# def print_version(self, url): +# return url + '&action=print' diff --git a/src/calibre/web/feeds/recipes/novosti.py b/src/calibre/web/feeds/recipes/novosti.py new file mode 100644 index 0000000000..404126aea2 --- /dev/null +++ b/src/calibre/web/feeds/recipes/novosti.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2008, Darko Miletic ' +''' +novosti.rs +''' +import locale +from calibre.web.feeds.news import BasicNewsRecipe + +class Novosti(BasicNewsRecipe): + title = u'Vecernje Novosti' + __author__ = u'Darko Miletic' + description = u'Vesti' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + use_embedded_content = False + timefmt = ' [%A, %d %B, %Y]' + #Locale setting to get appropriate date/month values in Serbian if possible + try: + #Windows seting for locale + locale.setlocale(locale.LC_TIME,'Serbian (Latin)') + except locale.Error: + #Linux setting for locale -- choose one appropriate for your distribution + try: + locale.setlocale(locale.LC_TIME,'sr_YU') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_CS@Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr@Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_RS') + except locale.Error: + locale.setlocale(locale.LC_TIME,'C') + + + keep_only_tags = [ dict(name='div', attrs={'class':'jednaVest'}) ] + remove_tags_after = dict(name='div', attrs={'class':'info_bottom'}) + remove_tags = [ + dict(name='div', attrs={'class':'info'}) + ,dict(name='div', attrs={'class':'info_bottom'}) + ] + + feeds = [ (u'Vesti', u'http://www.novosti.rs/php/vesti/rss.php')] diff --git a/src/calibre/web/feeds/recipes/politika.py b/src/calibre/web/feeds/recipes/politika.py index 7debb45368..d2dd52a2fb 100644 --- a/src/calibre/web/feeds/recipes/politika.py +++ b/src/calibre/web/feeds/recipes/politika.py @@ -1,33 +1,56 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2008, Darko Miletic ' -''' -politika.rs -''' - -from calibre.web.feeds.news import BasicNewsRecipe - -class Politika(BasicNewsRecipe): - title = u'Politika Online' - __author__ = 'Darko Miletic' - description = 'Najstariji dnevni list na Balkanu' - oldest_article = 7 - max_articles_per_feed = 100 - no_stylesheets = True - extra_css = '.content_center_border {text-align: left;}' - use_embedded_content = False - - remove_tags_before = dict(name='div', attrs={'class':'content_center_border'}) - remove_tags_after = dict(name='div', attrs={'class':'datum_item_details'}) - - feeds = [ - (u'Politika' , u'http://www.politika.rs/rubrike/Politika/index.1.lt.xml' ) - ,(u'Svet' , u'http://www.politika.rs/rubrike/Svet/index.1.lt.xml' ) - ,(u'Redakcijski komentari', u'http://www.politika.rs/rubrike/redakcijski-komentari/index.1.lt.xml') - ,(u'Pogledi' , u'http://www.politika.rs/pogledi/index.lt.xml' ) - ,(u'Pogledi sa strane' , u'http://www.politika.rs/rubrike/Pogledi-sa-strane/index.1.lt.xml' ) - ,(u'Tema dana' , u'http://www.politika.rs/rubrike/tema-dana/index.1.lt.xml' ) - ,(u'Kultura' , u'http://www.politika.rs/rubrike/Kultura/index.1.lt.xml' ) - ,(u'Zivot i stil' , u'http://www.politika.rs/rubrike/zivot-i-stil/index.1.lt.xml' ) - ] +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2008, Darko Miletic ' +''' +politika.rs +''' +import locale +from calibre.web.feeds.news import BasicNewsRecipe + +class Politika(BasicNewsRecipe): + title = u'Politika Online' + __author__ = 'Darko Miletic' + description = 'Najstariji dnevni list na Balkanu' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + extra_css = '.content_center_border {text-align: left;}' + use_embedded_content = False + timefmt = ' [%A, %d %B, %Y]' + #Locale setting to get appropriate date/month values in Serbian if possible + try: + #Windows seting for locale + locale.setlocale(locale.LC_TIME,'Serbian (Latin)') + except locale.Error: + #Linux setting for locale -- choose one appropriate for your distribution + try: + locale.setlocale(locale.LC_TIME,'sr_YU') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_CS@Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr@Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_RS') + except locale.Error: + locale.setlocale(locale.LC_TIME,'C') + + remove_tags_before = dict(name='div', attrs={'class':'content_center_border'}) + remove_tags_after = dict(name='div', attrs={'class':'datum_item_details'}) + + feeds = [ + (u'Politika' , u'http://www.politika.rs/rubrike/Politika/index.1.lt.xml' ) + ,(u'Svet' , u'http://www.politika.rs/rubrike/Svet/index.1.lt.xml' ) + ,(u'Redakcijski komentari', u'http://www.politika.rs/rubrike/redakcijski-komentari/index.1.lt.xml') + ,(u'Pogledi' , u'http://www.politika.rs/pogledi/index.lt.xml' ) + ,(u'Pogledi sa strane' , u'http://www.politika.rs/rubrike/Pogledi-sa-strane/index.1.lt.xml' ) + ,(u'Tema dana' , u'http://www.politika.rs/rubrike/tema-dana/index.1.lt.xml' ) + ,(u'Kultura' , u'http://www.politika.rs/rubrike/Kultura/index.1.lt.xml' ) + ,(u'Zivot i stil' , u'http://www.politika.rs/rubrike/zivot-i-stil/index.1.lt.xml' ) + ] diff --git a/src/calibre/web/feeds/recipes/vreme.py b/src/calibre/web/feeds/recipes/vreme.py new file mode 100644 index 0000000000..411562f010 --- /dev/null +++ b/src/calibre/web/feeds/recipes/vreme.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2008, Darko Miletic ' +''' +vreme.com +''' + +import string +import locale +from calibre import strftime +from calibre.web.feeds.recipes import BasicNewsRecipe + +class Vreme(BasicNewsRecipe): + + title = 'Vreme' + __author__ = 'Darko Miletic' + description = 'Politicki Nedeljnik Srbije' + timefmt = ' [%A, %d %B, %Y]' + no_stylesheets = True + simultaneous_downloads = 1 + delay = 1 + needs_subscription = True + INDEX = 'http://www.vreme.com' + LOGIN = 'http://www.vreme.com/account/index.php' + #Locale setting to get appropriate date/month values in Serbian if possible + try: + #Windows seting for locale + locale.setlocale(locale.LC_TIME,'Serbian (Latin)') + except locale.Error: + #Linux setting for locale -- choose one appropriate for your distribution + try: + locale.setlocale(locale.LC_TIME,'sr_YU') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_CS@Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr@Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_Latn') + except locale.Error: + try: + locale.setlocale(locale.LC_TIME,'sr_RS') + except locale.Error: + locale.setlocale(locale.LC_TIME,'C') + + def get_browser(self): + br = BasicNewsRecipe.get_browser() + if self.username is not None and self.password is not None: + br.open(self.LOGIN) + br.select_form(name='f') + br['username'] = self.username + br['password'] = self.password + br.submit() + return br + + def parse_index(self): + articles = [] + soup = self.index_to_soup(self.INDEX) + + for item in soup.findAll('span', attrs={'class':'toc2'}): + feed_link = item.find('a') + if feed_link and feed_link.has_key('href'): + url = self.INDEX+feed_link['href']+'&print=yes' + title = self.tag_to_string(feed_link) + date = strftime('%A, %d %B, %Y') + description = '' + articles.append({ + 'title':title, + 'date':date, + 'url':url, + 'description':description + }) + return [(soup.head.title.string, articles)] \ No newline at end of file