From 1396035f9d719f027782610037f7126ff80ad3ed Mon Sep 17 00:00:00 2001 From: unkn0w7n <51942695+unkn0w7n@users.noreply.github.com> Date: Sun, 18 Jun 2023 18:51:59 +0530 Subject: [PATCH 1/7] ... --- recipes/indian_express.recipe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/indian_express.recipe b/recipes/indian_express.recipe index efbd434694..39a459427f 100644 --- a/recipes/indian_express.recipe +++ b/recipes/indian_express.recipe @@ -99,7 +99,7 @@ class IndianExpress(BasicNewsRecipe): div = soup.find('div', attrs={'class':['nation', 'o-opin']}) for art in div.findAll(attrs={'class':['articles', 'o-opin-article']}): for a in art.findAll('a', href=True): - if not a.find('img') and '/profile/' not in a['href']: + if not a.find('img') and not ('/profile/' in a['href'] or '/agency/' in a['href']):: url = a['href'] title = self.tag_to_string(a) desc = '' From 14ff72d60cc4ca9ccfafe8230bb1a46acfee069b Mon Sep 17 00:00:00 2001 From: unkn0w7n <51942695+unkn0w7n@users.noreply.github.com> Date: Sun, 18 Jun 2023 19:21:55 +0530 Subject: [PATCH 2/7] Horizons Journal Update fix SSL certificate verification error. --- recipes/horizons.recipe | 3 +++ recipes/icons/horizons.png | Bin 0 -> 8639 bytes 2 files changed, 3 insertions(+) create mode 100644 recipes/icons/horizons.png diff --git a/recipes/horizons.recipe b/recipes/horizons.recipe index bae979a043..26b48b69b9 100644 --- a/recipes/horizons.recipe +++ b/recipes/horizons.recipe @@ -27,6 +27,9 @@ class horizons(BasicNewsRecipe): classes('back-link'), dict(name='div', attrs={'class':'single-post-footer'}) ] + + def get_browser(self): + return BasicNewsRecipe.get_browser(self, verify_ssl_certificates=False) def parse_index(self): soup = self.index_to_soup('https://www.cirsd.org/en/horizons') diff --git a/recipes/icons/horizons.png b/recipes/icons/horizons.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf16612aca7a467dec92ab23e2c4478cabd0e34 GIT binary patch literal 8639 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 bn@jt^P{*zXr9d0pUN=Bn-9W7Z<`DjWCgu)p literal 0 HcmV?d00001 From a5a02d90fc4ef1ecb9f7ba3b1aed24086cfc287c Mon Sep 17 00:00:00 2001 From: unkn0w7n <51942695+unkn0w7n@users.noreply.github.com> Date: Sun, 18 Jun 2023 19:47:15 +0530 Subject: [PATCH 3/7] DW en and de update --- recipes/deutsche_welle_de.recipe | 41 +++++++++--------- recipes/deutsche_welle_en.recipe | 72 +++++++++----------------------- 2 files changed, 39 insertions(+), 74 deletions(-) diff --git a/recipes/deutsche_welle_de.recipe b/recipes/deutsche_welle_de.recipe index 2d988f7c86..4ee5bd9c67 100644 --- a/recipes/deutsche_welle_de.recipe +++ b/recipes/deutsche_welle_de.recipe @@ -1,21 +1,12 @@ -from calibre.web.feeds.news import BasicNewsRecipe -# History: -# 1: Base Version -# 2: Added rules for wdr.de, ndr.de, br-online.de -# 3: Added rules for rbb-online.de, boerse.ard.de, sportschau.de -# 4: New design of tagesschau.de implemented. Simplified. -# 5: Taken out the pictures. - +from calibre.web.feeds.news import BasicNewsRecipe, classes class DeutscheWelle(BasicNewsRecipe): title = 'Deutsche Welle' description = 'Nachrichten der Deutschen Welle (DW)' publisher = 'DW - info@dw.com' language = 'de' - version = 1 - cover_url = 'https://pbs.twimg.com/profile_images/900269457976823808/nkod9w_m_400x400.jpg' - __author__ = 'VoHe' - oldest_article = 3 + __author__ = 'unkn0wn' + oldest_article = 2 max_articles_per_feed = 200 no_stylesheets = True remove_javascript = True @@ -23,26 +14,32 @@ class DeutscheWelle(BasicNewsRecipe): remove_javascript = True remove_empty_feeds = True ignore_duplicate_articles = {'title', 'url'} + remove_attributes = ['height', 'width', 'style'] - remove_tags_before = dict(name='h4', attrs={'class':'artikel'}) - - remove_tags_after = dict(name='div', attrs={'class':'col1 dim'}) + keep_only_tags = [ + dict(name='article') + ] remove_tags = [ - dict(name='div', attrs={'class':'footerSection'}), - dict(name='div', attrs={'class':'sharing-bar'}), - dict(name='div', attrs={'class':'coll dim'}), - dict(name='div', attrs={'class':'languageSection'}), + dict(name=['footer', 'source']), + dict(attrs={'data-tracking-name':'sharing-icons-inline'}), + classes('kicker advertisement vjs-wrapper') ] + # watch out https://www.dw.com/de/service/rss/s-9773 for description of possible rss feeds feeds = [ - ('Thema des Tages', 'http://rss.dw.com/xml/rss-de-top'), - # ('Nachrichten', 'http://rss.dw.com/xml/rss-de-news'), + ('Nachrichten', 'http://rss.dw.com/xml/rss-de-news'), ('Wissenschaft', 'http://rss.dw.com/xml/rss-de-wissenschaft'), - # ('Sport', 'http://rss.dw.com/xml/rss-de-sport'), + ('Sport', 'http://rss.dw.com/xml/rss-de-sport'), ('Deuschland entdecken', 'http://rss.dw.com/xml/rss-de-deutschlandentdecken'), ('Presse', 'http://rss.dw.com/xml/presse'), ('Politik', 'http://rss.dw.com/xml/rss_de_politik'), ('Wirtschaft', 'http://rss.dw.com/xml/rss-de-eco'), ('Kultur und Leben', 'http://rss.dw.com/xml/rss-de-cul'), + ('Thema des Tages', 'http://rss.dw.com/xml/rss-de-top'), ] + + def preprocess_html(self, soup): + for img in soup.findAll('img', srcset=True): + img['src'] = img['srcset'].split()[6] + return soup diff --git a/recipes/deutsche_welle_en.recipe b/recipes/deutsche_welle_en.recipe index 3cde7e7418..faa02a6183 100644 --- a/recipes/deutsche_welle_en.recipe +++ b/recipes/deutsche_welle_en.recipe @@ -1,34 +1,31 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -from __future__ import unicode_literals, division, absolute_import, print_function - -__license__ = 'GPL v3' -__copyright__ = '2010, Darko Miletic ' - -''' -Deutsche Welle (english) - dw.com/en -''' - -import re -from calibre.web.feeds.news import BasicNewsRecipe - +from calibre.web.feeds.news import BasicNewsRecipe, classes class DeutscheWelle_en(BasicNewsRecipe): title = 'Deutsche Welle' - __author__ = 'Darko Miletic' + __author__ = 'unkn0wn' description = 'News from Germany and the world' publisher = 'Deutsche Welle' language = 'en' - oldest_article = 1 + oldest_article = 2 max_articles_per_feed = 50 no_stylesheets = True remove_javascript = True remove_empty_feeds = True ignore_duplicate_articles = {'title', 'url'} - + remove_attributes = ['height', 'width', 'style'] + + keep_only_tags = [ + dict(name='article') + ] + + remove_tags = [ + dict(name=['footer', 'source']), + dict(attrs={'data-tracking-name':'sharing-icons-inline'}), + classes('kicker advertisement vjs-wrapper') + ] + feeds = [ - ('Top Stories', 'http://rss.dw-world.de/rdf/rss-en-top'), ('World', 'http://rss.dw.de/rdf/rss-en-world'), ('Germany', 'http://rss.dw.de/rdf/rss-en-ger'), ('Europe', 'http://rss.dw.de/rdf/rss-en-eu'), @@ -36,40 +33,11 @@ class DeutscheWelle_en(BasicNewsRecipe): ('Culture & Lifestyle', 'http://rss.dw.de/rdf/rss-en-cul'), ('Sports', 'http://rss.dw.de/rdf/rss-en-sports'), ('Visit Germany', 'http://rss.dw.de/rdf/rss-en-visitgermany'), - ('Asia', 'http://rss.dw.de/rdf/rss-en-asia') + ('Asia', 'http://rss.dw.de/rdf/rss-en-asia'), + ('Top Stories', 'http://rss.dw-world.de/rdf/rss-en-top'), ] - - keep_only_tags = [ - dict(name='div', attrs={'class': 'col3'}) - ] - - remove_tags_after = [ - dict(name='div', attrs={'class': 'group'}) - ] - - remove_tags = [ - dict(name='div', attrs={'class': 'col1'}), - dict(name='div', attrs={'class': re.compile('gallery')}), - dict(name='div', attrs={'class': re.compile('audio')}), - dict(name='div', attrs={'class': re.compile('video')}) - ] - - remove_attributes = ['height', 'width', - 'onclick', 'border', 'lang', 'link'] - - extra_css = ''' - h1 {font-size: 1.6em; margin-top: 0em} - .artikel {font-size: 1em; text-transform: uppercase; margin: 0em} - ''' - + def preprocess_html(self, soup): - # convert local hyperlinks - for a in soup.findAll('a', href=True): - if a['href'].startswith('/'): - a['href'] = 'http://www.dw.com' + a['href'] - elif a['href'].startswith('#'): - del a['href'] - # remove all style attributes with an effect on font size - for item in soup.findAll(attrs={'style': re.compile('font-size')}): - del item['style'] + for img in soup.findAll('img', srcset=True): + img['src'] = img['srcset'].split()[6] return soup From 0c8aacd740d8b0d369a5daafed8eec1b6a221207 Mon Sep 17 00:00:00 2001 From: unkn0w7n <51942695+unkn0w7n@users.noreply.github.com> Date: Sun, 18 Jun 2023 20:07:41 +0530 Subject: [PATCH 4/7] DW (all languages) update. realized that they all require the same code. --- recipes/deutsche_welle_bs.recipe | 77 +++++++++----------------- recipes/deutsche_welle_es.recipe | 64 ++++++---------------- recipes/deutsche_welle_hr.recipe | 71 ++++++++---------------- recipes/deutsche_welle_pt.recipe | 66 ++++++++--------------- recipes/deutsche_welle_ru.recipe | 34 ++++++++---- recipes/deutsche_welle_sr.recipe | 93 +++++++++++--------------------- 6 files changed, 138 insertions(+), 267 deletions(-) diff --git a/recipes/deutsche_welle_bs.recipe b/recipes/deutsche_welle_bs.recipe index 0b852c94c8..65ccd31cb9 100644 --- a/recipes/deutsche_welle_bs.recipe +++ b/recipes/deutsche_welle_bs.recipe @@ -1,73 +1,44 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, Darko Miletic ' -''' -dw-world.de -''' - -import re -from calibre.web.feeds.news import BasicNewsRecipe - +from calibre.web.feeds.news import BasicNewsRecipe, classes class DeutscheWelle_bs(BasicNewsRecipe): title = 'Deutsche Welle' - __author__ = 'Darko Miletic' + __author__ = 'unkn0wn' description = 'Vijesti iz Njemacke i svijeta' publisher = 'Deutsche Welle' category = 'news, politics, Germany' - oldest_article = 1 + oldest_article = 2 max_articles_per_feed = 100 use_embedded_content = False no_stylesheets = True language = 'bs' publication_type = 'newsportal' remove_empty_feeds = True + remove_javascript = True masthead_url = 'http://www.dw-world.de/skins/std/channel1/pics/dw_logo1024.gif' - extra_css = """ - @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} - body{font-family: Arial,sans1,sans-serif} - img{margin-top: 0.5em; margin-bottom: 0.2em; display: block} - .caption{font-size: x-small; display: block; margin-bottom: 0.4em} - """ - preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - + + ignore_duplicate_articles = {'title', 'url'} + remove_attributes = ['height', 'width', 'style'] + + keep_only_tags = [ + dict(name='article') + ] + remove_tags = [ - dict(name=['iframe', 'embed', 'object', 'form', 'base', 'meta', 'link']), dict( - attrs={'class': 'actionFooter'}) + dict(name=['footer', 'source']), + dict(attrs={'data-tracking-name':'sharing-icons-inline'}), + classes('kicker advertisement vjs-wrapper') ] - keep_only_tags = [dict(attrs={'class': 'ArticleDetail detail'})] - remove_attributes = ['height', 'width', 'onclick', 'border', 'lang'] - + feeds = [ - - (u'Politika', u'http://rss.dw-world.de/rdf/rss-bos-pol'), - (u'Evropa', u'http://rss.dw-world.de/rdf/rss-bos-eu'), - (u'Kiosk', u'http://rss.dw-world.de/rdf/rss-bos-eu'), - (u'Ekonomija i Nuka', u'http://rss.dw-world.de/rdf/rss-bos-eco'), - (u'Kultura', u'http://rss.dw-world.de/rdf/rss-bos-cul'), - (u'Sport', u'http://rss.dw-world.de/rdf/rss-bos-sp') + (u'Politika', u'http://rss.dw-world.de/rdf/rss-bos-pol'), + (u'Evropa', u'http://rss.dw-world.de/rdf/rss-bos-eu'), + (u'Kiosk', u'http://rss.dw-world.de/rdf/rss-bos-eu'), + (u'Ekonomija i Nuka', u'http://rss.dw-world.de/rdf/rss-bos-eco'), + (u'Kultura', u'http://rss.dw-world.de/rdf/rss-bos-cul'), + (u'Sport', u'http://rss.dw-world.de/rdf/rss-bos-sp') ] - def print_version(self, url): - artl = url.rpartition('/')[2] - return 'http://www.dw-world.de/popups/popup_printcontent/' + artl - def preprocess_html(self, soup): - for item in soup.findAll('a'): - limg = item.find('img') - if item.string is not None: - str = item.string - item.replaceWith(str) - else: - if limg: - item.name = 'div' - del item['href'] - item['target'] = '' - del item['target'] - else: - str = self.tag_to_string(item) - item.replaceWith(str) + for img in soup.findAll('img', srcset=True): + img['src'] = img['srcset'].split()[6] return soup diff --git a/recipes/deutsche_welle_es.recipe b/recipes/deutsche_welle_es.recipe index 1300fea96d..a036b2a96b 100644 --- a/recipes/deutsche_welle_es.recipe +++ b/recipes/deutsche_welle_es.recipe @@ -1,21 +1,8 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -from __future__ import unicode_literals, division, absolute_import, print_function - -__license__ = 'GPL v3' -__copyright__ = '2010, Darko Miletic ' - -''' -Deutsche Welle (espaƱol) - dw.com/es -''' - -import re -from calibre.web.feeds.news import BasicNewsRecipe - +from calibre.web.feeds.news import BasicNewsRecipe, classes class DeutscheWelle_es(BasicNewsRecipe): title = 'Deutsche Welle' - __author__ = 'Darko Miletic' + __author__ = 'unkn0wn' description = 'Noticias desde Alemania y mundo' publisher = 'Deutsche Welle' language = 'es' @@ -27,6 +14,18 @@ class DeutscheWelle_es(BasicNewsRecipe): remove_empty_feeds = True ignore_duplicate_articles = {'title', 'url'} + remove_attributes = ['height', 'width', 'style'] + + keep_only_tags = [ + dict(name='article') + ] + + remove_tags = [ + dict(name=['footer', 'source']), + dict(attrs={'data-tracking-name':'sharing-icons-inline'}), + classes('kicker advertisement vjs-wrapper') + ] + feeds = [ ('Titulares', 'http://rss.dw-world.de/rdf/rss-sp-top'), ('Noticias de Alemania', 'http://rss.dw-world.de/rdf/rss-sp-ale'), @@ -40,37 +39,8 @@ class DeutscheWelle_es(BasicNewsRecipe): ('Conozca Alemania', 'http://rss.dw-world.de/rdf/rss-sp-con') ] - keep_only_tags = [ - dict(name='div', attrs={'class': 'col3'}) - ] - - remove_tags_after = [ - dict(name='div', attrs={'class': 'group'}) - ] - - remove_tags = [ - dict(name='div', attrs={'class': 'col1'}), - dict(name='div', attrs={'class': re.compile('gallery')}), - dict(name='div', attrs={'class': re.compile('audio')}), - dict(name='div', attrs={'class': re.compile('video')}) - ] - - remove_attributes = ['height', 'width', - 'onclick', 'border', 'lang', 'link'] - - extra_css = ''' - h1 {font-size: 1.6em; margin-top: 0em} - .artikel {font-size: 1em; text-transform: uppercase; margin: 0em} - ''' - + def preprocess_html(self, soup): - # convert local hyperlinks - for a in soup.findAll('a', href=True): - if a['href'].startswith('/'): - a['href'] = 'http://www.dw.com' + a['href'] - elif a['href'].startswith('#'): - del a['href'] - # remove all style attributes with an effect on font size - for item in soup.findAll(attrs={'style': re.compile('font-size')}): - del item['style'] + for img in soup.findAll('img', srcset=True): + img['src'] = img['srcset'].split()[6] return soup diff --git a/recipes/deutsche_welle_hr.recipe b/recipes/deutsche_welle_hr.recipe index 906e4a1d39..73264fc635 100644 --- a/recipes/deutsche_welle_hr.recipe +++ b/recipes/deutsche_welle_hr.recipe @@ -1,20 +1,12 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, Darko Miletic ' -''' -dw-world.de -''' - -import re -from calibre.web.feeds.news import BasicNewsRecipe - +from calibre.web.feeds.news import BasicNewsRecipe, classes class DeutscheWelle_hr(BasicNewsRecipe): title = 'Deutsche Welle' - __author__ = 'Darko Miletic' + __author__ = 'unkn0wn' description = 'Vesti iz Njemacke i svijeta' publisher = 'Deutsche Welle' category = 'news, politics, Germany' - oldest_article = 1 + oldest_article = 2 max_articles_per_feed = 100 use_embedded_content = False no_stylesheets = True @@ -22,50 +14,29 @@ class DeutscheWelle_hr(BasicNewsRecipe): publication_type = 'newsportal' remove_empty_feeds = True masthead_url = 'http://www.dw-world.de/skins/std/channel1/pics/dw_logo1024.gif' - extra_css = """ - @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} - body{font-family: Arial,sans1,sans-serif} - img{margin-top: 0.5em; margin-bottom: 0.2em; display: block} - .caption{font-size: x-small; display: block; margin-bottom: 0.4em} - """ - preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } + remove_javascript = True + + ignore_duplicate_articles = {'title', 'url'} + remove_attributes = ['height', 'width', 'style'] + keep_only_tags = [ + dict(name='article') + ] + remove_tags = [ - dict(name=['iframe', 'embed', 'object', 'form', 'base', 'meta', 'link']), dict( - attrs={'class': 'actionFooter'}) + dict(name=['footer', 'source']), + dict(attrs={'data-tracking-name':'sharing-icons-inline'}), + classes('kicker advertisement vjs-wrapper') ] - keep_only_tags = [dict(attrs={'class': 'ArticleDetail detail'})] - remove_attributes = ['height', 'width', 'onclick', 'border', 'lang'] - + feeds = [ - - (u'Svijet', u'http://rss.dw-world.de/rdf/rss-cro-svijet'), - (u'Europa', u'http://rss.dw-world.de/rdf/rss-cro-eu'), - (u'Njemacka', u'http://rss.dw-world.de/rdf/rss-cro-ger'), - (u'Vijesti', u'http://rss.dw-world.de/rdf/rss-cro-all') + (u'Svijet', u'http://rss.dw-world.de/rdf/rss-cro-svijet'), + (u'Europa', u'http://rss.dw-world.de/rdf/rss-cro-eu'), + (u'Njemacka', u'http://rss.dw-world.de/rdf/rss-cro-ger'), + (u'Vijesti', u'http://rss.dw-world.de/rdf/rss-cro-all') ] - def print_version(self, url): - artl = url.rpartition('/')[2] - return 'http://www.dw-world.de/popups/popup_printcontent/' + artl - def preprocess_html(self, soup): - for item in soup.findAll('a'): - limg = item.find('img') - if item.string is not None: - str = item.string - item.replaceWith(str) - else: - if limg: - item.name = 'div' - del item['href'] - item['target'] = '' - del item['target'] - else: - str = self.tag_to_string(item) - item.replaceWith(str) + for img in soup.findAll('img', srcset=True): + img['src'] = img['srcset'].split()[6] return soup diff --git a/recipes/deutsche_welle_pt.recipe b/recipes/deutsche_welle_pt.recipe index 4b9a9ea9dc..aff42efd0a 100644 --- a/recipes/deutsche_welle_pt.recipe +++ b/recipes/deutsche_welle_pt.recipe @@ -1,19 +1,12 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, Darko Miletic ' -''' -dw-world.de -''' - -from calibre.web.feeds.news import BasicNewsRecipe - +from calibre.web.feeds.news import BasicNewsRecipe, classes class DeutscheWelle_pt(BasicNewsRecipe): title = 'Deutsche Welle' - __author__ = 'Darko Miletic' + __author__ = 'unkn0wn' description = 'Noticias desde Alemania y mundo' publisher = 'Deutsche Welle' category = 'news, politics, Germany' - oldest_article = 1 + oldest_article = 2 max_articles_per_feed = 100 use_embedded_content = False no_stylesheets = True @@ -21,42 +14,25 @@ class DeutscheWelle_pt(BasicNewsRecipe): publication_type = 'newsportal' remove_empty_feeds = True masthead_url = 'http://www.dw-world.de/skins/std/channel1/pics/dw_logo1024.gif' - extra_css = """ - body{font-family: Arial,sans-serif} - img{margin-top: 0.5em; margin-bottom: 0.2em; display: block} - .caption{font-size: x-small; display: block; margin-bottom: 0.4em} - """ + + + remove_javascript = True + ignore_duplicate_articles = {'title', 'url'} + remove_attributes = ['height', 'width', 'style'] + + def preprocess_html(self, soup): + for img in soup.findAll('img', srcset=True): + img['src'] = img['srcset'].split()[6] + return soup - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - remove_tags = [ - dict(name=['iframe', 'embed', 'object', 'form', 'base', 'meta', 'link']), dict( - attrs={'class': 'actionFooter'}) + keep_only_tags = [ + dict(name='article') + ] + + remove_tags = [ + dict(name=['footer', 'source']), + dict(attrs={'data-tracking-name':'sharing-icons-inline'}), + classes('kicker advertisement vjs-wrapper') ] - keep_only_tags = [dict(attrs={'class': 'ArticleDetail detail'})] - remove_attributes = ['height', 'width', 'onclick', 'border', 'lang'] feeds = [(u'Noticias', u'http://rss.dw-world.de/rdf/rss-br-all')] - - def print_version(self, url): - artl = url.rpartition('/')[2] - return 'http://www.dw-world.de/popups/popup_printcontent/' + artl - - def preprocess_html(self, soup): - for item in soup.findAll('a'): - limg = item.find('img') - if item.string is not None: - str = item.string - item.replaceWith(str) - else: - if limg: - item.name = 'div' - del item['href'] - item['target'] = '' - del item['target'] - else: - str = self.tag_to_string(item) - item.replaceWith(str) - return soup diff --git a/recipes/deutsche_welle_ru.recipe b/recipes/deutsche_welle_ru.recipe index 0fbbcc6327..ec4e838af0 100644 --- a/recipes/deutsche_welle_ru.recipe +++ b/recipes/deutsche_welle_ru.recipe @@ -1,24 +1,36 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 - -from calibre.web.feeds.news import BasicNewsRecipe +from calibre.web.feeds.news import BasicNewsRecipe, classes class DeutscheWelle(BasicNewsRecipe): title = u'Deutsche Welle \u043D\u0430 \u0440\u0443\u0441\u0441\u043A\u043E\u043C' description = u'\u0420\u0443\u0441\u0441\u043A\u0430\u044F \u0440\u0435\u0434\u0430\u043A\u0446\u0438\u044F Deutsche Welle: \u043D\u043E\u0432\u043E\u0441\u0442\u0438, \u0430\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430, \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0438 \u0438 \u0440\u0435\u043F\u043E\u0440\u0442\u0430\u0436\u0438 \u0438\u0437 \u0413\u0435\u0440\u043C\u0430\u043D\u0438\u0438 \u0438 \u0415\u0432\u0440\u043E\u043F\u044B, \u043D\u0435\u043C\u0435\u0446\u043A\u0438\u0439 \u0438 \u0435\u0432\u0440\u043E\u043F\u0435\u0439\u0441\u043A\u0438\u0439 \u0432\u0437\u0433\u043B\u044F\u0434 \u043D\u0430 \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u0432 \u0420\u043E\u0441\u0441\u0438\u0438 \u0438 \u043C\u0438\u0440\u0435, \u043F\u0440\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0435 \u0441\u043E\u0432\u0435\u0442\u044B \u0434\u043B\u044F \u0442\u0443\u0440\u0438\u0441\u0442\u043E\u0432 \u0438 \u0442\u0435\u0445, \u043A\u0442\u043E \u0436\u0435\u043B\u0430\u0435\u0442 \u0443\u0447\u0438\u0442\u044C\u0441\u044F \u0438\u043B\u0438 \u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u0432 \u0413\u0435\u0440\u043C\u0430\u043D\u0438\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0440\u0430\u043D\u0430\u0445 \u0415\u0432\u0440\u043E\u0441\u043E\u044E\u0437\u0430.' # noqa - __author__ = 'bugmen00t' + __author__ = 'bugmen00t, unkn0wn' publication_type = 'newspaper' - oldest_article = 14 + oldest_article = 2 max_articles_per_feed = 100 language = 'ru' - cover_url = 'https://www.dw.com/cssi/dwlogo-print.gif' - auto_cleanup = False - no_stylesheets = False + # cover_url = 'https://www.dw.com/cssi/dwlogo-print.gif' - remove_tags_before = dict(name='h1') + remove_javascript = True + no_stylesheets = True + remove_empty_feeds = True + ignore_duplicate_articles = {'title', 'url'} + remove_attributes = ['height', 'width', 'style'] + + def preprocess_html(self, soup): + for img in soup.findAll('img', srcset=True): + img['src'] = img['srcset'].split()[6] + return soup - remove_tags_after = dict(name='div', attrs={'class': 'longText'}) + keep_only_tags = [ + dict(name='article') + ] + + remove_tags = [ + dict(name=['footer', 'source']), + dict(attrs={'data-tracking-name':'sharing-icons-inline'}), + classes('kicker advertisement vjs-wrapper') + ] feeds = [ ( diff --git a/recipes/deutsche_welle_sr.recipe b/recipes/deutsche_welle_sr.recipe index b9c67e4976..7f1b1717c0 100644 --- a/recipes/deutsche_welle_sr.recipe +++ b/recipes/deutsche_welle_sr.recipe @@ -1,20 +1,12 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, Darko Miletic ' -''' -dw-world.de -''' - -import re -from calibre.web.feeds.news import BasicNewsRecipe - +from calibre.web.feeds.news import BasicNewsRecipe, classes class DeutscheWelle_sr(BasicNewsRecipe): title = 'Deutsche Welle' - __author__ = 'Darko Miletic' + __author__ = 'unkn0wn' description = 'Vesti iz Nemacke i sveta' publisher = 'Deutsche Welle' category = 'news, politics, Germany' - oldest_article = 1 + oldest_article = 2 max_articles_per_feed = 100 use_embedded_content = False no_stylesheets = True @@ -22,55 +14,34 @@ class DeutscheWelle_sr(BasicNewsRecipe): publication_type = 'newsportal' remove_empty_feeds = True masthead_url = 'http://www.dw-world.de/skins/std/channel1/pics/dw_logo1024.gif' - extra_css = """ - @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} - body{font-family: Arial,sans1,sans-serif} - img{margin-top: 0.5em; margin-bottom: 0.2em; display: block} - .caption{font-size: x-small; display: block; margin-bottom: 0.4em} - """ - preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - remove_tags = [ - dict(name=['iframe', 'embed', 'object', 'form', 'base', 'meta', 'link']), dict( - attrs={'class': 'actionFooter'}) - ] - keep_only_tags = [dict(attrs={'class': 'ArticleDetail detail'})] - remove_attributes = ['height', 'width', 'onclick', 'border', 'lang'] - - feeds = [ - - (u'Politika', u'http://rss.dw-world.de/rdf/rss-ser-pol'), - (u'Srbija', u'http://rss.dw-world.de/rdf/rss-ser-pol-ser'), - (u'Region', u'http://rss.dw-world.de/rdf/rss-ser-pol-region'), - (u'Evropa', u'http://rss.dw-world.de/rdf/rss-ser-pol-eu'), - (u'Nemacka', u'http://rss.dw-world.de/rdf/rss-ser-pol-ger'), - (u'Svet', u'http://rss.dw-world.de/rdf/rss-ser-pol-ger'), - (u'Pregled stampe', u'http://rss.dw-world.de/rdf/rss-ser-pol-ger'), - (u'Nauka Tehnika Medicina', u'http://rss.dw-world.de/rdf/rss-ser-science'), - (u'Kultura', u'feed:http://rss.dw-world.de/rdf/rss-ser-cul') - ] - - def print_version(self, url): - artl = url.rpartition('/')[2] - return 'http://www.dw-world.de/popups/popup_printcontent/' + artl - + remove_javascript = True + ignore_duplicate_articles = {'title', 'url'} + remove_attributes = ['height', 'width', 'style'] + def preprocess_html(self, soup): - for item in soup.findAll('a'): - limg = item.find('img') - if item.string is not None: - str = item.string - item.replaceWith(str) - else: - if limg: - item.name = 'div' - del item['href'] - item['target'] = '' - del item['target'] - else: - str = self.tag_to_string(item) - item.replaceWith(str) + for img in soup.findAll('img', srcset=True): + img['src'] = img['srcset'].split()[6] return soup + + keep_only_tags = [ + dict(name='article') + ] + + remove_tags = [ + dict(name=['footer', 'source']), + dict(attrs={'data-tracking-name':'sharing-icons-inline'}), + classes('kicker advertisement vjs-wrapper') + ] + + feeds = [ + (u'Politika', u'http://rss.dw-world.de/rdf/rss-ser-pol'), + (u'Srbija', u'http://rss.dw-world.de/rdf/rss-ser-pol-ser'), + (u'Region', u'http://rss.dw-world.de/rdf/rss-ser-pol-region'), + (u'Evropa', u'http://rss.dw-world.de/rdf/rss-ser-pol-eu'), + (u'Nemacka', u'http://rss.dw-world.de/rdf/rss-ser-pol-ger'), + (u'Svet', u'http://rss.dw-world.de/rdf/rss-ser-pol-ger'), + (u'Pregled stampe', u'http://rss.dw-world.de/rdf/rss-ser-pol-ger'), + (u'Nauka Tehnika Medicina', u'http://rss.dw-world.de/rdf/rss-ser-science'), + (u'Kultura', u'feed:http://rss.dw-world.de/rdf/rss-ser-cul') + ] + From 2ac8638b9896cd1d9ceb2ff8a12ab0f03bc57488 Mon Sep 17 00:00:00 2001 From: unkn0w7n <51942695+unkn0w7n@users.noreply.github.com> Date: Sun, 18 Jun 2023 20:20:39 +0530 Subject: [PATCH 5/7] ... --- recipes/icons/deutsche_welle_bs.png | Bin 187 -> 926 bytes recipes/icons/deutsche_welle_de.png | Bin 1261 -> 926 bytes recipes/icons/deutsche_welle_en.png | Bin 187 -> 926 bytes recipes/icons/deutsche_welle_es.png | Bin 187 -> 926 bytes recipes/icons/deutsche_welle_hr.png | Bin 187 -> 926 bytes recipes/icons/deutsche_welle_pt.png | Bin 187 -> 926 bytes recipes/icons/deutsche_welle_sr.png | Bin 187 -> 926 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/recipes/icons/deutsche_welle_bs.png b/recipes/icons/deutsche_welle_bs.png index 034074e83de519fb0b0c300a4529d8e5dcda2a91..c0c5b8c0eb722ea657c3df60b9c714022273da36 100644 GIT binary patch literal 926 zcmY+BdrVUY6vjWKqZ7tpOGN5OrrC6E1iiaTbsc8lTD2Jv#+vy^#$?(}H?cCxCUtH~ zoPsi11)LAY3Kg@hN?=pNbabML((rx=LM;?6L~GmI+UM;p?e5}2vOmuGa!$TqzLT8t zob2_n(F>vh#ELfvb6Ji5x1Nn;`_h!S4_M)RmXVbKv?ybO`OmQP!fhLJvjD{s;J_gu zz^)EF1d0j3vK0`V0_N|jz50F{5HXUIDG_1EpZNS5cC|rv9fdbhbPHc~U~eZBJ=oue zZwGO37>7pj{TRx|acmO1bl80za@MAYq8s0^o&g*-pv;IL9zZ#T;tuTZ$9ID$9foQe zCmx~dG4^%i;2j*fhw=#=GofMU%6kn{UGI*WRHPoixU&#!q(H z4K~{94PG|7mz}rbloPd{#G^w7t1qu07rShrpHmy>DYVIKJ5T;Mecn-uDZ1@3JqewZJ)(wS+aGuZKnN&VfI^qc<=6YXI_ zGokQ+m08#7!?_UDG#Y|Y=a{*T3`fJnGzQQZ4)AFn`}>Gb-ditR8$Ytf%?@0-I7`Hx z<|ah(=OvFQ)7h0uEX@7B$Ey}xJBO-9y5bR+}|KkTpKv|cbPzetYC zF51Y8BsaeF4zsw4)bTCm<`)+#iZdJ9Dy3mi_}qox869 delta 170 zcmV;b09F5<2fG1~8Gi-<001BJ|6u?C0D?(GK~#9!V;Hnx6c{!AN5c1kI04FbfYRrI zxB-aYgA@w@aR5|cKbm3%5F09YABx{289bi>CIF@Tku=SR^8Z5(?MD*754Qy59GJ79 zwt~d=BjE<9m;#6oRZ{@O>wy^V=Kz?=P}~m{QvfN#hcN(H6C)x_<|DacJ(NyBHDD9~ Y0IBb4e9?j`PXGV_07*qoM6N<$f)9d0s{jB1 diff --git a/recipes/icons/deutsche_welle_de.png b/recipes/icons/deutsche_welle_de.png index 0cea86328ccb8900af80398f329b361554d02631..c0c5b8c0eb722ea657c3df60b9c714022273da36 100644 GIT binary patch literal 926 zcmY+BdrVUY6vjWKqZ7tpOGN5OrrC6E1iiaTbsc8lTD2Jv#+vy^#$?(}H?cCxCUtH~ zoPsi11)LAY3Kg@hN?=pNbabML((rx=LM;?6L~GmI+UM;p?e5}2vOmuGa!$TqzLT8t zob2_n(F>vh#ELfvb6Ji5x1Nn;`_h!S4_M)RmXVbKv?ybO`OmQP!fhLJvjD{s;J_gu zz^)EF1d0j3vK0`V0_N|jz50F{5HXUIDG_1EpZNS5cC|rv9fdbhbPHc~U~eZBJ=oue zZwGO37>7pj{TRx|acmO1bl80za@MAYq8s0^o&g*-pv;IL9zZ#T;tuTZ$9ID$9foQe zCmx~dG4^%i;2j*fhw=#=GofMU%6kn{UGI*WRHPoixU&#!q(H z4K~{94PG|7mz}rbloPd{#G^w7t1qu07rShrpHmy>DYVIKJ5T;Mecn-uDZ1@3JqewZJ)(wS+aGuZKnN&VfI^qc<=6YXI_ zGokQ+m08#7!?_UDG#Y|Y=a{*T3`fJnGzQQZ4)AFn`}>Gb-ditR8$Ytf%?@0-I7`Hx z<|ah(=OvFQ)7h0uEX@7B$Ey}xJBO-9y5bR+}|KkTpKv|cbPzetYC zF51Y8BsaeF4zsw4)bTCm<`)+#iZdJ9Dy3mi_}qox869 literal 1261 zcmVPx(r%6OXR7i>KR%>h&RTTct-PxJlcDuWMNx{a@(xMe94}(I2V)_FWT7m@;6%ect zZBhsj0UwDNqejFuASnvf)|73cQQANRwV{NNS`|vLKm}TxEwp8UzP8=AyE{8G{@Cu! z>;p{H{&RAF%{}*g-#OZsfp~43WMnIt8 z0*L*00Oi9WzoCV2n12@*;lL1B$Z60Wk>;A|BKwB`pABflnF_;924q`VikSfF6LG~2 zufkLkCWia1Na6vY$A{J-c;!0*l=W(SL#t@2@sqi{jVDo7d=e~1@<~c*i@fu98N_zZ zV4HIw7_^w&er!F5FWO@Q?7IyBj6neyBjDSG@r9X2N2^$R(SM;Ieubta(3a`O;vDXj zO9rqYEw%&>U&r#(h-fRq9+#eb$#m1+$KqF=7n+LA76^booFnX*$?s|w%^a0H$klX6 zm)*)6xm;bh+;B^IIh&;l$gEXdK1~#a-Pc2nM)U6#PCuJG?NDz^zwB6;uyU%<=9ZHL zN-?vePXCf0N0J2AyVknAZnVZ3=zKALcCFXtMZ;p#wx+=OKIQgG-ptX4M(JQ1RFxBU zIn_KYn`*9nGSOD%l0lBA?D?63?eiW+RJYWYm(FKY^*e`@j@9-CSKx*E(ZUSl;SLF) zrIWcM*Q8|`+&6gwfZZ1Zub-7w(u9xN0RjLBRgDlWqUaIG*YY zlOIhprdRZKjVPTjC0cow`enZllxkv+PvX9FN+9|=&$MES5x}lyaeI@b%98Lw>sTu> znm5Vx^Qwt6D!ZF|0@aI?pU;UO^vUr?GBB$8V|2|=?g?=Q*ZNcdOTHgG+97VAWiFU( zoL}oPaddmF&0-_~>rQzqTLWWt1rgr63>K6fS$OIy$vECVvhrxp>S>nQ6L=7YMKs>< zA9MN?(4Hr(8)sPnG~E&#y2a&L!X%5~z$LF;pcPpHfI+{KSv}P2huZvvcU!bcK(sd3 zT2YX;sjg>llUrpG92lD)PWX6%-N5c9({(32l~?@w0YiA_0uY+j1Q32Cw)Zu&iROGkMkEKY9gFW*=LfN9U zGz$knQ4}H?@JjDD4wRl51Yye@`_5?Znxc z6BzkFR+jWz0AbUqFmTO9IBUkD6cX`NhzUc4lKK$AD5qnEiaM#cS6?JS%1pNl0%L^Y zx-bf$*uma0Mf&?Z)EQ&(1y%Iw4>3-vq@qHOjTEuP^hMrqOegm6%&Llx6jGG^ox}YL XF5z;Y|GGYS00000NkvXXu0mjf$#Gd9 diff --git a/recipes/icons/deutsche_welle_en.png b/recipes/icons/deutsche_welle_en.png index 034074e83de519fb0b0c300a4529d8e5dcda2a91..c0c5b8c0eb722ea657c3df60b9c714022273da36 100644 GIT binary patch literal 926 zcmY+BdrVUY6vjWKqZ7tpOGN5OrrC6E1iiaTbsc8lTD2Jv#+vy^#$?(}H?cCxCUtH~ zoPsi11)LAY3Kg@hN?=pNbabML((rx=LM;?6L~GmI+UM;p?e5}2vOmuGa!$TqzLT8t zob2_n(F>vh#ELfvb6Ji5x1Nn;`_h!S4_M)RmXVbKv?ybO`OmQP!fhLJvjD{s;J_gu zz^)EF1d0j3vK0`V0_N|jz50F{5HXUIDG_1EpZNS5cC|rv9fdbhbPHc~U~eZBJ=oue zZwGO37>7pj{TRx|acmO1bl80za@MAYq8s0^o&g*-pv;IL9zZ#T;tuTZ$9ID$9foQe zCmx~dG4^%i;2j*fhw=#=GofMU%6kn{UGI*WRHPoixU&#!q(H z4K~{94PG|7mz}rbloPd{#G^w7t1qu07rShrpHmy>DYVIKJ5T;Mecn-uDZ1@3JqewZJ)(wS+aGuZKnN&VfI^qc<=6YXI_ zGokQ+m08#7!?_UDG#Y|Y=a{*T3`fJnGzQQZ4)AFn`}>Gb-ditR8$Ytf%?@0-I7`Hx z<|ah(=OvFQ)7h0uEX@7B$Ey}xJBO-9y5bR+}|KkTpKv|cbPzetYC zF51Y8BsaeF4zsw4)bTCm<`)+#iZdJ9Dy3mi_}qox869 delta 170 zcmV;b09F5<2fG1~8Gi-<001BJ|6u?C0D?(GK~#9!V;Hnx6c{!AN5c1kI04FbfYRrI zxB-aYgA@w@aR5|cKbm3%5F09YABx{289bi>CIF@Tku=SR^8Z5(?MD*754Qy59GJ79 zwt~d=BjE<9m;#6oRZ{@O>wy^V=Kz?=P}~m{QvfN#hcN(H6C)x_<|DacJ(NyBHDD9~ Y0IBb4e9?j`PXGV_07*qoM6N<$f)9d0s{jB1 diff --git a/recipes/icons/deutsche_welle_es.png b/recipes/icons/deutsche_welle_es.png index 034074e83de519fb0b0c300a4529d8e5dcda2a91..c0c5b8c0eb722ea657c3df60b9c714022273da36 100644 GIT binary patch literal 926 zcmY+BdrVUY6vjWKqZ7tpOGN5OrrC6E1iiaTbsc8lTD2Jv#+vy^#$?(}H?cCxCUtH~ zoPsi11)LAY3Kg@hN?=pNbabML((rx=LM;?6L~GmI+UM;p?e5}2vOmuGa!$TqzLT8t zob2_n(F>vh#ELfvb6Ji5x1Nn;`_h!S4_M)RmXVbKv?ybO`OmQP!fhLJvjD{s;J_gu zz^)EF1d0j3vK0`V0_N|jz50F{5HXUIDG_1EpZNS5cC|rv9fdbhbPHc~U~eZBJ=oue zZwGO37>7pj{TRx|acmO1bl80za@MAYq8s0^o&g*-pv;IL9zZ#T;tuTZ$9ID$9foQe zCmx~dG4^%i;2j*fhw=#=GofMU%6kn{UGI*WRHPoixU&#!q(H z4K~{94PG|7mz}rbloPd{#G^w7t1qu07rShrpHmy>DYVIKJ5T;Mecn-uDZ1@3JqewZJ)(wS+aGuZKnN&VfI^qc<=6YXI_ zGokQ+m08#7!?_UDG#Y|Y=a{*T3`fJnGzQQZ4)AFn`}>Gb-ditR8$Ytf%?@0-I7`Hx z<|ah(=OvFQ)7h0uEX@7B$Ey}xJBO-9y5bR+}|KkTpKv|cbPzetYC zF51Y8BsaeF4zsw4)bTCm<`)+#iZdJ9Dy3mi_}qox869 delta 170 zcmV;b09F5<2fG1~8Gi-<001BJ|6u?C0D?(GK~#9!V;Hnx6c{!AN5c1kI04FbfYRrI zxB-aYgA@w@aR5|cKbm3%5F09YABx{289bi>CIF@Tku=SR^8Z5(?MD*754Qy59GJ79 zwt~d=BjE<9m;#6oRZ{@O>wy^V=Kz?=P}~m{QvfN#hcN(H6C)x_<|DacJ(NyBHDD9~ Y0IBb4e9?j`PXGV_07*qoM6N<$f)9d0s{jB1 diff --git a/recipes/icons/deutsche_welle_hr.png b/recipes/icons/deutsche_welle_hr.png index 034074e83de519fb0b0c300a4529d8e5dcda2a91..c0c5b8c0eb722ea657c3df60b9c714022273da36 100644 GIT binary patch literal 926 zcmY+BdrVUY6vjWKqZ7tpOGN5OrrC6E1iiaTbsc8lTD2Jv#+vy^#$?(}H?cCxCUtH~ zoPsi11)LAY3Kg@hN?=pNbabML((rx=LM;?6L~GmI+UM;p?e5}2vOmuGa!$TqzLT8t zob2_n(F>vh#ELfvb6Ji5x1Nn;`_h!S4_M)RmXVbKv?ybO`OmQP!fhLJvjD{s;J_gu zz^)EF1d0j3vK0`V0_N|jz50F{5HXUIDG_1EpZNS5cC|rv9fdbhbPHc~U~eZBJ=oue zZwGO37>7pj{TRx|acmO1bl80za@MAYq8s0^o&g*-pv;IL9zZ#T;tuTZ$9ID$9foQe zCmx~dG4^%i;2j*fhw=#=GofMU%6kn{UGI*WRHPoixU&#!q(H z4K~{94PG|7mz}rbloPd{#G^w7t1qu07rShrpHmy>DYVIKJ5T;Mecn-uDZ1@3JqewZJ)(wS+aGuZKnN&VfI^qc<=6YXI_ zGokQ+m08#7!?_UDG#Y|Y=a{*T3`fJnGzQQZ4)AFn`}>Gb-ditR8$Ytf%?@0-I7`Hx z<|ah(=OvFQ)7h0uEX@7B$Ey}xJBO-9y5bR+}|KkTpKv|cbPzetYC zF51Y8BsaeF4zsw4)bTCm<`)+#iZdJ9Dy3mi_}qox869 delta 170 zcmV;b09F5<2fG1~8Gi-<001BJ|6u?C0D?(GK~#9!V;Hnx6c{!AN5c1kI04FbfYRrI zxB-aYgA@w@aR5|cKbm3%5F09YABx{289bi>CIF@Tku=SR^8Z5(?MD*754Qy59GJ79 zwt~d=BjE<9m;#6oRZ{@O>wy^V=Kz?=P}~m{QvfN#hcN(H6C)x_<|DacJ(NyBHDD9~ Y0IBb4e9?j`PXGV_07*qoM6N<$f)9d0s{jB1 diff --git a/recipes/icons/deutsche_welle_pt.png b/recipes/icons/deutsche_welle_pt.png index 034074e83de519fb0b0c300a4529d8e5dcda2a91..c0c5b8c0eb722ea657c3df60b9c714022273da36 100644 GIT binary patch literal 926 zcmY+BdrVUY6vjWKqZ7tpOGN5OrrC6E1iiaTbsc8lTD2Jv#+vy^#$?(}H?cCxCUtH~ zoPsi11)LAY3Kg@hN?=pNbabML((rx=LM;?6L~GmI+UM;p?e5}2vOmuGa!$TqzLT8t zob2_n(F>vh#ELfvb6Ji5x1Nn;`_h!S4_M)RmXVbKv?ybO`OmQP!fhLJvjD{s;J_gu zz^)EF1d0j3vK0`V0_N|jz50F{5HXUIDG_1EpZNS5cC|rv9fdbhbPHc~U~eZBJ=oue zZwGO37>7pj{TRx|acmO1bl80za@MAYq8s0^o&g*-pv;IL9zZ#T;tuTZ$9ID$9foQe zCmx~dG4^%i;2j*fhw=#=GofMU%6kn{UGI*WRHPoixU&#!q(H z4K~{94PG|7mz}rbloPd{#G^w7t1qu07rShrpHmy>DYVIKJ5T;Mecn-uDZ1@3JqewZJ)(wS+aGuZKnN&VfI^qc<=6YXI_ zGokQ+m08#7!?_UDG#Y|Y=a{*T3`fJnGzQQZ4)AFn`}>Gb-ditR8$Ytf%?@0-I7`Hx z<|ah(=OvFQ)7h0uEX@7B$Ey}xJBO-9y5bR+}|KkTpKv|cbPzetYC zF51Y8BsaeF4zsw4)bTCm<`)+#iZdJ9Dy3mi_}qox869 delta 170 zcmV;b09F5<2fG1~8Gi-<001BJ|6u?C0D?(GK~#9!V;Hnx6c{!AN5c1kI04FbfYRrI zxB-aYgA@w@aR5|cKbm3%5F09YABx{289bi>CIF@Tku=SR^8Z5(?MD*754Qy59GJ79 zwt~d=BjE<9m;#6oRZ{@O>wy^V=Kz?=P}~m{QvfN#hcN(H6C)x_<|DacJ(NyBHDD9~ Y0IBb4e9?j`PXGV_07*qoM6N<$f)9d0s{jB1 diff --git a/recipes/icons/deutsche_welle_sr.png b/recipes/icons/deutsche_welle_sr.png index 034074e83de519fb0b0c300a4529d8e5dcda2a91..c0c5b8c0eb722ea657c3df60b9c714022273da36 100644 GIT binary patch literal 926 zcmY+BdrVUY6vjWKqZ7tpOGN5OrrC6E1iiaTbsc8lTD2Jv#+vy^#$?(}H?cCxCUtH~ zoPsi11)LAY3Kg@hN?=pNbabML((rx=LM;?6L~GmI+UM;p?e5}2vOmuGa!$TqzLT8t zob2_n(F>vh#ELfvb6Ji5x1Nn;`_h!S4_M)RmXVbKv?ybO`OmQP!fhLJvjD{s;J_gu zz^)EF1d0j3vK0`V0_N|jz50F{5HXUIDG_1EpZNS5cC|rv9fdbhbPHc~U~eZBJ=oue zZwGO37>7pj{TRx|acmO1bl80za@MAYq8s0^o&g*-pv;IL9zZ#T;tuTZ$9ID$9foQe zCmx~dG4^%i;2j*fhw=#=GofMU%6kn{UGI*WRHPoixU&#!q(H z4K~{94PG|7mz}rbloPd{#G^w7t1qu07rShrpHmy>DYVIKJ5T;Mecn-uDZ1@3JqewZJ)(wS+aGuZKnN&VfI^qc<=6YXI_ zGokQ+m08#7!?_UDG#Y|Y=a{*T3`fJnGzQQZ4)AFn`}>Gb-ditR8$Ytf%?@0-I7`Hx z<|ah(=OvFQ)7h0uEX@7B$Ey}xJBO-9y5bR+}|KkTpKv|cbPzetYC zF51Y8BsaeF4zsw4)bTCm<`)+#iZdJ9Dy3mi_}qox869 delta 170 zcmV;b09F5<2fG1~8Gi-<001BJ|6u?C0D?(GK~#9!V;Hnx6c{!AN5c1kI04FbfYRrI zxB-aYgA@w@aR5|cKbm3%5F09YABx{289bi>CIF@Tku=SR^8Z5(?MD*754Qy59GJ79 zwt~d=BjE<9m;#6oRZ{@O>wy^V=Kz?=P}~m{QvfN#hcN(H6C)x_<|DacJ(NyBHDD9~ Y0IBb4e9?j`PXGV_07*qoM6N<$f)9d0s{jB1 From 65ff07bf20e13c481c499d8ddc2849cb2d16e060 Mon Sep 17 00:00:00 2001 From: unkn0w7n <51942695+unkn0w7n@users.noreply.github.com> Date: Sun, 18 Jun 2023 20:24:03 +0530 Subject: [PATCH 6/7] fix error --- recipes/indian_express.recipe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/indian_express.recipe b/recipes/indian_express.recipe index 39a459427f..36cf1da7aa 100644 --- a/recipes/indian_express.recipe +++ b/recipes/indian_express.recipe @@ -99,7 +99,7 @@ class IndianExpress(BasicNewsRecipe): div = soup.find('div', attrs={'class':['nation', 'o-opin']}) for art in div.findAll(attrs={'class':['articles', 'o-opin-article']}): for a in art.findAll('a', href=True): - if not a.find('img') and not ('/profile/' in a['href'] or '/agency/' in a['href']):: + if not a.find('img') and not ('/profile/' in a['href'] or '/agency/' in a['href']): url = a['href'] title = self.tag_to_string(a) desc = '' From 190af1b84666d6ac58fd913895f1ffb2694a2aaf Mon Sep 17 00:00:00 2001 From: unkn0w7n <51942695+unkn0w7n@users.noreply.github.com> Date: Sun, 18 Jun 2023 20:46:14 +0530 Subject: [PATCH 7/7] Update psych.recipe --- recipes/psych.recipe | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/psych.recipe b/recipes/psych.recipe index 235489565c..757621f108 100644 --- a/recipes/psych.recipe +++ b/recipes/psych.recipe @@ -43,8 +43,8 @@ class PsychologyToday(BasicNewsRecipe): soup = self.index_to_soup(absurl(a['href'])) articles = [] for article in soup.findAll('div', attrs={'class':'article-text'}): - title = self.tag_to_string(article.find(['h2','h3'])).strip() - url = absurl(article.find(['h2','h3']).a['href']) + title = self.tag_to_string(article.find(attrs={'class':['h2','h3']})).strip() + url = absurl(article.find(attrs={'class':['h2','h3']}).a['href']) self.log('\n', title, 'at', url) desc = self.tag_to_string(article.find('p',**classes('description'))).strip() author = self.tag_to_string(article.find('p',**classes('byline')).a).strip()