From acf525d22dded0d84abaf1047af676676102f58e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 7 Dec 2008 11:53:00 -0800 Subject: [PATCH] Updated serbian and croation recipes --- src/calibre/gui2/images/news/b92.png | Bin 0 -> 413 bytes src/calibre/gui2/images/news/blic.png | Bin 0 -> 738 bytes src/calibre/gui2/images/news/danas.png | Bin 0 -> 709 bytes src/calibre/gui2/images/news/jutarnji.png | Bin 0 -> 988 bytes src/calibre/gui2/images/news/novosti.png | Bin 0 -> 281 bytes src/calibre/gui2/images/news/politika.png | Bin 0 -> 362 bytes src/calibre/web/feeds/recipes/b92.py | 4 +- src/calibre/web/feeds/recipes/blic.py | 4 +- src/calibre/web/feeds/recipes/danas.py | 9 +-- src/calibre/web/feeds/recipes/jutarnji.py | 86 +++++++++++----------- src/calibre/web/feeds/recipes/novosti.py | 4 +- src/calibre/web/feeds/recipes/nspm.py | 33 +++++++++ src/calibre/web/feeds/recipes/politika.py | 5 +- src/calibre/web/feeds/recipes/vreme.py | 34 ++++++--- 14 files changed, 119 insertions(+), 60 deletions(-) create mode 100644 src/calibre/gui2/images/news/b92.png create mode 100644 src/calibre/gui2/images/news/blic.png create mode 100644 src/calibre/gui2/images/news/danas.png create mode 100644 src/calibre/gui2/images/news/jutarnji.png create mode 100644 src/calibre/gui2/images/news/novosti.png create mode 100644 src/calibre/gui2/images/news/politika.png create mode 100644 src/calibre/web/feeds/recipes/nspm.py diff --git a/src/calibre/gui2/images/news/b92.png b/src/calibre/gui2/images/news/b92.png new file mode 100644 index 0000000000000000000000000000000000000000..864c2e4e8ebb324087ab828d8d00e3268409a76b GIT binary patch literal 413 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*VRoMWCYjv*GOmrnBLJ8Zz=GJo|w?K@`*jBAW` zd3Zebzp_g9BzONu24+=-AI$x)kBTvVTid|6!pWt+;h9}w=X0;CUW}nxYZ-QM*d4ht zwV~rpzq^?6>vyqD%&NXyls9Z`>sEM|bNd==|4qgd=R}fPR=tbmzjIYHX`8OqMgHY6 z-xbs+#^oq&kBQy7VAcCe%7^Zr7n{`Gv2Ih|M5EItVaBVp)^7b-_~!cE?`OD$&v)hd z`b^(^r#ZTI4$GIk7-c)Z#E2Q9<*w=)XKop%Gd;=VeZFO Qtw0S7p00i_>zopr0C+o;%m4rY literal 0 HcmV?d00001 diff --git a/src/calibre/gui2/images/news/blic.png b/src/calibre/gui2/images/news/blic.png new file mode 100644 index 0000000000000000000000000000000000000000..85e146b4c5c26ddebfd3f1a630ebb06a99845d6e GIT binary patch literal 738 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87?`*{T^vI!PWMjs%?=I}Xq#X2by@3`*=lAh zx5i2w^<5xR8Xi)zkV7ofMPtV#z1TZTFSzElz@c zrKczDO7%?6_O7donY342U)A31n%kj^CvIN;8|1h2smhfs)021hD7sGIjTKK{8?s1r z-MqY*=4LN_z4aSr=qKDZW0zdIMZq4_rHU+`(k>^)C$@US40`zh>TO* zlz;iEe89F->uc>?&y~Jwv=#{xX4p~pTkO}>>>C#~Zpq*F`sV!mM%4C#^enG`tvOq@ zzPq{IGQ0lrD*yA>A1ex4ow{yp%e}fM-`-2*a^}4Le&aw54f*x!9)FW$GrhbdZvAJ= zsgG73c6|DPp?-1U4vVQ=@!{c}Pd?jh)2WKy^j(sTPjKR1m!?yHY~24J_5AS4%I>g& zME_@Lqq)ZCv;-!s0HzVu64!{5!B{QuOQ-i6Mp#cy9?OJ_KrD@O1TaS?83{1OO9}F*g7J literal 0 HcmV?d00001 diff --git a/src/calibre/gui2/images/news/danas.png b/src/calibre/gui2/images/news/danas.png new file mode 100644 index 0000000000000000000000000000000000000000..8acbff1b7df8a0c746617bfd5936c04b5132f0b6 GIT binary patch literal 709 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87#QDqx;TbdoL)NFH(NMRqIJG?dD^5jk6_`; zQb)yRhitqgBqAOwwpBq$goRZ+Z>d64{elJSME^HvADn6}cxR`8{ef1|(u-P6ZnJ&~ zPP%d?WzPE7NlCXFS{=^6JM`4@ef7D$PMS+^G=4D%s>$BvlE^YELEDds(|OW%o+a!4 z$_M1`klFD~qR!G_C-)x?9^NRuE7lXtG<|vuY_kGq-aUNva_|XVhKnUNrH?Oi@yFLJ z-L;KTlR0Pp$E0bKFIUd1UG@3n*C?LS8oqOVA4@Xl?N#<<*m7pVxw+i#J4!Rza^!tD zw;jJ()L1?J^qPA%2Y;SYyujk~G$J-G{ol9G_gMBGo#V&w|JxPQS+e`fGhg0$DDkG% z@QH7)x_q60=2lLQMQ=}QEb;xahc%ADsUh{#t72wf4imP3Llc(pa4IeksZcDv?X1bh z%%H(=(YB-}M&G4_k+DxaX}6t+VEf8!pC>_oC6@?o$`HbRa+G^56ovM zi=H!6^7Z)zPg!z=l9U_tOWR+6zwhMKB!9?jt~R&osmC*aD6ZWeQ~K(i_dVU~yF|S> zoKC2mOmF`YnS1cNS%lgQD{=8In+TgewIp`ipsu#Z#m&ygu#z=8HLB%;U0O-1j3kZOdk~Py!|c)e_f;lH{V)#FA9q6d=K1 zWME*SYiOivU>;&tbzm7#%^F;Fu|!{J@o RTY(xFJYD@<);T3K0RRbp7XttQ literal 0 HcmV?d00001 diff --git a/src/calibre/gui2/images/news/jutarnji.png b/src/calibre/gui2/images/news/jutarnji.png new file mode 100644 index 0000000000000000000000000000000000000000..9688fef885b909cbae7c1ecf44d7ea283e226cf8 GIT binary patch literal 988 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87?@c-T^vI!PRCxd&XEZfIrj1Y-tw}v@@sL` z*M;XS_!=dBv_UXXM=+2{^pH@1%c2F2MjF1mL>xGov_1TsJ1cg!v~jU;wA@i>)aXcZ zZ{VnVb4#Tx=l$v3n~jU#pIN#=NN3-_<;5lYlr1J+UHdkCkw%rb`$g8)qoG2osvM4L zDo={+xu5EsyPAFfjycnVXKBHa+4lRk*Kbe=b~Z3Owc`Ebot9H3B{*iEO|Vee))2nK zE`0r7P6fs_TTj0}JC}8_aMLG=ea{tT+jX8N$@0(Cf6zajQ;n%hsAT=`W4*n{Oc^#_ zyAk;#dGW`{ETJsNR>AW}zt{d*EcUZm_QZ3>fXuFy^A_vJzRSsOz9DLro{q8;M za{lN!b9n?BURzkKYcJn$_(uQy=I2cU3wYoDyw1@ql{rnYG)ly4sq495@{P zEIl*@tr9JMi_Co<*LsCP@@;xt+V+^G_pOc;%BUE;DbqjoH&0ws#fjs{$AcTMB{9C< zb>Y>*eg9hTo!!q_T4UqDF(pXlFr%NnOi)3rQT9nA?=BayTAy>Sck&k5{Ss5+)j!Ii z`TuncN6$42HQ&yyie{ReOc!se@7U*2{YxfsV?__+5{sWk$D`B4W(IdH)==sZ{^exw z?_G6I?GMeXOI4Q`{;`joHgTEeF^LI6k&?0tZ_8icR4(Jcy`+9^a?Si_Q?*xwy=L_B zR(-=MbJWmpVM9&Mt}6Y$!F*G-}GXY0{LDlsCWwP z+N-R!-2bt7cYgQPv&)P!e_frfZGSfZt$fk4ptMIJt&`pxPYQlg#Fr=2>~|rm*hIo0 zPVe)HH;?C^xtcwl^}wxb+t&B~eDpiMzWU>}w8>4+jSPd9OesI9-FhTx3)^f%+tAds zw6w?ruf<=P{$4N}XhncmZ0?=Adv|TSx8mJa>m|n~l&h%jKQME_p_?mL-gd0~^H+V@ z>eJuv?!T@ZKjZwxm2$w`p<3b^QIcGgnpl#mn*t;lj0_AcbPbJk4a`Ff4XsQ}txPR- w4J@n-4EUG$=D;-M=BH$)Rbpx|wK6icGPHnb2)BCI0@T3Z>FVdQ&MBb@0IK4oV*mgE literal 0 HcmV?d00001 diff --git a/src/calibre/gui2/images/news/novosti.png b/src/calibre/gui2/images/news/novosti.png new file mode 100644 index 0000000000000000000000000000000000000000..93eaa9d66738f7e0ac6a44d7e0e933117dd43739 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*VR94Ai~#}JFt$q5St3=T>Bmz4OIJTc{nDqpg3 z;91re>k^JUv~n}C71^EefH&cwYNPI#m#>-Jm@-?k^du^n+3fTKco;072*{+wtP=s6 zrdr|}QIcGgnpl#mn*t;lj0_AcbPbJk4a`Ff4XsQ}txPR-4J@n-4EUG$=D;-M=BH$) fRbpx|wF2rfFo0+<%@A`0YGCkm^>bP0l+XkKJKIc4 literal 0 HcmV?d00001 diff --git a/src/calibre/gui2/images/news/politika.png b/src/calibre/gui2/images/news/politika.png new file mode 100644 index 0000000000000000000000000000000000000000..4ac9f0f101f33d73b82dc5d76e022684962f7f16 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*VRoXMUpjv*GOp9VW}9X8;ZJa?0wO5+^2{MYX< zmGf;YE`KpkV9Q|zgJ&X_Wz!8jH|VOY;qdI@=wtCb@%xD)gJ5G+>r#;?Gwg~qkFsr) zcrqg(+m(Zn;nv@({k4V?RbN83@;;eSAmzS0-+#XPE`|cVW&96fdVbyd7ub7sQ!>*kF*TT485&y|8$dMd7dki} PsDZ)L)z4*}Q$iB}iRgP( literal 0 HcmV?d00001 diff --git a/src/calibre/web/feeds/recipes/b92.py b/src/calibre/web/feeds/recipes/b92.py index 40496b0ef1..c1874946ad 100644 --- a/src/calibre/web/feeds/recipes/b92.py +++ b/src/calibre/web/feeds/recipes/b92.py @@ -5,7 +5,7 @@ __copyright__ = '2008, Darko Miletic ' ''' b92.net ''' -import locale +import string,re from calibre.web.feeds.news import BasicNewsRecipe class B92(BasicNewsRecipe): @@ -16,6 +16,8 @@ class B92(BasicNewsRecipe): max_articles_per_feed = 100 no_stylesheets = True use_embedded_content = False + + preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] remove_tags_after = dict(name='div', attrs={'class':'gas'}) remove_tags = [ diff --git a/src/calibre/web/feeds/recipes/blic.py b/src/calibre/web/feeds/recipes/blic.py index 02683e7f88..9d89992eb2 100644 --- a/src/calibre/web/feeds/recipes/blic.py +++ b/src/calibre/web/feeds/recipes/blic.py @@ -5,7 +5,7 @@ __copyright__ = '2008, Darko Miletic ' ''' blic.rs ''' -import locale +import string,re from calibre.web.feeds.news import BasicNewsRecipe class Blic(BasicNewsRecipe): @@ -18,6 +18,8 @@ class Blic(BasicNewsRecipe): use_embedded_content = False timefmt = ' [%A, %d %B, %Y]' + preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] + keep_only_tags = [ dict(name='div', attrs={'class':'single_news'}) ] feeds = [ (u'Vesti', u'http://www.blic.rs/rssall.php')] diff --git a/src/calibre/web/feeds/recipes/danas.py b/src/calibre/web/feeds/recipes/danas.py index 0d5839e9d3..554945c7b5 100644 --- a/src/calibre/web/feeds/recipes/danas.py +++ b/src/calibre/web/feeds/recipes/danas.py @@ -5,7 +5,7 @@ __copyright__ = '2008, Darko Miletic ' ''' danas.rs ''' -import locale +import string,re from calibre.web.feeds.news import BasicNewsRecipe class Danas(BasicNewsRecipe): @@ -14,10 +14,12 @@ class Danas(BasicNewsRecipe): description = 'Vesti' oldest_article = 7 max_articles_per_feed = 100 - no_stylesheets = False + no_stylesheets = True use_embedded_content = False timefmt = ' [%A, %d %B, %Y]' + preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] + keep_only_tags = [ dict(name='div', attrs={'id':'left'}) ] remove_tags_after = dict(name='div', attrs={'id':'comments'}) remove_tags = [ @@ -30,6 +32,3 @@ class Danas(BasicNewsRecipe): 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/jutarnji.py b/src/calibre/web/feeds/recipes/jutarnji.py index d1c52b3fc2..b109b2720e 100644 --- a/src/calibre/web/feeds/recipes/jutarnji.py +++ b/src/calibre/web/feeds/recipes/jutarnji.py @@ -1,42 +1,46 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2008, Darko Miletic ' -''' -jutarnji.hr -''' - -from calibre.web.feeds.news import BasicNewsRecipe - -class Jutarnji(BasicNewsRecipe): - title = u'Jutarnji' - __author__ = u'Darko Miletic' - description = u'Hrvatski portal' - oldest_article = 7 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - encoding = 'cp1250' - - remove_tags = [dict(name='embed')] - - feeds = [ - (u'Naslovnica' , u'http://www.jutarnji.hr/rss' ) - ,(u'Sport' , u'http://www.jutarnji.hr/sport/rss' ) - ,(u'Jutarnji2' , u'http://www.jutarnji.hr/j2/rss' ) - ,(u'Kultura' , u'http://www.jutarnji.hr/kultura/rss' ) - ,(u'Spektakli' , u'http://www.jutarnji.hr/spektakli/rss' ) - ,(u'Dom i nekretnine', u'http://www.jutarnji.hr/nekretnine/rss') - ,(u'Uhvati ritam' , u'http://www.jutarnji.hr/kalendar/rss' ) - ] - - def print_version(self, url): - main = url.partition('.jl')[0] - rrest = main.rpartition(',')[-1] - return 'http://www.jutarnji.hr/ispis_clanka.jl?artid=' + rrest - - def preprocess_html(self, soup): - mtag = '' - soup.head.insert(0,mtag) - return soup +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2008, Darko Miletic ' +''' +jutarnji.hr +''' + +import string, re +from calibre.web.feeds.news import BasicNewsRecipe +from calibre.ebooks.BeautifulSoup import BeautifulSoup + +class Jutarnji(BasicNewsRecipe): + title = u'Jutarnji' + __author__ = u'Darko Miletic' + description = u'Hrvatski portal' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + use_embedded_content = False + encoding = 'cp1250' + + preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] + + remove_tags = [dict(name='embed')] + + feeds = [ + (u'Naslovnica' , u'http://www.jutarnji.hr/rss' ) + ,(u'Sport' , u'http://www.jutarnji.hr/sport/rss' ) + ,(u'Jutarnji2' , u'http://www.jutarnji.hr/j2/rss' ) + ,(u'Kultura' , u'http://www.jutarnji.hr/kultura/rss' ) + ,(u'Spektakli' , u'http://www.jutarnji.hr/spektakli/rss' ) + ,(u'Dom i nekretnine', u'http://www.jutarnji.hr/nekretnine/rss') + ,(u'Uhvati ritam' , u'http://www.jutarnji.hr/kalendar/rss' ) + ] + + def print_version(self, url): + main, split, rest = url.partition('.jl') + rmain, rsplit, rrest = main.rpartition(',') + return 'http://www.jutarnji.hr/ispis_clanka.jl?artid=' + rrest + + def preprocess_html(self, soup): + mtag = '' + soup.head.insert(0,mtag) + return soup \ No newline at end of file diff --git a/src/calibre/web/feeds/recipes/novosti.py b/src/calibre/web/feeds/recipes/novosti.py index e0b2b47352..25dd754e34 100644 --- a/src/calibre/web/feeds/recipes/novosti.py +++ b/src/calibre/web/feeds/recipes/novosti.py @@ -5,7 +5,7 @@ __copyright__ = '2008, Darko Miletic ' ''' novosti.rs ''' -import locale +import string,re from calibre.web.feeds.news import BasicNewsRecipe class Novosti(BasicNewsRecipe): @@ -18,6 +18,8 @@ class Novosti(BasicNewsRecipe): use_embedded_content = False timefmt = ' [%A, %d %B, %Y]' + preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] + keep_only_tags = [ dict(name='div', attrs={'class':'jednaVest'}) ] remove_tags_after = dict(name='div', attrs={'class':'info_bottom'}) remove_tags = [ diff --git a/src/calibre/web/feeds/recipes/nspm.py b/src/calibre/web/feeds/recipes/nspm.py new file mode 100644 index 0000000000..10257f0bee --- /dev/null +++ b/src/calibre/web/feeds/recipes/nspm.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2008, Darko Miletic ' +''' +nspm.rs +''' + +import string,re +from calibre.web.feeds.news import BasicNewsRecipe + +class Nspm(BasicNewsRecipe): + title = u'Nova srpska politicka misao' + __author__ = 'Darko Miletic' + description = 'Casopis za politicku teoriju i drustvena istrazivanja' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + use_embedded_content = False + INDEX = 'http://www.nspm.rs/?alphabet=l' + timefmt = ' [%A, %d %B, %Y]' + + preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] + + def get_browser(self): + br = BasicNewsRecipe.get_browser() + br.open(self.INDEX) + return br + + feeds = [ (u'Nova srpska politicka misao', u'http://www.nspm.rs/feed/rss.html')] + + def print_version(self, url): + return url.replace('.html','/stampa.html') diff --git a/src/calibre/web/feeds/recipes/politika.py b/src/calibre/web/feeds/recipes/politika.py index fc2bc24abc..6ccc388b90 100644 --- a/src/calibre/web/feeds/recipes/politika.py +++ b/src/calibre/web/feeds/recipes/politika.py @@ -5,7 +5,7 @@ __copyright__ = '2008, Darko Miletic ' ''' politika.rs ''' -import locale +import string,re from calibre.web.feeds.news import BasicNewsRecipe class Politika(BasicNewsRecipe): @@ -18,6 +18,9 @@ class Politika(BasicNewsRecipe): extra_css = '.content_center_border {text-align: left;}' use_embedded_content = False timefmt = ' [%A, %d %B, %Y]' + + preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] + remove_tags_before = dict(name='div', attrs={'class':'content_center_border'}) remove_tags_after = dict(name='div', attrs={'class':'datum_item_details'}) diff --git a/src/calibre/web/feeds/recipes/vreme.py b/src/calibre/web/feeds/recipes/vreme.py index 9c9bab4c60..cf0b8cddca 100644 --- a/src/calibre/web/feeds/recipes/vreme.py +++ b/src/calibre/web/feeds/recipes/vreme.py @@ -6,8 +6,7 @@ __copyright__ = '2008, Darko Miletic ' vreme.com ''' -import string -import locale +import string,re from calibre import strftime from calibre.web.feeds.recipes import BasicNewsRecipe @@ -24,6 +23,8 @@ class Vreme(BasicNewsRecipe): INDEX = 'http://www.vreme.com' LOGIN = 'http://www.vreme.com/account/index.php' + preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] + def get_browser(self): br = BasicNewsRecipe.get_browser() if self.username is not None and self.password is not None: @@ -39,16 +40,29 @@ class Vreme(BasicNewsRecipe): soup = self.index_to_soup(self.INDEX) for item in soup.findAll('span', attrs={'class':'toc2'}): + description = '' + title_prefix = '' + + descript_title_tag = item.findPreviousSibling('span', attrs={'class':'toc1'}) + if descript_title_tag: + title_prefix = self.tag_to_string(descript_title_tag) + ' ' + + descript_tag = item.findNextSibling('span', attrs={'class':'toc3'}) + if descript_tag: + description = self.tag_to_string(descript_tag) + 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 = '' + url = self.INDEX + feed_link['href'] + title = title_prefix + self.tag_to_string(feed_link) + date = strftime(self.timefmt) articles.append({ - 'title':title, - 'date':date, - 'url':url, - 'description':description + 'title' :title + ,'date' :date + ,'url' :url + ,'description':description }) return [(soup.head.title.string, articles)] + + def print_version(self, url): + return url + '&print=yes'