From 764948ab372c13a70a5ab3d3b42d9e1c2b5e4198 Mon Sep 17 00:00:00 2001 From: unkn0w7n <51942695+unkn0w7n@users.noreply.github.com> Date: Sun, 22 Sep 2024 12:06:31 +0530 Subject: [PATCH] remove dead recipes These recipes are based on RSS feeds that no longer work. --- recipes/balkanist.recipe | 50 ------ recipes/bangkok_biz.recipe | 25 --- recipes/bankier_pl.recipe | 49 ------ recipes/bay_citizen.recipe | 46 ------ recipes/beppe_grillo.recipe | 16 -- recipes/berliner_zeitung.recipe | 48 ------ recipes/berlingske_dk.recipe | 49 ------ recipes/bighollywood.recipe | 60 ------- recipes/birgun_gazetesi.recipe | 45 ------ recipes/birmingham_post.recipe | 56 ------- recipes/bitacora.recipe | 57 ------- recipes/biz_portal.recipe | 38 ----- recipes/boortz.recipe | 31 ---- recipes/borse_online.recipe | 34 ---- recipes/boxis.recipe | 18 --- recipes/brand_eins.recipe | 130 ---------------- recipes/brasil_de_fato.recipe | 33 ---- recipes/brecha.recipe | 81 ---------- recipes/brhat.recipe | 16 -- recipes/bsi_news.recipe | 63 -------- recipes/buchreport.recipe | 45 ------ recipes/buckmasters.recipe | 49 ------ recipes/buenosaireseconomico.recipe | 53 ------- recipes/buffalo_news.recipe | 49 ------ recipes/businessworldin.recipe | 36 ----- recipes/cafcaf_dergisi.recipe | 14 -- recipes/camera_di_commercio_di_bari.recipe | 20 --- recipes/capes_n_babes.recipe | 12 -- recipes/capital.recipe | 41 ----- recipes/capital_de.recipe | 84 ---------- recipes/caravan_magazine_hindi.recipe | 116 -------------- recipes/carta.recipe | 51 ------ recipes/catholic_daily_readings.recipe | 17 -- recipes/cd_action.recipe | 28 ---- recipes/cdrinfo_pl.recipe | 74 --------- recipes/ceska_pozice.recipe | 70 --------- recipes/cesky_rozhlas_6.recipe | 27 ---- recipes/cetnixploitation.recipe | 34 ---- recipes/cgm_pl.recipe | 48 ------ recipes/chicago_breaking_news.recipe | 44 ------ recipes/china_economic_net.recipe | 56 ------- recipes/china_times.recipe | 41 ----- recipes/chipro.recipe | 46 ------ recipes/chosun.recipe | 29 ---- recipes/cinco_dias.recipe | 71 --------- recipes/cinebel_be.recipe | 46 ------ recipes/cio.recipe | 131 ---------------- recipes/cio_magazine.recipe | 147 ------------------ recipes/cityavisen_dk.recipe | 28 ---- recipes/cjr.recipe | 16 -- recipes/clarion_ledger.recipe | 28 ---- recipes/clic_rbs.recipe | 53 ------- recipes/climate_progress.recipe | 63 -------- recipes/coding_horror.recipe | 33 ---- recipes/columbusdispatch.recipe | 54 ------- recipes/computerworld_pl.recipe | 27 ---- recipes/consortium_news.recipe | 78 ---------- recipes/contemporary_argentine_writers.recipe | 33 ---- recipes/corriere_della_sera_en.recipe | 95 ----------- recipes/corriere_dello_sport.recipe | 55 ------- recipes/cosmopolitan.recipe | 66 -------- recipes/cosmopolitan_de.recipe | 36 ----- recipes/cosmopolitan_uk.recipe | 41 ----- recipes/cotidianul.recipe | 66 -------- recipes/counterpunch.recipe | 11 -- recipes/countryfile.recipe | 44 ------ recipes/courier_mail.recipe | 33 ---- recipes/courrier.recipe | 28 ---- recipes/craigslist.recipe | 21 --- recipes/credit_slips.recipe | 45 ------ recipes/cronica.recipe | 79 ---------- recipes/curierulnational.recipe | 50 ------ recipes/cyberpresse.recipe | 56 ------- recipes/cynewslive.recipe | 118 -------------- recipes/icons/balkanist.png | Bin 557 -> 0 bytes recipes/icons/bangkok_biz.png | Bin 297 -> 0 bytes recipes/icons/bay_citizen.png | Bin 1042 -> 0 bytes recipes/icons/beppe_grillo.png | Bin 2766 -> 0 bytes recipes/icons/berliner_zeitung.png | Bin 638 -> 0 bytes recipes/icons/berlingske_dk.png | Bin 445 -> 0 bytes recipes/icons/bighollywood.png | Bin 1077 -> 0 bytes recipes/icons/birmingham_post.png | Bin 550 -> 0 bytes recipes/icons/biz_portal.png | Bin 1043 -> 0 bytes recipes/icons/boortz.png | Bin 198 -> 0 bytes recipes/icons/borse_online.png | Bin 206 -> 0 bytes recipes/icons/brand_eins.png | Bin 470 -> 0 bytes recipes/icons/brasil_de_fato.png | Bin 979 -> 0 bytes recipes/icons/brecha.png | Bin 644 -> 0 bytes recipes/icons/bsi_news.png | Bin 1238 -> 0 bytes recipes/icons/buchreport.png | Bin 974 -> 0 bytes recipes/icons/buckmasters.png | Bin 603 -> 0 bytes recipes/icons/buenosaireseconomico.png | Bin 389 -> 0 bytes recipes/icons/buffalonews.png | Bin 394 -> 0 bytes recipes/icons/businessworldin.png | Bin 237 -> 0 bytes recipes/icons/cafcaf_dergisi.png | Bin 2050 -> 0 bytes recipes/icons/camera_di_commercio_di_bari.png | Bin 2127 -> 0 bytes recipes/icons/capital.png | Bin 494 -> 0 bytes recipes/icons/capital_de.png | Bin 1127 -> 0 bytes recipes/icons/caravan_magazine_hindi.png | Bin 1191 -> 0 bytes recipes/icons/carta.png | Bin 195 -> 0 bytes recipes/icons/catholic_daily_readings.png | Bin 195 -> 0 bytes recipes/icons/cd_action.png | Bin 563 -> 0 bytes recipes/icons/cdrinfo_pl.png | Bin 640 -> 0 bytes recipes/icons/ceskapozice.png | Bin 2153 -> 0 bytes recipes/icons/cesky_rozhlas_6.png | Bin 1200 -> 0 bytes recipes/icons/cgm_pl.png | Bin 156 -> 0 bytes recipes/icons/chetnixploitation.png | Bin 250 -> 0 bytes recipes/icons/chicago_breaking_news.png | Bin 605 -> 0 bytes recipes/icons/china_economic_net.png | Bin 570 -> 0 bytes recipes/icons/china_times.png | Bin 641 -> 0 bytes recipes/icons/chipro.png | Bin 153 -> 0 bytes recipes/icons/chosun.png | Bin 347 -> 0 bytes recipes/icons/cinco_dias.png | Bin 994 -> 0 bytes recipes/icons/cinebel_be.png | Bin 680 -> 0 bytes recipes/icons/cio.png | Bin 1099 -> 0 bytes recipes/icons/cio_magazine.png | Bin 1132 -> 0 bytes recipes/icons/cityavisen_dk.png | Bin 262 -> 0 bytes recipes/icons/cjr.png | Bin 1063 -> 0 bytes recipes/icons/clarion_ledger.png | Bin 1932 -> 0 bytes recipes/icons/clic_rbs.png | Bin 1143 -> 0 bytes recipes/icons/coding_horror.png | Bin 327 -> 0 bytes recipes/icons/columbusdispatch.png | Bin 644 -> 0 bytes recipes/icons/computerworld_pl.png | Bin 229 -> 0 bytes recipes/icons/consortium_news.png | Bin 696 -> 0 bytes .../icons/contemporary_argentine_writers.png | Bin 474 -> 0 bytes recipes/icons/corriere_della_sera_en.png | Bin 278 -> 0 bytes recipes/icons/corriere_dello_sport.png | Bin 251 -> 0 bytes recipes/icons/cosmopolitan.png | Bin 506 -> 0 bytes recipes/icons/cosmopolitan_de.png | Bin 961 -> 0 bytes recipes/icons/cosmopolitan_uk.png | Bin 1750 -> 0 bytes recipes/icons/cotidianul.png | Bin 380 -> 0 bytes recipes/icons/counterpunch.png | Bin 935 -> 0 bytes recipes/icons/countryfile.png | Bin 928 -> 0 bytes recipes/icons/courier_mail.png | Bin 835 -> 0 bytes recipes/icons/courrier.png | Bin 2317 -> 0 bytes recipes/icons/credit_slips.png | Bin 3239 -> 0 bytes recipes/icons/cronica.png | Bin 514 -> 0 bytes recipes/icons/curierulnational.png | Bin 985 -> 0 bytes recipes/icons/cyberpresse.png | Bin 823 -> 0 bytes 139 files changed, 3681 deletions(-) delete mode 100644 recipes/balkanist.recipe delete mode 100644 recipes/bangkok_biz.recipe delete mode 100644 recipes/bankier_pl.recipe delete mode 100644 recipes/bay_citizen.recipe delete mode 100644 recipes/beppe_grillo.recipe delete mode 100644 recipes/berliner_zeitung.recipe delete mode 100644 recipes/berlingske_dk.recipe delete mode 100644 recipes/bighollywood.recipe delete mode 100644 recipes/birgun_gazetesi.recipe delete mode 100644 recipes/birmingham_post.recipe delete mode 100644 recipes/bitacora.recipe delete mode 100644 recipes/biz_portal.recipe delete mode 100644 recipes/boortz.recipe delete mode 100644 recipes/borse_online.recipe delete mode 100644 recipes/boxis.recipe delete mode 100644 recipes/brand_eins.recipe delete mode 100644 recipes/brasil_de_fato.recipe delete mode 100644 recipes/brecha.recipe delete mode 100644 recipes/brhat.recipe delete mode 100644 recipes/bsi_news.recipe delete mode 100644 recipes/buchreport.recipe delete mode 100644 recipes/buckmasters.recipe delete mode 100644 recipes/buenosaireseconomico.recipe delete mode 100644 recipes/buffalo_news.recipe delete mode 100644 recipes/businessworldin.recipe delete mode 100644 recipes/cafcaf_dergisi.recipe delete mode 100644 recipes/camera_di_commercio_di_bari.recipe delete mode 100644 recipes/capes_n_babes.recipe delete mode 100644 recipes/capital.recipe delete mode 100644 recipes/capital_de.recipe delete mode 100644 recipes/caravan_magazine_hindi.recipe delete mode 100644 recipes/carta.recipe delete mode 100644 recipes/catholic_daily_readings.recipe delete mode 100644 recipes/cd_action.recipe delete mode 100644 recipes/cdrinfo_pl.recipe delete mode 100644 recipes/ceska_pozice.recipe delete mode 100644 recipes/cesky_rozhlas_6.recipe delete mode 100644 recipes/cetnixploitation.recipe delete mode 100644 recipes/cgm_pl.recipe delete mode 100644 recipes/chicago_breaking_news.recipe delete mode 100644 recipes/china_economic_net.recipe delete mode 100644 recipes/china_times.recipe delete mode 100644 recipes/chipro.recipe delete mode 100644 recipes/chosun.recipe delete mode 100644 recipes/cinco_dias.recipe delete mode 100644 recipes/cinebel_be.recipe delete mode 100644 recipes/cio.recipe delete mode 100644 recipes/cio_magazine.recipe delete mode 100644 recipes/cityavisen_dk.recipe delete mode 100644 recipes/cjr.recipe delete mode 100644 recipes/clarion_ledger.recipe delete mode 100644 recipes/clic_rbs.recipe delete mode 100644 recipes/climate_progress.recipe delete mode 100644 recipes/coding_horror.recipe delete mode 100644 recipes/columbusdispatch.recipe delete mode 100644 recipes/computerworld_pl.recipe delete mode 100644 recipes/consortium_news.recipe delete mode 100644 recipes/contemporary_argentine_writers.recipe delete mode 100644 recipes/corriere_della_sera_en.recipe delete mode 100644 recipes/corriere_dello_sport.recipe delete mode 100644 recipes/cosmopolitan.recipe delete mode 100644 recipes/cosmopolitan_de.recipe delete mode 100644 recipes/cosmopolitan_uk.recipe delete mode 100644 recipes/cotidianul.recipe delete mode 100644 recipes/counterpunch.recipe delete mode 100644 recipes/countryfile.recipe delete mode 100644 recipes/courier_mail.recipe delete mode 100644 recipes/courrier.recipe delete mode 100644 recipes/craigslist.recipe delete mode 100644 recipes/credit_slips.recipe delete mode 100644 recipes/cronica.recipe delete mode 100644 recipes/curierulnational.recipe delete mode 100644 recipes/cyberpresse.recipe delete mode 100644 recipes/cynewslive.recipe delete mode 100644 recipes/icons/balkanist.png delete mode 100644 recipes/icons/bangkok_biz.png delete mode 100644 recipes/icons/bay_citizen.png delete mode 100644 recipes/icons/beppe_grillo.png delete mode 100644 recipes/icons/berliner_zeitung.png delete mode 100644 recipes/icons/berlingske_dk.png delete mode 100644 recipes/icons/bighollywood.png delete mode 100644 recipes/icons/birmingham_post.png delete mode 100644 recipes/icons/biz_portal.png delete mode 100644 recipes/icons/boortz.png delete mode 100644 recipes/icons/borse_online.png delete mode 100644 recipes/icons/brand_eins.png delete mode 100644 recipes/icons/brasil_de_fato.png delete mode 100644 recipes/icons/brecha.png delete mode 100644 recipes/icons/bsi_news.png delete mode 100644 recipes/icons/buchreport.png delete mode 100644 recipes/icons/buckmasters.png delete mode 100644 recipes/icons/buenosaireseconomico.png delete mode 100644 recipes/icons/buffalonews.png delete mode 100644 recipes/icons/businessworldin.png delete mode 100644 recipes/icons/cafcaf_dergisi.png delete mode 100644 recipes/icons/camera_di_commercio_di_bari.png delete mode 100644 recipes/icons/capital.png delete mode 100644 recipes/icons/capital_de.png delete mode 100644 recipes/icons/caravan_magazine_hindi.png delete mode 100644 recipes/icons/carta.png delete mode 100644 recipes/icons/catholic_daily_readings.png delete mode 100644 recipes/icons/cd_action.png delete mode 100644 recipes/icons/cdrinfo_pl.png delete mode 100644 recipes/icons/ceskapozice.png delete mode 100644 recipes/icons/cesky_rozhlas_6.png delete mode 100644 recipes/icons/cgm_pl.png delete mode 100644 recipes/icons/chetnixploitation.png delete mode 100644 recipes/icons/chicago_breaking_news.png delete mode 100644 recipes/icons/china_economic_net.png delete mode 100644 recipes/icons/china_times.png delete mode 100644 recipes/icons/chipro.png delete mode 100644 recipes/icons/chosun.png delete mode 100644 recipes/icons/cinco_dias.png delete mode 100644 recipes/icons/cinebel_be.png delete mode 100644 recipes/icons/cio.png delete mode 100644 recipes/icons/cio_magazine.png delete mode 100644 recipes/icons/cityavisen_dk.png delete mode 100644 recipes/icons/cjr.png delete mode 100644 recipes/icons/clarion_ledger.png delete mode 100644 recipes/icons/clic_rbs.png delete mode 100644 recipes/icons/coding_horror.png delete mode 100644 recipes/icons/columbusdispatch.png delete mode 100644 recipes/icons/computerworld_pl.png delete mode 100644 recipes/icons/consortium_news.png delete mode 100644 recipes/icons/contemporary_argentine_writers.png delete mode 100644 recipes/icons/corriere_della_sera_en.png delete mode 100644 recipes/icons/corriere_dello_sport.png delete mode 100644 recipes/icons/cosmopolitan.png delete mode 100644 recipes/icons/cosmopolitan_de.png delete mode 100644 recipes/icons/cosmopolitan_uk.png delete mode 100644 recipes/icons/cotidianul.png delete mode 100644 recipes/icons/counterpunch.png delete mode 100644 recipes/icons/countryfile.png delete mode 100644 recipes/icons/courier_mail.png delete mode 100644 recipes/icons/courrier.png delete mode 100644 recipes/icons/credit_slips.png delete mode 100644 recipes/icons/cronica.png delete mode 100644 recipes/icons/curierulnational.png delete mode 100644 recipes/icons/cyberpresse.png diff --git a/recipes/balkanist.recipe b/recipes/balkanist.recipe deleted file mode 100644 index 59a92906cc..0000000000 --- a/recipes/balkanist.recipe +++ /dev/null @@ -1,50 +0,0 @@ -# -*- mode: python -*- -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = '2017, Darko Miletic ' -''' -http://balkanist.net/magazine -''' -from calibre.web.feeds.news import BasicNewsRecipe - - -class Pagina12(BasicNewsRecipe): - title = 'Balkanist' - __author__ = 'Darko Miletic' - description = 'Balkanist is an experimental, bilingual platform featuring politics, analysis, culture, and criticism for a smart international audience underwhelmed by what is currently on offer. Our aim is to provide bold, uncompromising coverage of the Balkan region and everything to its East. We are currently entirely independent, self- and reader-funded, and are not affiliated with any organization, company, or government institution.' # noqa - publisher = 'Balkanist' - category = 'news, politics, Balkans' - oldest_article = 30 - no_stylesheets = True - encoding = 'utf8' - use_embedded_content = False - language = 'en' - remove_empty_feeds = True - publication_type = 'magazine' - auto_cleanup = True - masthead_url = 'http://media.balkanist.net/2013/07/Balkanist-Magazine-cover.png' - ignore_duplicate_articles = {'url'} - extra_css = """ - body{font-family: Lora,serif} - img{margin-top:1em; margin-bottom: 1em; display:block} - """ - - conversion_options = { - 'comment': description, - 'tags': category, - 'publisher': publisher, - 'language': language - } - - remove_tags = [ - dict(name=['meta', 'link']), - ] - - feeds = [ - (u'Magazine', u'http://balkanist.net/magazine/feed/'), - (u'News', u'http://balkanist.net/news/feed/'), - (u'Commentary', u'http://balkanist.net/commentary/feed/'), - (u'Arts and Culture', u'http://balkanist.net/arts-and-culture/feed/'), - (u'Politics', u'http://balkanist.net/politics/feed/'), - ] diff --git a/recipes/bangkok_biz.recipe b/recipes/bangkok_biz.recipe deleted file mode 100644 index f0ec772e45..0000000000 --- a/recipes/bangkok_biz.recipe +++ /dev/null @@ -1,25 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1290689337(BasicNewsRecipe): - __author__ = 'Anat R.' - language = 'th' - title = u'Bangkok Biz News' - oldest_article = 7 - max_articles_per_feed = 100 - no_stylesheets = True - remove_javascript = True - use_embedded_content = False - feeds = [(u'Headlines', - u'http://www.bangkokbiznews.com/home/services/rss/home.xml'), - (u'Politics', u'http://www.bangkokbiznews.com/home/services/rss/politics.xml'), - (u'Business', u'http://www.bangkokbiznews.com/home/services/rss/business.xml'), - (u'Finance', u' http://www.bangkokbiznews.com/home/services/rss/finance.xml'), - (u'Technology', u' http://www.bangkokbiznews.com/home/services/rss/it.xml')] - remove_tags_before = dict(name='div', attrs={'class': 'box-Detailcontent'}) - remove_tags_after = dict(name='p', attrs={'class': 'allTags'}) - remove_tags = [] - remove_tags.append(dict(name='div', attrs={'id': 'content-tools'})) - remove_tags.append(dict(name='p', attrs={'class': 'allTags'})) - remove_tags.append(dict(name='div', attrs={'id': 'morePic'})) - remove_tags.append(dict(name='ul', attrs={'class': 'tabs-nav'})) diff --git a/recipes/bankier_pl.recipe b/recipes/bankier_pl.recipe deleted file mode 100644 index b7cc2cce8f..0000000000 --- a/recipes/bankier_pl.recipe +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__author__ = 'teepel ' - -''' -bankier.pl -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class bankier(BasicNewsRecipe): - title = u'Bankier.pl' - __author__ = 'teepel ' - language = 'pl' - description = 'Polski portal finansowy. Informacje o: gospodarka, inwestowanie, finanse osobiste, prowadzenie firmy, kursy walut, notowania akcji, fundusze.' # noqa - masthead_url = 'http://www.bankier.pl/gfx/hd-mid-02.gif' - INDEX = 'http://bankier.pl/' - remove_empty_feeds = True - oldest_article = 1 - max_articles_per_feed = 100 - remove_javascript = True - no_stylesheets = True - simultaneous_downloads = 5 - - keep_only_tags = [] - keep_only_tags.append(dict(name='div', attrs={'align': 'left'})) - - remove_tags = [] - remove_tags.append(dict(name='table', attrs={'cellspacing': '2'})) - remove_tags.append(dict(name='div', attrs={'align': 'center'})) - remove_tags.append(dict(name='img', attrs={'src': '/gfx/hd-mid-02.gif'})) - - feeds = [ - (u'Wiadomości dnia', u'http://feeds.feedburner.com/bankier-wiadomosci-dnia'), - (u'Finanse osobiste', u'http://feeds.feedburner.com/bankier-finanse-osobiste'), - (u'Firma', u'http://feeds.feedburner.com/bankier-firma'), - (u'Giełda', u'http://feeds.feedburner.com/bankier-gielda'), - (u'Rynek walutowy', u'http://feeds.feedburner.com/bankier-rynek-walutowy'), - (u'Komunikaty ze spółek', u'http://feeds.feedburner.com/bankier-espi'), - ] - - def print_version(self, url): - segment = url.split('.') - urlPart = segment[2] - segments = urlPart.split('-') - urlPart2 = segments[-1] - return 'http://www.bankier.pl/wiadomosci/print.html?article_id=' + urlPart2 diff --git a/recipes/bay_citizen.recipe b/recipes/bay_citizen.recipe deleted file mode 100644 index 5c9aac6450..0000000000 --- a/recipes/bay_citizen.recipe +++ /dev/null @@ -1,46 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class TheBayCitizen(BasicNewsRecipe): - title = 'The Bay Citizen' - language = 'en' - __author__ = 'noah' - description = 'The Bay Citizen' - publisher = 'The Bay Citizen' - INDEX = u'http://www.baycitizen.org' - category = 'news' - oldest_article = 2 - max_articles_per_feed = 20 - no_stylesheets = True - masthead_url = 'http://media.baycitizen.org/images/layout/logo1.png' - feeds = [('Main Feed', 'http://www.baycitizen.org/feeds/stories/')] - keep_only_tags = [dict(name='div', attrs={'class': 'story'})] - remove_tags = [ - dict(name='div', attrs={'class': 'socialBar'}), - dict(name='div', attrs={'id': 'text-resize'}), - dict(name='div', attrs={'class': 'story relatedContent'}), - dict(name='div', attrs={'id': 'comment_status_loading'}), - ] - - def append_page(self, soup, appendtag, position): - pager = soup.find('a', attrs={'class': 'stry-next'}) - if pager: - nexturl = self.INDEX + pager['href'] - soup2 = self.index_to_soup(nexturl) - texttag = soup2.find('div', attrs={'class': 'body'}) - for it in texttag.findAll(style=True): - del it['style'] - newpos = len(texttag.contents) - self.append_page(soup2, texttag, newpos) - texttag.extract() - appendtag.insert(position, texttag) - - def preprocess_html(self, soup): - for item in soup.findAll(style=True): - del item['style'] - self.append_page(soup, soup.body, 3) - garbage = soup.findAll(id='story-pagination') - [trash.extract() for trash in garbage] - garbage = soup.findAll('em', 'cont-from-prev') - [trash.extract() for trash in garbage] - return soup diff --git a/recipes/beppe_grillo.recipe b/recipes/beppe_grillo.recipe deleted file mode 100644 index 02d23b4e55..0000000000 --- a/recipes/beppe_grillo.recipe +++ /dev/null @@ -1,16 +0,0 @@ -__license__ = 'GPL v3' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1327747616(BasicNewsRecipe): - title = u'Beppe Grillo' - oldest_article = 7 - max_articles_per_feed = 100 - auto_cleanup = True - - feeds = [(u'Beppe Grillo', u'http://feeds.feedburner.com/beppegrillo/atom')] - description = 'Blog of the famous comedian and politician Beppe Grillo - v1.00 (28, January 2012)' - __author__ = 'faber1971' - - language = 'it' diff --git a/recipes/berliner_zeitung.recipe b/recipes/berliner_zeitung.recipe deleted file mode 100644 index cda1568514..0000000000 --- a/recipes/berliner_zeitung.recipe +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -# License: GPLv3 Copyright: 2016, Kovid Goyal - -from __future__ import absolute_import, division, print_function, unicode_literals - -from calibre.web.feeds.recipes import BasicNewsRecipe - - -def classes(classes): - q = frozenset(classes.split(' ')) - return dict(attrs={'class': lambda x: x and frozenset(x.split()).intersection(q)}) - - -class BerlinerZeitung(BasicNewsRecipe): - title = 'Berliner Zeitung' - __author__ = 'Kovid Goyal' - language = 'de' - description = 'Berliner Zeitung RSS' - timefmt = ' [%d.%m.%Y]' - ignore_duplicate_articles = {'title', 'url'} - remove_empty_feeds = True - - # oldest_article = 7.0 - no_stylesheets = True - remove_javascript = True - use_embedded_content = False - publication_type = 'newspaper' - - keep_only_tags = [ - classes('dm_article_body dm_article_header'), - ] - remove_tags = [ - classes('dm_article_share'), - ] - - feeds = [x.split() for x in [ - 'Berlin http://www.berliner-zeitung.de/blueprint/servlet/xml/berliner-zeitung/23699382-asYahooFeed.xml', - 'Brandenburg http://www.berliner-zeitung.de/blueprint/servlet/xml/berliner-zeitung/23699570-asYahooFeed.xml', - 'Politik http://www.berliner-zeitung.de/blueprint/servlet/xml/berliner-zeitung/23699614-asYahooFeed.xml', - 'Wirtschaft http://www.berliner-zeitung.de/blueprint/servlet/xml/berliner-zeitung/23699644-asYahooFeed.xml', - 'Sport http://www.berliner-zeitung.de/blueprint/servlet/xml/berliner-zeitung/23699874-asYahooFeed.xml', - 'Kultur http://www.berliner-zeitung.de/blueprint/servlet/xml/berliner-zeitung/23700020-asYahooFeed.xml', - 'Panorama http://www.berliner-zeitung.de/blueprint/servlet/xml/berliner-zeitung/23700178-asYahooFeed.xml', - 'Wissen http://www.berliner-zeitung.de/blueprint/servlet/xml/berliner-zeitung/23700222-asYahooFeed.xml', - 'Digital http://www.berliner-zeitung.de/blueprint/servlet/xml/berliner-zeitung/23700594-asYahooFeed.xml', - 'Ratgeber http://www.berliner-zeitung.de/blueprint/servlet/xml/berliner-zeitung/23700190-asYahooFeed.xml', - ]] diff --git a/recipes/berlingske_dk.recipe b/recipes/berlingske_dk.recipe deleted file mode 100644 index 2900eee704..0000000000 --- a/recipes/berlingske_dk.recipe +++ /dev/null @@ -1,49 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, Darko Miletic ' -''' -berlingske.dk -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Berlingske_dk(BasicNewsRecipe): - title = 'Berlingske Tidende' - __author__ = 'Darko Miletic' - description = 'News from Denmark' - publisher = 'berlingske.dk' - category = 'news, politics, Denmark' - oldest_article = 2 - max_articles_per_feed = 100 - no_stylesheets = True - remove_empty_feeds = True - use_embedded_content = False - remove_javascript = True - publication_type = 'newspaper' - encoding = 'utf8' - language = 'da' - auto_cleanup = True - extra_css = ''' - .manchet {color:#888888;} - .dateline {font-size: x-small; color:#444444;} - .manchet,.dateline { font-family: Cambria,Georgia,Times,"Times New Roman",serif } - .body {font-family: Arial,Helvetica,sans-serif } - ''' - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - feeds = [ - - (u'Breaking news', u'http://www.b.dk/breaking/rss'), - (u'Seneste nyt', u'http://www.b.dk/seneste/rss'), - (u'Topnyheder', u'http://www.b.dk/top/rss'), - (u'Danmark', u'http://www.b.dk/danmark/seneste/rss'), - (u'Verden', u'http://www.b.dk/verden/seneste/rss'), - (u'Klima', u'http://www.b.dk/klima/seneste/rss'), - (u'Debat', u'http://www.b.dk/debat/seneste/rss'), - (u'Koebenhavn', u'http://www.b.dk/koebenhavn/seneste/rss'), - (u'Politik', u'http://www.b.dk/politik/seneste/rss'), - (u'Kultur', u'http://www.b.dk/kultur/seneste/rss') - ] diff --git a/recipes/bighollywood.recipe b/recipes/bighollywood.recipe deleted file mode 100644 index 0f0c06760d..0000000000 --- a/recipes/bighollywood.recipe +++ /dev/null @@ -1,60 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2011, Darko Miletic ' -''' -bighollywood.breitbart.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class BigHollywood(BasicNewsRecipe): - title = 'Big Hollywood' - __author__ = 'Darko Miletic' - description = 'News and articles from the media world' - publisher = 'Big Hollywood' - category = 'news, media, art, literature, movies, politics, USA, Hollywood' - oldest_article = 7 - max_articles_per_feed = 200 - no_stylesheets = True - encoding = 'utf8' - use_embedded_content = False - language = 'en' - remove_empty_feeds = True - publication_type = 'blog' - extra_css = """ - body{font-family: Arial,sans-serif } - """ - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - keep_only_tags = [dict(attrs={'class': 'postcontent'})] - remove_tags = [ - dict(name=['meta', 'link', 'link', 'iframe', 'embed', 'object']), dict( - name='p', attrs={'class': ['post_meta_links', 'postfooter']}) - ] - remove_attributes = ['original', 'onclick'] - - feeds = [(u'Articles', u'http://bighollywood.breitbart.com/feed/')] - - def preprocess_html(self, soup): - for item in soup.findAll(style=True): - del item['style'] - 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: - if limg['src'].endswith('BlogPrintButton.png'): - limg.extract() - item.name = 'div' - item.attrs = [] - else: - str = self.tag_to_string(item) - item.replaceWith(str) - for item in soup.findAll('img', alt=False): - item['alt'] = 'image' - return soup diff --git a/recipes/birgun_gazetesi.recipe b/recipes/birgun_gazetesi.recipe deleted file mode 100644 index 451d0dda5a..0000000000 --- a/recipes/birgun_gazetesi.recipe +++ /dev/null @@ -1,45 +0,0 @@ -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Birgun (BasicNewsRecipe): - - title = u'Birgün Gazetesi' - __author__ = u'Osman Kaysan' - oldest_article = 7 - max_articles_per_feed = 150 - use_embedded_content = False - description = 'Birgun gazatesi haberleri, kose yazarlari' - publisher = 'Birgün' - category = 'news,haberler,turkce,gazete,birgun' - language = 'tr' - no_stylesheets = True - publication_type = 'newspaper' - - conversion_options = { - 'comments': description, 'tags': category, 'language': language, 'publisher': publisher, 'linearize_tables': True, 'remove_paragraph_spacing': True, - } - - cover_img_url = 'http://www.birgun.net/i/birgun.png' - masthead_url = 'http://www.birgun.net/i/birgun.png' - - remove_attributes = ['width', 'height'] - - remove_tags_before = dict(name='h2', attrs={'class': 'storyHeadline'}) - remove_tags_after = dict(name='tr', attrs={'valign': 'top'}) - remove_tags = [dict(name='div', attrs={'id': 'byLine'}), dict(name='div', attrs={'class': 'toollinks'}), dict(name='div', attrs={ - 'class': 'main-lead'}), dict(name='div', attrs={'class': 'addthis_toolbox addthis_default_style'}), dict(name='a', attrs={'class': 'addthis_button'})] - - remove_empty_feeds = True - - feeds = [ - - (u'Güncel', u'http://www.birgun.net/actuels.xml'), - (u'Köşe Yazarları', u'http://www.birgun.net/writer.xml'), - (u'Politika', u'http://www.birgun.net/politics.xml'), - (u'Ekonomi', u'http://www.birgun.net/economic.xml'), - (u'Çalışma Yaşamı', u'http://www.birgun.net/workers.xml'), - (u'Dünya', u'http://www.birgun.net/worlds.xml'), - (u'Yaşam', u'http://www.birgun.net/lifes.xml') - ] diff --git a/recipes/birmingham_post.recipe b/recipes/birmingham_post.recipe deleted file mode 100644 index e87b215def..0000000000 --- a/recipes/birmingham_post.recipe +++ /dev/null @@ -1,56 +0,0 @@ -from __future__ import print_function - -import re - -import mechanize -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1306097511(BasicNewsRecipe): - title = u'Birmingham post' - description = 'Author D.Asbury. News for Birmingham UK' - __author__ = 'Dave Asbury' - cover_url = 'http://profile.ak.fbcdn.net/hprofile-ak-snc4/161987_9010212100_2035706408_n.jpg' - oldest_article = 2 - max_articles_per_feed = 20 - linearize_tables = True - remove_empty_feeds = True - remove_javascript = True - no_stylesheets = True - auto_cleanup = True - language = 'en_GB' - compress_news_images = True - cover_url = 'http://profile.ak.fbcdn.net/hprofile-ak-snc4/161987_9010212100_2035706408_n.jpg' - - masthead_url = 'http://www.trinitymirror.com/images/birminghampost-logo.gif' - - def get_cover_url(self): - soup = self.index_to_soup('http://www.birminghampost.net') - # look for the block containing the sun button and url - cov = soup.find(attrs={'height': re.compile( - '3'), 'alt': re.compile('Post')}) - print() - print('%%%%%%%%%%%%%%%', cov) - print() - cov2 = str(cov['src']) - print('88888888 ', cov2, ' 888888888888') - - # cover_url=cov2 - # return cover_url - br = mechanize.Browser() - br.set_handle_redirect(False) - try: - br.open_novisit(cov2) - cover_url = cov2 - except: - cover_url = 'http://profile.ak.fbcdn.net/hprofile-ak-snc4/161987_9010212100_2035706408_n.jpg' - return cover_url - - feeds = [ - (u'West Mids. News', - u'http://www.birminghampost.net/news/west-midlands-news/rss.xml'), - (u'UK News', u'http://www.birminghampost.net/news/uk-news/rss.xml'), - (u'Sports', u'http://www.birminghampost.net/midlands-birmingham-sport/rss.xml'), - (u'Bloggs & Comments', u'http://www.birminghampost.net/comment/rss.xml') - - ] diff --git a/recipes/bitacora.recipe b/recipes/bitacora.recipe deleted file mode 100644 index 7de43e0b67..0000000000 --- a/recipes/bitacora.recipe +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__author__ = '2010, Gustavo Azambuja ' -''' -bitacora.com.uy -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class General(BasicNewsRecipe): - title = 'bitacora.com.uy' - __author__ = 'Gustavo Azambuja' - description = 'Noticias de Uruguay' - language = 'es_UY' - timefmt = '[%a, %d %b, %Y]' - use_embedded_content = False - recursion = 5 - encoding = 'iso-8859-1' - remove_javascript = True - no_stylesheets = True - - oldest_article = 2 - max_articles_per_feed = 100 - keep_only_tags = [dict(id=['txt'])] - remove_tags = [ - dict(name='div', attrs={'class': 'tablafoot'}), - dict(name=['object', 'h4']), - dict(name=['object', 'link']) - ] - - remove_attributes = ['width', 'height', 'style', 'font', 'color'] - - extra_css = ''' - h1{font-family:Geneva, Arial, Helvetica, sans-serif;color:#154B7A;} - h3{font-size: 14px;color:#999999; font-family:Geneva, Arial, Helvetica, sans-serif;font-weight: bold;} - h2{color:#666666; font-family:Geneva, Arial, Helvetica, sans-serif;font-size:small;} - p {font-family:Arial,Helvetica,sans-serif;} - ''' - feeds = [ - (u'Titulares', u'http://www.bitacora.com.uy/anxml.cgi?15') - ] - - def get_cover_url(self): - cover_url = None - index = 'http://www.bitacora.com.uy' - soup = self.index_to_soup(index) - link_item = soup.find('img', attrs={'class': 'imgtapa'}) - if link_item: - cover_url = "http://www.bitacora.com.uy/" + link_item['src'] - return cover_url - - def preprocess_html(self, soup): - for item in soup.findAll(style=True): - del item['style'] - return soup diff --git a/recipes/biz_portal.recipe b/recipes/biz_portal.recipe deleted file mode 100644 index 32cecc4b72..0000000000 --- a/recipes/biz_portal.recipe +++ /dev/null @@ -1,38 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1283848012(BasicNewsRecipe): - description = 'This is a recipe of BizPortal.co.il.' - cover_url = 'http://www.bizportal.co.il/shukhahon/images/bizportal.jpg' - title = u'BizPortal' - language = 'he' - __author__ = 'marbs' - extra_css = 'img {max-width:100%;} body{direction: rtl;},title{direction: rtl; } ,article_description{direction: rtl; }, a.article{direction: rtl; } ,calibre_feed_description{direction: rtl; }' # noqa - simultaneous_downloads = 5 - remove_javascript = True - timefmt = '[%a, %d %b, %Y]' - remove_empty_feeds = True - oldest_article = 1 - max_articles_per_feed = 100 - remove_attributes = ['width'] - simultaneous_downloads = 5 - remove_tags = [dict(name='img', attrs={'scr': ['images/bizlogo_nl.gif']})] - max_articles_per_feed = 100 - - feeds = [(u'חדשות שוק ההון', u'http://www.bizportal.co.il/shukhahon/messRssUTF2.xml'), - (u'חדשות וול סטריט בעברית', - u'http://www.bizportal.co.il/shukhahon/images/bizportal.jpg'), - (u'שיווק ופרסום', u'http://www.bizportal.co.il/shukhahon/messRssUTF145.xml'), - (u'משפט', u'http://www.bizportal.co.il/shukhahon/messRssUTF3.xml'), - (u'ניתוח טכני', u'http://www.bizportal.co.il/shukhahon/messRssUTF5.xml'), - (u'דיני עבודה ושכר', u'http://www.bizportal.co.il/shukhahon/messRssUTF6.xml'), - (u'מיסוי', u'http://www.bizportal.co.il/shukhahon/messRssUTF7.xml'), - (u'טאבו', u'http://www.bizportal.co.il/shukhahon/messRssUTF8.xml'), - (u'נדל"ן', u'http://www.bizportal.co.il/shukhahon/messRssUTF160.xml'), - ] - - def print_version(self, url): - split1 = url.split("=") - print_url = 'http://www.bizportal.co.il/web/webnew/shukhahon/biznews02print.shtml?mid=' + \ - split1[1] - return print_url diff --git a/recipes/boortz.recipe b/recipes/boortz.recipe deleted file mode 100644 index 2c131382ef..0000000000 --- a/recipes/boortz.recipe +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__author__ = 'Tony Stegall' -__copyright__ = '2010, Tony Stegall or Tonythebookworm on mobiread.com' -__version__ = '1.04' -__date__ = '27, September 2010' -__docformat__ = 'restructuredtext en' - - -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1282101454(BasicNewsRecipe): - title = 'Nealz Nuze' - language = 'en' - __author__ = 'TonytheBookworm' - description = 'Neal Boortz Show Radio Notes' - publisher = 'Neal Boortz' - category = 'news, politics, USA, talkshow' - oldest_article = 1 - max_articles_per_feed = 100 - - no_stylesheets = True - remove_javascript = True - use_embedded_content = True - masthead_url = 'http://boortz.com/images/nuze_logo.gif' - conversion_options = {'linearize_tables': True} - feeds = [ - ('NUZE', 'http://boortz.com/nealz_nuze_rss/rss.xml') - - ] diff --git a/recipes/borse_online.recipe b/recipes/borse_online.recipe deleted file mode 100644 index e28a49104b..0000000000 --- a/recipes/borse_online.recipe +++ /dev/null @@ -1,34 +0,0 @@ -# vim:fileencoding=utf-8 -from calibre.web.feeds.recipes import BasicNewsRecipe - - -class AdvancedUserRecipe1303841067(BasicNewsRecipe): - - title = u'Börse-online' - __author__ = 'schuster, Armin Geller' # AGE upd 2013-11-29 - oldest_article = 1 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - language = 'de' - remove_javascript = True - remove_empty_feeds = True - ignore_duplicate_articles = {'title', 'url'} - encoding = 'utf-8' - timefmt = ' [%a, %d %b %Y]' - - cover_url = 'http://www.wirtschaftsmedien-shop.de/s/media/coverimages/7576_2013107.jpg' - masthead_url = 'http://upload.wikimedia.org/wikipedia/de/5/56/B%C3%B6rse_Online_Logo.svg' - - feeds = [(u'Börsennachrichten', u'http://www.boerse-online.de/rss'), - (u'Märkte', u'http://www.boerse-online.de/rss/maerkte'), - (u'Chartanalyse', u'http://www.boerse-online.de/rss/maerkte/chartanalyse'), - (u'Aktien', u'http://www.boerse-online.de/rss/aktie'), - (u'Aktien-Chartanalyse', - u'http://www.boerse-online.de/rss/aktie/chartanalyse'), - (u'zertifikate', u'http://www.boerse-online.de/rss/zertifikat') - ] - - def print_version(self, url): - s1, s2 = url.rsplit('/', 1) - return 'http://www.boerse-online.de/nachrichten/drucken/' + s2 diff --git a/recipes/boxis.recipe b/recipes/boxis.recipe deleted file mode 100644 index 5cd1e1db56..0000000000 --- a/recipes/boxis.recipe +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -from __future__ import absolute_import, division, print_function, unicode_literals - -from calibre.web.feeds.news import AutomaticNewsRecipe - - -class BasicUserRecipe1501590114(AutomaticNewsRecipe): - title = 'Boxis' - oldest_article = 240 - max_articles_per_feed = 100 - auto_cleanup = True - language = 'sc' - __author__ = 'tzium' - - feeds = [ - ('Boxis', 'http://www.boxis.it/sc/feed/'), - ] diff --git a/recipes/brand_eins.recipe b/recipes/brand_eins.recipe deleted file mode 100644 index f4659ce1b2..0000000000 --- a/recipes/brand_eins.recipe +++ /dev/null @@ -1,130 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -from __future__ import unicode_literals - -__license__ = 'GPL v3' -__version__ = '0.2' - -''' -brand eins.de -''' -from collections import OrderedDict - -from calibre.web.feeds.news import BasicNewsRecipe - - -class BrandEins(BasicNewsRecipe): - - title = u'brand eins' - __author__ = 'Nikolas Mangold-Takao, Thomas Schlenkhoff' - language = 'de' - description = u'brand eins beschreibt den momentanen Wandel in Wirtschaft und Gesellschaft.' - publisher = u'brand eins Verlag GmbH & Co. oHG' - category = 'politics, business, wirtschaft, Germany' - - PREFIX = 'http://www.brandeins.de/' - INDEX = PREFIX + 'archiv/listeansicht.html' - - use_embedded_content = False - resolve_internal_links = True - - no_stylesheets = True - needs_subscription = False - - delay = 1 - summary_length = 200 - simultaneous_downloads = 5 - remove_javascript = True - - keep_only_tags = dict(name='div', attrs={'id': 'content'}) - - # remove share image from articles - remove_tags = [dict(name='div', attrs={'id': 'oms_gpt_billboard'}), - dict(name='div', attrs={'id': 'oms_gpt_rectangle'}), - dict(name='h3', attrs={'class': 'sharing-headline'}), - dict(name='div', attrs={'class': 'sharing-links'}), - dict(name='aside', attrs={'class': 'articleAside'})] - - remove_tags_before = dict( - name='div', attrs={'class': 'innerContent typeArticle'}) - remove_tags_after = dict(name='div', attrs={'id': 'socialshareprivacy'}) - - extra_css = ''' - body, p {text-align: left;} - .headline {font-size: x-large;} - h2 {font-size: medium;} - h1 {font-size: large;} - em.Bold {font-weight:bold;font-style:normal;} - em.Italic {font-style:italic;} - ''' - - def parse_index(self): - issue = "" - - soup = self.index_to_soup(self.INDEX) - issue_list = soup.findAll('div', attrs={'class': 'details'}) - - issue_map = {} - i = 0 - for entry in issue_list: - title = self.tag_to_string(entry.find( - 'h3', attrs={'class': 'like-h1'})) - issue_string = self.tag_to_string( - entry.find('span', attrs={'class': 'meta'})) - year = issue_string[8:] - month = issue_string[5:-5] - yyyymm = "{}{}".format(year, month) - link = entry.findAll('a')[0] - issue_map[yyyymm] = link.get('href') - self.log('- ', year, month, title, link.get('href')) - - # Issue 1 (most recent) has only few articles online, - # Issue 2 and 3 (2nd and 3rd recent) is not completely online. - # Issue 4 (4th recent) is completely online, hence i == 3 - - if issue == "" and i == 3: - issue = yyyymm - i += 1 - - url = 'http://brandeins.de/' + issue_map[issue] - self.log('Issue to get: ', issue, title, url) - self.issue_url = url # save to extract cover - - return self.parse_issue(url) - - def parse_issue(self, url): - soup = self.index_to_soup(url) - feeds = OrderedDict() - - for item in soup.findAll(attrs={'class': lambda x: 'ihv_item' in (x or '').split()}): - a = item.findParent('a', href=True) - if a is None: - continue - url = self.PREFIX + a['href'] - title = self.tag_to_string(item.find(attrs={'class': 'ihv_title'})) - sec = self.tag_to_string( - item.find(attrs={'class': 'ihv_page_category'}).findAll('span')[-1]) - if sec not in feeds: - feeds[sec] = [] - desc = '' - for p in item.findAll('p'): - desc += self.tag_to_string(p) - feeds[sec].append( - {'title': title, 'url': url, 'description': desc}) - self.log('Found article:', title, 'at', url) - - return [(st, articles) for st, articles in feeds.items() if articles] - - def get_cover_url(self): - # the index does not contain a usable cover, but the 'Welt in - # Zahlen'-article contains it - cover_article = "{}{}".format( - self.issue_url, 'die-welt-in-zahlen.html') - self.log('Cover article URL: %s' % cover_article) - soup = self.index_to_soup(cover_article) - img = soup.find('section', 'asideSection no-content').find('img') - self.log('Found cover image url: %s' % img['src']) - return (self.PREFIX + img['src']) - - def preprocess_raw_html(self, raw_html, url): - return raw_html.replace('

• ', '

') diff --git a/recipes/brasil_de_fato.recipe b/recipes/brasil_de_fato.recipe deleted file mode 100644 index 56337c3b91..0000000000 --- a/recipes/brasil_de_fato.recipe +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- - -from calibre.web.feeds.news import BasicNewsRecipe - - -class BrasilDeFato(BasicNewsRecipe): - news = True - title = u'Brasil de Fato' - __author__ = 'Alex Mitrani' - description = u'Uma visão popular do Brasil e do mundo.' - publisher = u'SOCIEDADE EDITORIAL BRASIL DE FATO' - category = 'news, politics, Brazil, rss, Portuguese' - oldest_article = 10 - max_articles_per_feed = 100 - summary_length = 1000 - language = 'pt_BR' - - remove_javascript = True - no_stylesheets = True - use_embedded_content = False - remove_empty_feeds = True - masthead_url = 'http://www.brasildefato.com.br/sites/default/files/zeropoint_logo.jpg' - keep_only_tags = [dict(name='div', attrs={'id': 'main'})] - remove_tags = [dict(name='div', attrs={'class': 'links'})] - remove_tags_after = [dict(name='div', attrs={'class': 'links'})] - - feeds = [ - (u'Nacional', u'http://www.brasildefato.com.br/rss_nacional'), - (u'Internacional', u'http://www.brasildefato.com.br/rss_internacional'), - (u'Entrevista', u'http://www.brasildefato.com.br/rss_entrevista'), - (u'Cultura', u'http://www.brasildefato.com.br/rss_cultura'), - (u'Análise', u'http://www.brasildefato.com.br/rss_analise') - ] diff --git a/recipes/brecha.recipe b/recipes/brecha.recipe deleted file mode 100644 index 0986017c79..0000000000 --- a/recipes/brecha.recipe +++ /dev/null @@ -1,81 +0,0 @@ -from __future__ import absolute_import, division, print_function, unicode_literals - -__license__ = 'GPL v3' -__copyright__ = '2012, Darko Miletic ' -''' -www.brecha.com.uy -''' - -try: - from urllib.parse import quote, urlencode -except ImportError: - from urllib import quote, urlencode -from calibre.web.feeds.news import BasicNewsRecipe - - -class Brecha(BasicNewsRecipe): - title = 'Brecha Digital' - __author__ = 'Darko Miletic' - description = 'Brecha , Cultura ,Sociales , Separatas, Lupas, Vueltas de Montevideo y toda la infomacion que caracteriza a este semanario' - publisher = 'Brecha' - category = 'brecha, digital, prensa, uruguay, semanario, sociedad, politica, cultura' - oldest_article = 7 - max_articles_per_feed = 200 - no_stylesheets = True - encoding = 'utf8' - use_embedded_content = False - language = 'es_UY' - remove_empty_feeds = True - publication_type = 'magazine' - auto_cleanup = True - needs_subscription = 'optional' - masthead_url = 'http://www.brecha.com.uy/templates/ja_nex/themes/orange/images/logo.png' - extra_css = """ - body{font-family: Arial,Helvetica,sans-serif } - img{margin-bottom: 0.4em; display:block} - """ - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - def get_browser(self): - br = BasicNewsRecipe.get_browser(self) - br.open('http://www.brecha.com.uy/index.php/acceder-miembros') - if self.username is not None and self.password is not None: - data = urlencode({'task': 'login', 'view': 'register', 'username': self.username, 'password': self.password - }) - br.open( - 'http://www.brecha.com.uy/index.php/index.php?option=com_osemsc&controller=register', data) - return br - - remove_tags = [ - dict(name=['meta', 'link']), - dict(name='div', attrs={'id': 'js_ja'}), - dict(name='ul', attrs={'class': 'actions'}) - ] - remove_attributes = ['lang', 'border'] - - feeds = [ - (u'Politica', u'http://www.brecha.com.uy/index.php/politica-uruguaya?format=feed&type=rss'), - (u'Mundo', u'http://www.brecha.com.uy/index.php/mundo?format=feed&type=rss'), - (u'Mapamundi', u'http://www.brecha.com.uy/index.php/mundo/mapamundi?format=feed&type=rss'), - (u'Cultura', u'http://www.brecha.com.uy/index.php/cultura?format=feed&type=rss'), - (u'Vueltas de Montevideo', - u'http://www.brecha.com.uy/index.php/cultura/vueltas-de-montevideo?format=feed&type=rss'), - (u'Secos y Mojados', u'http://www.brecha.com.uy/index.php/cultura/secos-y-mojados?format=feed&type=rss'), - (u'Literarias', u'http://www.brecha.com.uy/index.php/cultura/literarias?format=feed&type=rss'), - (u'Sociedad', u'http://www.brecha.com.uy/index.php/sociedad?format=feed&type=rss'), - (u'Especiales', u'http://www.brecha.com.uy/index.php/especiales?format=feed&type=rss'), - (u'Contratapa', u'http://www.brecha.com.uy/index.php/contratapa?format=feed&type=rss') - ] - - def print_version(self, url): - return url + '?tmpl=component&print=1&layout=default&page=' - - def get_cover_url(self): - soup = self.index_to_soup('http://www.brecha.com.uy/index.php') - for image in soup.findAll('img', alt=True): - if image['alt'].startswith('Tapa '): - return 'http://www.brecha.com.uy' + quote(image['src']) - return None diff --git a/recipes/brhat.recipe b/recipes/brhat.recipe deleted file mode 100644 index b2f72a7de1..0000000000 --- a/recipes/brhat.recipe +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -from calibre.web.feeds.news import BasicNewsRecipe - - -class Brhat(BasicNewsRecipe): - title = 'Brhat' - __author__ = 'Vishvas Vasuki' - language = 'en_IN' - oldest_article = 365 - max_articles_per_feed = 100 - auto_cleanup = True - - feeds = [ - ('Main', 'https://brhat.in/feed/'), - ] diff --git a/recipes/bsi_news.recipe b/recipes/bsi_news.recipe deleted file mode 100644 index 49ff39d7ab..0000000000 --- a/recipes/bsi_news.recipe +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python -from __future__ import absolute_import, division, print_function, unicode_literals - -from calibre.web.feeds.news import BasicNewsRecipe - - -class germanyBSI(BasicNewsRecipe): - # Title of the Recipe - # title = 'News des Bundesamt für Sicherheit in der Informationstechnik' - title = 'BSI News - DE' - cover_url = 'https://www.bsi.bund.de/SiteGlobals/Frontend/Images/BSI/logo.png' - # Author - __author__ = 'Volker Heggemann, VoHe' - # oldest article to download (in days) ---- can be edit by user - oldest_article = 7 - # describes itself, ---- can be edit by user - max_articles_per_feed = 100 - # speed up the download on fast computers be careful (I test max.20) - # ---- can be edit by user - simultaneous_downloads = 10 - # description, some Reader show this in titlepage - description = u'News from BSI' - # Who published the content? - publisher = u'Newsfeeds des BSI' - # What is the content of? - category = u'Sie erfahren, wenn neue Nachrichten auf der Internetseite des BSI veröffentlicht werden' - # describes itself, ---- can be edit by user - use_embedded_content = False - # describes itself, ---- can be edit by user - language = 'de' - # encoding of content. e.g. utf-8, None, ... - # ---- can be edit by user - encoding = None # 'utf-8' doesn't work here - # Removes javascript- why keep this, we only want static content - remove_javascript = True - # Removes empty feeds - why keep them!? - remove_empty_feeds = True - - # remove the rubbish (in ebook) - auto_cleanup = True - # now the content description and URL follows - # feel free to add, wipe out what you need ---- can be edit by user - # - # some of this are double - # - # - # Make some tests, may you first comment all of them out, and step by step you add what you'll need? - # - - feeds = [ - ('BSI - Germany - Sicherheitshinweise des Buerger-CERT', - 'https://www.bsi-fuer-buerger.de/SiteGlobals/Functions/RSSFeed/RSSNewsfessBSIFB/RSSNewsfeed_BuergerCERT.xml' - ), - ('BSI - Germany - Aktuelle Informationen BSI f\xfcr B\xfcrger', - 'https://www.bsi-fuer-buerger.de/SiteGlobals/Functions/RSSFeed/RSSNewsfessBSIFB/RSSNewsfeed_Buerger_aktuelle_Informationen.xml' - ), - ('Kurzinformationen des CERT-Bund zu Sicherheitsl\xfccken und Schwachstellen in IT-Systemen', - 'https://www.bsi.bund.de/SiteGlobals/Functions/RSSFeed/RSSNewsfeed/RSSNewsfeed_WID.xml' - ), - ('BSI - Germany - RSS-Newsfeed (Presse-, Kurzmitteilungen und Veranstaltungshinweise)', - 'https://www.bsi.bund.de/SiteGlobals/Functions/RSSFeed/RSSNewsfeed/RSSNewsfeed.xml' - ), - ] diff --git a/recipes/buchreport.recipe b/recipes/buchreport.recipe deleted file mode 100644 index 62250b69e6..0000000000 --- a/recipes/buchreport.recipe +++ /dev/null @@ -1,45 +0,0 @@ -from calibre.web.feeds.recipes import BasicNewsRecipe - -'''Calibre recipe to convert the RSS feeds of the Buchreport to an ebook.''' - - -class Buchreport(BasicNewsRecipe): - __author__ = 'a.peter' - __copyright__ = 'a.peter' - __license__ = 'GPL v3' - description = 'Buchreport' - version = 4 - title = u'Buchreport' - timefmt = ' [%d.%m.%Y]' - encoding = 'cp1252' - language = 'de' - - extra_css = 'body { margin-left: 0.00em; margin-right: 0.00em; } \ - article, articledate, articledescription { text-align: left; } \ - h1 { text-align: left; font-size: 140%; font-weight: bold; } \ - h2 { text-align: left; font-size: 100%; font-weight: bold; font-style: italic; } \ - h3 { text-align: left; font-size: 100%; font-weight: regular; font-style: italic; } \ - h4, h5, h6 { text-align: left; font-size: 100%; font-weight: bold; }' - - oldest_article = 7.0 - no_stylesheets = True - remove_javascript = True - use_embedded_content = False - publication_type = 'newspaper' - - remove_tags_before = dict(name='h2') - remove_tags_after = [ - dict(name='div', attrs={'style': ["padding-top:10px;clear:both"]}) - ] - remove_tags = [ - dict(name='div', attrs={'style': ["padding-top:10px;clear:both"]}), - dict(name='iframe'), - dict(name='img') - ] - - feeds = [ - (u'Buchreport', u'http://www.buchreport.de/index.php?id=5&type=100') - ] - - def get_masthead_url(self): - return 'http://www.buchreport.de/fileadmin/template/img/buchreport_logo.jpg' diff --git a/recipes/buckmasters.recipe b/recipes/buckmasters.recipe deleted file mode 100644 index b46d1cd154..0000000000 --- a/recipes/buckmasters.recipe +++ /dev/null @@ -1,49 +0,0 @@ -from calibre.ebooks.BeautifulSoup import Tag -from calibre.web.feeds.news import BasicNewsRecipe - - -def new_tag(soup, name, attrs=()): - impl = getattr(soup, 'new_tag', None) - if impl is not None: - return impl(name, attrs=dict(attrs)) - return Tag(soup, name, attrs=attrs or None) - - -class AdvancedUserRecipe1282101454(BasicNewsRecipe): - title = 'BuckMasters In The Kitchen' - language = 'en' - __author__ = 'TonytheBookworm & Starson17' - description = 'Learn how to cook all those outdoor varments' - publisher = 'BuckMasters.com' - category = 'food,cooking,recipes' - oldest_article = 365 - max_articles_per_feed = 100 - conversion_options = {'linearize_tables': True} - masthead_url = 'http://www.buckmasters.com/Portals/_default/Skins/BM_10/images/header_bg.jpg' - keep_only_tags = [ - dict(name='table', attrs={'class': ['containermaster_black']}) - ] - remove_tags_after = [dict(name='div', attrs={'align': ['left']})] - feeds = [ - ('Recipes', 'http://www.buckmasters.com/DesktopModules/DnnForge%20-%20NewsArticles/RSS.aspx?TabID=292&ModuleID=658&MaxCount=25'), - ] - - def preprocess_html(self, soup): - item = soup.find('a', attrs={'class': ['MenuTopSelected']}) - if item: - item.parent.extract() - for img_tag in soup.findAll('img'): - parent_tag = img_tag.parent - if parent_tag.name == 'a': - ntag = new_tag(soup, 'p') - ntag.insert(0, img_tag) - parent_tag.replaceWith(ntag) - elif parent_tag.name == 'p': - if not self.tag_to_string(parent_tag) == '': - new_div = new_tag(soup, 'div') - ntag = new_tag(soup, 'p') - ntag.insert(0, img_tag) - parent_tag.replaceWith(new_div) - new_div.insert(0, ntag) - new_div.insert(1, parent_tag) - return soup diff --git a/recipes/buenosaireseconomico.recipe b/recipes/buenosaireseconomico.recipe deleted file mode 100644 index 017329d1b2..0000000000 --- a/recipes/buenosaireseconomico.recipe +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env python -# -*- mode: python -*- -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = '2009-2016, Darko Miletic ' -''' -www.diariobae.com -''' -from calibre.web.feeds.news import BasicNewsRecipe - - -class BsAsEconomico(BasicNewsRecipe): - title = 'Buenos Aires Economico' - __author__ = 'Darko Miletic' - description = 'Diario BAE es el diario economico-politico con mas influencia en la Argentina. Fuente de empresarios y politicos del pais y el exterior. El pozo estaria aportando en periodos breves un volumen equivalente a 800m3 diarios. Pero todavia deben efectuarse otras perforaciones adicionales.' # noqa - publisher = 'Diario BAE' - category = 'news, politics, economy, Argentina' - oldest_article = 2 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - encoding = 'utf-8' - language = 'es_AR' - masthead_url = 'http://static.cronica.com.ar/FileAccessHandler.ashx?code=635959869637084622' - remove_empty_feeds = True - publication_type = 'newspaper' - extra_css = """ - body{font-family: Georgia,"Times New Roman",Times,serif} - img{display: block; margin-top: 1em} - """ - conversion_options = { - 'comment' : description, - 'tags' : category, - 'publisher': publisher, - 'language' : language - } - - keep_only_tags = [dict(name='div', attrs={'class':'post'})] - remove_tags = [ - dict(name=['meta', 'base', 'iframe', 'link', 'lang']) - ,dict(attrs={'class':'pdfprnt-bottom-right'}) - ] - - feeds = [(u'Articles', u'http://www.diariobae.com/feed/getfeed')] - - def get_cover_url(self): - cover = None - soup = self.index_to_soup('http://www.diariobae.com/') - tag = soup.find('a', rel='lightbox[tapa]', href=True) - if tag: - cover = tag['href'] - return cover diff --git a/recipes/buffalo_news.recipe b/recipes/buffalo_news.recipe deleted file mode 100644 index 3d5a0fc3ec..0000000000 --- a/recipes/buffalo_news.recipe +++ /dev/null @@ -1,49 +0,0 @@ -__license__ = 'GPL v3' -__author__ = 'Todd Chapman' -__copyright__ = 'Todd Chapman' -__version__ = 'v0.2' -__date__ = '2 March 2011' - -''' -http://www.buffalonews.com/RSS/ -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class BuffaloNews(BasicNewsRecipe): - title = u'Buffalo News' - oldest_article = 2 - language = 'en' - __author__ = 'ChappyOnIce, Krittika Goyal' - max_articles_per_feed = 20 - encoding = 'utf-8' - masthead_url = 'http://www.buffalonews.com/buffalonews/skins/buffalonews/images/masthead/the_buffalo_news_logo.png' - auto_cleanup = True - remove_empty_feeds = True - - feeds = [ - (u'City of Buffalo', u'http://www.buffalonews.com/city/communities/buffalo/?widget=rssfeed&view=feed&contentId=77944'), - (u'Southern Erie County', - u'http://www.buffalonews.com/city/communities/southern-erie/?widget=rssfeed&view=feed&contentId=77944'), - (u'Eastern Erie County', u'http://www.buffalonews.com/city/communities/eastern-erie/?widget=rssfeed&view=feed&contentId=77944'), - (u'Southern Tier', u'http://www.buffalonews.com/city/communities/southern-tier/?widget=rssfeed&view=feed&contentId=77944'), - (u'Niagara County', u'http://www.buffalonews.com/city/communities/niagara-county/?widget=rssfeed&view=feed&contentId=77944'), - (u'Business', u'http://www.buffalonews.com/business/?widget=rssfeed&view=feed&contentId=77944'), - (u'MoneySmart', u'http://www.buffalonews.com/business/moneysmart/?widget=rssfeed&view=feed&contentId=77944'), - (u'Bills & NFL', u'http://www.buffalonews.com/sports/bills-nfl/?widget=rssfeed&view=feed&contentId=77944'), - (u'Sabres & NHL', u'http://www.buffalonews.com/sports/sabres-nhl/?widget=rssfeed&view=feed&contentId=77944'), - (u'Bob DiCesare', u'http://www.buffalonews.com/sports/columns/bob-dicesare/?widget=rssfeed&view=feed&contentId=77944'), - (u'Bucky Gleason', u'http://www.buffalonews.com/sports/columns/bucky-gleason/?widget=rssfeed&view=feed&contentId=77944'), - (u'Mark Gaughan', u'http://www.buffalonews.com/sports/bills-nfl/inside-the-nfl/?widget=rssfeed&view=feed&contentId=77944'), - (u'Mike Harrington', u'http://www.buffalonews.com/sports/columns/mike-harrington/?widget=rssfeed&view=feed&contentId=77944'), - (u'Jerry Sullivan', u'http://www.buffalonews.com/sports/columns/jerry-sullivan/?widget=rssfeed&view=feed&contentId=77944'), - (u'Other Sports Columns', u'http://www.buffalonews.com/sports/columns/other-sports-columns/?widget=rssfeed&view=feed&contentId=77944'), - (u'Life', u'http://www.buffalonews.com/life/?widget=rssfeed&view=feed&contentId=77944'), - (u'Bruce Andriatch', u'http://www.buffalonews.com/city/columns/bruce-andriatch/?widget=rssfeed&view=feed&contentId=77944'), - (u'Donn Esmonde', u'http://www.buffalonews.com/city/columns/donn-esmonde/?widget=rssfeed&view=feed&contentId=77944'), - (u'Rod Watson', u'http://www.buffalonews.com/city/columns/rod-watson/?widget=rssfeed&view=feed&contentId=77944'), - (u'Entertainment', u'http://www.buffalonews.com/entertainment/?widget=rssfeed&view=feed&contentId=77944'), - (u'Off Main Street', u'http://www.buffalonews.com/city/columns/off-main-street/?widget=rssfeed&view=feed&contentId=77944'), - (u'Editorials', u'http://www.buffalonews.com/editorial-page/buffalo-news-editorials/?widget=rssfeed&view=feed&contentId=77944') - ] diff --git a/recipes/businessworldin.recipe b/recipes/businessworldin.recipe deleted file mode 100644 index f0e637dfb4..0000000000 --- a/recipes/businessworldin.recipe +++ /dev/null @@ -1,36 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2009-2010, Darko Miletic ' -''' -www.businessworld.in -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class BusinessWorldMagazine(BasicNewsRecipe): - title = 'Business World Magazine' - __author__ = 'Kovid Goyal' - description = 'News from India' - category = 'news, politics, finances, India, Asia' - no_stylesheets = True - encoding = 'utf-8' - language = 'en_IN' - oldest_article = 2 - - keep_only_tags = [ - dict(attrs={'class': ['main-article']}), - ] - remove_tags = [ - dict(id='video_n_ad_div'), - dict(attrs={'class': ['meta-tools', 'social-article']}), - ] - remove_tags_after = dict(attrs={'class': 'social-article'}) - - feeds = ['http://www.businessworld.in/rss/all-article.xml'] - - def preprocess_html(self, soup): - for img in soup.findAll('img', attrs={'data-original': True}): - img['src'] = img['data-original'] - for ins in soup.findAll(attrs={'class': 'adsbygoogle'}): - ins.parent.extract() - return soup diff --git a/recipes/cafcaf_dergisi.recipe b/recipes/cafcaf_dergisi.recipe deleted file mode 100644 index 4864a277a8..0000000000 --- a/recipes/cafcaf_dergisi.recipe +++ /dev/null @@ -1,14 +0,0 @@ -# -*- coding: utf-8 -*- - -from calibre.web.feeds.news import BasicNewsRecipe - - -class BasicUserRecipe1325259641(BasicNewsRecipe): - language = 'tr' - __author__ = 'asalet_r' - title = u'CafCaf Dergisi' - oldest_article = 7 - max_articles_per_feed = 20 - auto_cleanup = True - - feeds = [(u'CafCaf', u'http://www.cafcafdergisi.net/feed/rss/')] diff --git a/recipes/camera_di_commercio_di_bari.recipe b/recipes/camera_di_commercio_di_bari.recipe deleted file mode 100644 index f81bbea2a3..0000000000 --- a/recipes/camera_di_commercio_di_bari.recipe +++ /dev/null @@ -1,20 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1331729727(BasicNewsRecipe): - title = u'Camera di Commercio di Bari' - oldest_article = 7 - __author__ = 'faber1971' - description = 'News from the Chamber of Commerce of Bari' - language = 'it' - max_articles_per_feed = 100 - auto_cleanup = True - masthead_url = 'http://www.ba.camcom.it/grafica/layout-bordo/logo_camcom_bari.png' - feeds = [(u'Camera di Commercio di Bari', - u'http://feed43.com/4715147488845101.xml')] - - -__license__ = 'GPL v3' -__copyright__ = '2012, faber1971' -__version__ = 'v1.00' -__date__ = '17, April 2012' diff --git a/recipes/capes_n_babes.recipe b/recipes/capes_n_babes.recipe deleted file mode 100644 index 3b18f52a33..0000000000 --- a/recipes/capes_n_babes.recipe +++ /dev/null @@ -1,12 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class CapesnBabesRecipe(BasicNewsRecipe): - title = u'Capes n Babes' - language = 'en' - description = 'The Capes n Babes comic Blog' - __author__ = 'skyhawker' - oldest_article = 31 - max_articles_per_feed = 100 - use_embedded_content = True - feeds = [(u'Capes & Babes', u'feed://www.capesnbabes.com/feed/')] diff --git a/recipes/capital.recipe b/recipes/capital.recipe deleted file mode 100644 index 416821cb7f..0000000000 --- a/recipes/capital.recipe +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = u'2011, Silviu Cotoar\u0103' -''' -capital.ro -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Capital(BasicNewsRecipe): - title = 'Capital' - __author__ = u'Silviu Cotoar\u0103' - description = u'\u0218tiri din Rom\u00e2nia' - oldest_article = 5 - language = 'ro' - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - category = 'Ziare,Stiri,Romania' - encoding = 'utf-8' - remove_javascript = True - publisher = 'Capital' - cover_url = 'http://www.mediapress.ro/imagini/sigla-capital-s16.gif' - - conversion_options = { - 'comments': description, 'tags': category, 'language': language, 'publisher': publisher - } - - keep_only_tags = [dict(name='div', attrs={'class': 'single one_article'}) - ] - - remove_tags = [dict(name='div', attrs={'class': 'single_details'}), dict(name='div', attrs={'class': 'tx-addoceansbanners-pi1'}) - ] - - feeds = [(u'\u0218tiri', u'http://www.capital.ro/rss.html')] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/capital_de.recipe b/recipes/capital_de.recipe deleted file mode 100644 index 28c758efe1..0000000000 --- a/recipes/capital_de.recipe +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -from __future__ import absolute_import, division, print_function, unicode_literals - -''' -capital.de -''' - -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1305470859(BasicNewsRecipe): - title = 'Capital.de' - __author__ = 'schuster' - description = 'RSS-Feed von Capital.de' - publisher = 'Gruner+Jahr GmbH & Co KG' - language = 'de' - - oldest_article = 14 - max_articles_per_feed = 35 - no_stylesheets = True - remove_javascript = True - use_embedded_content = False - - conversion_options = {'smarten_punctuation': True, - 'publisher': publisher} - - cover_source = 'http://shop.capital.de/abos/capital/' - masthead_url = 'http://www.capital.de/files/capital/layout/logo.png' - - feeds = [ - ('Capital.de', 'http://www.capital.de/partner-feeds/rss.xml') - ] - - keep_only_tags = [ - dict(name='div', attrs={ - 'class': 'grid_8 alpha omega layout_full block'}) - ] - - remove_tags = [ - dict(name='div', attrs={'class': 'article_header'}), - dict(name='br', attrs={'class': 'clear'}) - ] - - remove_attributes = ['height', 'width'] - - extra_css = 'h1 {font-size: 1.6em; text-align: left} \ - h2 {font-size: 1em; text-align: left} \ - .copyright {font-size: 0.6em} \ - .caption {font-size: 0.6em}' - - def get_cover_url(self): - soup = self.index_to_soup(self.cover_source) - img_span = soup.find('span', {'class': re.compile('coverimage')}) - self.cover_url = img_span.find('img', src=True)['src'] - return self.cover_url - - def preprocess_html(self, soup): - # remove all articles without relevant content - tags = soup.findAll('li', {'class': 'tag-chain-item'}) - for li in tags: - if 'BILDERSTRECKE' in self.tag_to_string(li).upper(): - self.abort_article() - # remove list of tags - tags = soup.find('ul', {'class': 'tag-chain'}) - if tags: - tags.extract() - # remove all style attributes - for item in soup.findAll(style=True): - del item['style'] - # remove all local hyperlinks - for a in soup.findAll('a', {'href': True}): - if a['href'] and 'http' not in a['href']: - del a['href'] - # remove picture(s) of author(s) - for div in soup.findAll('div', {'class': 'ce_text block'}): - if div.find('hr'): - for hr in div.findAll('hr'): - hr.extract() - for img in div.findAll('img'): - img.extract() - return soup diff --git a/recipes/caravan_magazine_hindi.recipe b/recipes/caravan_magazine_hindi.recipe deleted file mode 100644 index e6a3326811..0000000000 --- a/recipes/caravan_magazine_hindi.recipe +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -# License: GPLv3 Copyright: 2015, Kovid Goyal - -import json - -from calibre.web.feeds.recipes import BasicNewsRecipe -from mechanize import Request - - -def classes(classes): - q = frozenset(classes.split(' ')) - return dict( - attrs={'class': lambda x: x and frozenset(x.split()).intersection(q)} - ) - - -class CaravanMagazineHindi(BasicNewsRecipe): - - title = 'Caravan Magazine in Hindi' - __author__ = 'Kovid Goyal, Gobelinus, Aareet Mahadevan' - description = 'An Indian Journal of politics and culture' - language = 'hi' - timefmt = ' [%b, %Y]' - encoding = 'utf-8' - needs_subscription = 'optional' - - no_stylesheets = True - - keep_only_tags = [ - classes('post-title short-desc author-details cover'), - dict(itemprop='articleBody'), - ] - - remove_tags = [ - dict(name='meta'), - dict(attrs={'class': ['share-with', 'img-wrap abs']}), - ] - remove_attributes = ['style'] - - def get_browser(self, *args, **kw): - br = BasicNewsRecipe.get_browser(self, *args, **kw) - if not self.username or not self.password: - return br - data = json.dumps({ - 'email': self.username, - 'name': '', - 'password': self.password - }) - if not isinstance(data, bytes): - data = data.encode('utf-8') - rq = Request( - url='https://caravanmagazine.in/api/users/login', - data=data, - headers={ - 'Accept': 'application/json, text/plain, */*', - 'Origin': 'https://caravanmagazine.in', - 'Referer': 'https://caravanmagazine.in/', - 'Content-type': 'application/json;charset=UTF-8', - }, - method='POST' - ) - res = br.open(rq).read() - res = res.decode('utf-8') - self.log('Login request response: {}'.format(res)) - res = json.loads(res) - if res['code'] != 200 or res['message'] != "Login success": - raise ValueError('Login failed, check your username and password') - return br - - # To parse article toc - def parse_index(self): - base_url = 'https://www.caravanmagazine.in/' - soup = self.index_to_soup('{0}magazine'.format(base_url)) - - # find current issue cover - feeds = [] - sections = soup.find( - attrs={ - 'class': lambda x: x and 'current-magazine-issue' in x.split() - } - ).find(attrs={'class': lambda x: x and 'sections' in x.split()}) - for section in sections.findAll( - attrs={'class': lambda x: x and 'section' in x.split()} - ): - a = section.find('a') - section_title = self.tag_to_string(a) - self.log('\nSection:', section_title) - articles = [] - for article in section.findAll('article'): - details = article.find( - attrs={'class': lambda x: x and 'details' in x.split()} - ) - pre = details.find( - attrs={'class': lambda x: x and 'pre-heading' in x.split()} - ) - if pre is not None: - pre.extract() - a = details.find('a') - url = base_url + a['href'].lstrip('/') + '-hindi' - title = self.tag_to_string(a) - desc = self.tag_to_string(details.find('div')) - self.log('\t', title, url) - articles.append({'title': title, 'description': desc, 'url': url}) - if articles: - feeds.append((section_title, articles)) - - return feeds - - def preprocess_html(self, soup): - for div in soup.findAll(itemprop='image'): - for img in div.findAll('img'): - img['src'] = div['content'] - for img in soup.findAll(attrs={'data-src': True}): - img['src'] = img['data-src'] - return soup diff --git a/recipes/carta.recipe b/recipes/carta.recipe deleted file mode 100644 index f8c2349b47..0000000000 --- a/recipes/carta.recipe +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -from __future__ import absolute_import, division, print_function, unicode_literals - -from calibre.web.feeds.news import BasicNewsRecipe - -__license__ = 'GPL v3' -__copyright__ = '2008, Kovid Goyal ' - - -class Carta(BasicNewsRecipe): - # Update 2017-09-01 - # Armin Geller - - title = u'Carta' - description = 'Authors blog for politics, economics and digital community' - __author__ = 'Armin Geller' # AGe Update 2017-09-01 - - timefmt = ' [%a %d %b %Y]' - oldest_article = 14 - max_articles_per_feed = 50 - no_stylesheets = True - remove_javascript = True - remove_empty_feeds = True - encoding = 'utf-8' - language = 'de' - - cover_url = 'http://www.carta.info/wp-content/themes/carta2014/img/carta-logo.svg' # AGe Update 2014-10-05 new cover - masthead_url = 'http://upload.wikimedia.org/wikipedia/de/b/ba/Carta_logo.png' - # masthead_url ='http://www.carta.info/wp-content/themes/carta2014/img/carta-logo.svg' - extra_css = ''' - h2 {font-size: 1.3em; font-style: italic} - .excerpt {font-size: 1.2em; font-style: italic} - ''' - - keep_only_tags = [ - dict(name='div', attrs={'class': ['article-text', 'author']}), - dict(name='p', attrs={'class': 'tags'}), - ] - - remove_tags = [ - dict(name='ul', attrs={'class': 'meta'}), - ] - - feeds = [ - (u'CARTA - Standard', u'http://feeds2.feedburner.com/carta-standard-rss'), - (u'CARTA - Homepage', u'http://feeds2.feedburner.com/carta-homepage-rss'), - (u'CARTA - Agenda', u'http://feeds2.feedburner.com/carta-agenda-rss'), - (u'CARTA - Ökonomie', u'http://feeds2.feedburner.com/carta-oekonomie-rss'), - (u'CARTA - Medien', u'http://feeds2.feedburner.com/carta-medien-rss'), - ] diff --git a/recipes/catholic_daily_readings.recipe b/recipes/catholic_daily_readings.recipe deleted file mode 100644 index 36ef704813..0000000000 --- a/recipes/catholic_daily_readings.recipe +++ /dev/null @@ -1,17 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class BasicUserRecipe1328971305(BasicNewsRecipe): - title = u'Catholic Daily Readings' - language = 'en' - __author__ = 'adoucette' - oldest_article = 7 - max_articles_per_feed = 100 - auto_cleanup = True - - feeds = [ - (u'Daily Readings - USCCB', u'http://www.usccb.org/bible/readings/rss/'), - (u'Daily Reflection - One Bread One Body', u'http://www.presentationministries.com/general/rss.asp'), - - (u'Mass Readings - Universalis', u'http://www.universalis.com/atommass3.xml'), - (u'Saint Of The Day - CNA', u'http://feeds.feedburner.com/catholicnewsagency/saintoftheday')] diff --git a/recipes/cd_action.recipe b/recipes/cd_action.recipe deleted file mode 100644 index 4d132a8830..0000000000 --- a/recipes/cd_action.recipe +++ /dev/null @@ -1,28 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class CD_Action(BasicNewsRecipe): - title = u'CD-Action' - __author__ = 'fenuks' - description = 'Strona CD-Action (CDA), największego w Polsce pisma dla graczy.Pełne wersje gier, newsy, recenzje, zapowiedzi, konkursy, forum, opinie, galerie screenów,trailery, filmiki, patche, teksty. Gry komputerowe (PC) oraz na konsole (PS3, XBOX 360).' # noqa - category = 'games' - language = 'pl' - index = 'http://www.cdaction.pl' - oldest_article = 8 - max_articles_per_feed = 100 - no_stylesheets = True - keep_only_tags = dict(id='news_content') - remove_tags_after = dict(name='div', attrs={'class': 'tresc'}) - feeds = [(u'Newsy', u'http://www.cdaction.pl/rss_newsy.xml')] - - def get_cover_url(self): - soup = self.index_to_soup('http://www.cdaction.pl/magazyn/') - self.cover_url = 'http://www.cdaction.pl' + \ - soup.find(id='wspolnik').div.a['href'] - return getattr(self, 'cover_url', self.cover_url) - - def preprocess_html(self, soup): - for a in soup.findAll('a', href=True): - if 'http://' not in a['href'] and 'https://' not in a['href']: - a['href'] = self.index + a['href'] - return soup diff --git a/recipes/cdrinfo_pl.recipe b/recipes/cdrinfo_pl.recipe deleted file mode 100644 index b7cf11496e..0000000000 --- a/recipes/cdrinfo_pl.recipe +++ /dev/null @@ -1,74 +0,0 @@ -__license__ = 'GPL v3' -import re - -from calibre.ebooks.BeautifulSoup import Comment -from calibre.web.feeds.news import BasicNewsRecipe - - -class cdrinfo(BasicNewsRecipe): - title = u'CDRinfo.pl' - __author__ = 'fenuks' - description = u'Serwis poświęcony archiwizacji danych. Testy i recenzje nagrywarek. Programy do nagrywania płyt. Dyski twarde, dyski SSD i serwery sieciowe NAS. Rankingi dyskow twardych, najszybsze dyski twarde, newsy, artykuły, testy, recenzje, porady, oprogramowanie. Zestawienie nagrywarek, najnowsze biosy do nagrywarek, programy dla dysków twardych.' # noqa - category = 'it, hardware' - # publication_type = '' - language = 'pl' - # encoding = '' - # extra_css = '' - cover_url = 'http://www.cdrinfo.pl/gfx/graph3/top.jpg' - # masthead_url = '' - use_embedded_content = False - oldest_article = 777 - max_articles_per_feed = 100 - no_stylesheets = True - remove_empty_feeds = True - remove_javascript = True - remove_attributes = ['style', 'onmouseover'] - preprocess_regexps = [(re.compile(u']*?>Uprzejmie prosimy o przestrzeganie netykiety.+?www\\.gravatar\\.com\\.

', re.DOTALL), lambda match: ''), - (re.compile(u']*?>.{,2}

', re.DOTALL), lambda match: '')] - ignore_duplicate_articles = {'title', 'url'} - - keep_only_tags = [ - dict(name='input', attrs={'name': 'ref'}), dict(id=['text', 'text2'])] - remove_tags = [dict(attrs={'class': ['navigation', 'sociable', 'last6news']}), dict( - name=['hr', 'br']), dict(id='respond')] - remove_tags_after = dict(id='artnawigacja') - feeds = [(u'Wiadomości', 'http://feeds.feedburner.com/cdrinfo'), - (u'Recenzje', 'http://www.cdrinfo.pl/rss/rss_recenzje.php'), - (u'Konsole', 'http://konsole.cdrinfo.pl/rss/rss_konsole_news.xml'), - (u'Pliki', 'http://www.cdrinfo.pl/rss/rss_pliki.xml') - ] - - def preprocess_html(self, soup): - if soup.find(id='artnawigacja'): - self.append_page(soup, soup.body) - return soup - - def append_page(self, soup, appendtag): - baseurl = 'http://cdrinfo.pl' + \ - soup.find(name='input', attrs={'name': 'ref'})['value'] + '/' - if baseurl[-2] == '/': - baseurl = baseurl[:-1] - tag = soup.find(id='artnawigacja') - div = tag.find('div', attrs={'align': 'right'}) - while div: - counter = 0 - while counter < 5: - try: - soup2 = self.index_to_soup(baseurl + div.a['href']) - break - except: - counter += 1 - tag2 = soup2.find(id='artnawigacja') - div = tag2.find('div', attrs={'align': 'right'}) - pagetext = soup2.find(attrs={'class': 'art'}) - comments = pagetext.findAll( - text=lambda text: isinstance(text, Comment)) - for comment in comments: - comment.extract() - for r in soup2.findAll(attrs={'class': 'star-rating'}): - r.extract() - for r in soup2.findAll(attrs={'class': 'star-rating2'}): - r.extract() - pos = len(appendtag.contents) - appendtag.insert(pos, pagetext) - tag.extract() diff --git a/recipes/ceska_pozice.recipe b/recipes/ceska_pozice.recipe deleted file mode 100644 index e55c1e50e5..0000000000 --- a/recipes/ceska_pozice.recipe +++ /dev/null @@ -1,70 +0,0 @@ -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai -from __future__ import unicode_literals - -from calibre.web.feeds.recipes import BasicNewsRecipe - - -class ceskaPoziceRecipe(BasicNewsRecipe): - __author__ = 'bubak' - title = u'Česká pozice' - description = 'Česká pozice' - oldest_article = 2 - max_articles_per_feed = 20 - - feeds = [ - (u'Všechny články', u'http://www.ceskapozice.cz/rss.xml'), - (u'Domov', u'http://www.ceskapozice.cz/taxonomy/term/16/feed'), - (u'Chrono', u'http://www.ceskapozice.cz/chrono/feed'), - (u'Evropa', u'http://www.ceskapozice.cz/taxonomy/term/17/feed') - ] - - language = 'cs' - cover_url = 'http://www.ceskapozice.cz/sites/default/files/cpozice_logo.png' - remove_javascript = True - no_stylesheets = True - domain = u'http://www.ceskapozice.cz' - use_embedded_content = False - - remove_tags = [dict(name='div', attrs={'class': ['block-ad', 'region region-content-ad']}), - dict(name='ul', attrs={'class': 'links'}), - dict(name='div', attrs={ - 'id': ['comments', 'back-to-top']}), - dict(name='div', attrs={ - 'class': ['next-page', 'region region-content-ad']}), - dict(name='cite')] - - keep_only_tags = [dict(name='div', attrs={'id': 'content'})] - - visited_urls = {} - - def get_article_url(self, article): - url = BasicNewsRecipe.get_article_url(self, article) - if url in self.visited_urls: - self.log.debug('Ignoring duplicate: ' + url) - return None - else: - self.visited_urls[url] = True - self.log.debug('Accepting: ' + url) - return url - - def preprocess_html(self, soup): - self.append_page(soup, soup.body, 3) - return soup - - def append_page(self, soup, appendtag, position): - pager = soup.find('div', attrs={'class': 'paging-bottom'}) - if pager: - nextbutton = pager.find('li', attrs={'class': 'pager-next'}) - if nextbutton: - nexturl = self.domain + nextbutton.a['href'] - soup2 = self.index_to_soup(nexturl) - texttag = soup2.find('div', attrs={'class': 'main-body'}) - for it in texttag.findAll('div', attrs={'class': 'region region-content-ad'}): - it.extract() - for it in texttag.findAll('cite'): - it.extract() - newpos = len(texttag.contents) - self.append_page(soup2, texttag, newpos) - texttag.extract() - appendtag.insert(position, texttag) - pager.extract() diff --git a/recipes/cesky_rozhlas_6.recipe b/recipes/cesky_rozhlas_6.recipe deleted file mode 100644 index e9975d801c..0000000000 --- a/recipes/cesky_rozhlas_6.recipe +++ /dev/null @@ -1,27 +0,0 @@ -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai -from __future__ import unicode_literals - -from calibre.web.feeds.recipes import BasicNewsRecipe - - -class cro6Recipe(BasicNewsRecipe): - __author__ = 'bubak' - title = u'Český rozhlas 6' - description = 'Český rozhlas 6' - oldest_article = 1 - max_articles_per_feed = 20 - - feeds = [ - (u'Český rozhlas 6', u'http://www.rozhlas.cz/export/cro6/') - ] - - language = 'cs' - cover_url = 'http://www.rozhlas.cz/img/e5/logo/cro6.png' - remove_javascript = True - no_stylesheets = True - - remove_attributes = [] - remove_tags = [dict(name='div', attrs={'class': ['audio-play-all', 'poradHeaders', 'actions']}), - dict(name='p', attrs={'class': ['para-last']})] - - keep_only_tags = [dict(name='div', attrs={'id': 'article'})] diff --git a/recipes/cetnixploitation.recipe b/recipes/cetnixploitation.recipe deleted file mode 100644 index c6f1dd2706..0000000000 --- a/recipes/cetnixploitation.recipe +++ /dev/null @@ -1,34 +0,0 @@ - -__license__ = 'GPL v3' -__copyright__ = '2010, Darko Miletic ' -''' -chetnixploitation.blogspot.com -''' - -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Chetnixploitation(BasicNewsRecipe): - title = 'Chetnixploitation' - __author__ = 'Darko Miletic' - description = 'Filmski blog' - oldest_article = 7 - max_articles_per_feed = 100 - language = 'sr' - publication_type = 'blog' - encoding = 'utf-8' - no_stylesheets = True - use_embedded_content = True - extra_css = ' @font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} body{font-family: "Trebuchet MS",Trebuchet,Verdana,sans1,sans-serif} .article_description{font-family: sans1, sans-serif} img{margin-bottom: 0.8em; border: 1px solid #333333; padding: 4px } ' # noqa - - conversion_options = { - 'comment': description, 'tags': 'film, blog, cetnici, srbija, ex-yu', 'publisher': 'Son of Man', 'language': language - } - - preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] - feeds = [(u'Posts', u'http://chetnixploitation.blogspot.com/feeds/posts/default')] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/cgm_pl.recipe b/recipes/cgm_pl.recipe deleted file mode 100644 index ce529b661b..0000000000 --- a/recipes/cgm_pl.recipe +++ /dev/null @@ -1,48 +0,0 @@ -from calibre.ebooks.BeautifulSoup import BeautifulSoup -from calibre.web.feeds.news import BasicNewsRecipe - - -class CGM(BasicNewsRecipe): - title = u'CGM' - oldest_article = 7 - __author__ = 'fenuks' - description = u'Codzienna Gazeta Muzyczna' - masthead_url = 'http://www.cgm.pl/img/header/logo.gif' - cover_url = 'http://www.krafcy.com/foto/tinymce/Image/cgm%281%29.jpg' - category = 'music' - language = 'pl' - use_embedded_content = False - remove_empty_feeds = True - max_articles_per_feed = 100 - no_stylesheets = True - extra_css = 'div {color:black;} strong {color:black;} span {color:black;} p {color:black;} h2 {color:black;} img {display: block;} ul.galleryImagesList {list-style: none;} li.item {float: left;} .calibrenavbar {clear: both;}' # noqa - remove_tags_before = dict(id='mainContent') - remove_tags_after = dict(name='div', attrs={'class': 'fbContainer'}) - remove_tags = [dict(name='div', attrs={'class': ['fbContainer', 'socials']}), - dict(name='p', attrs={ - 'class': ['tagCloud', 'galleryAuthor']}), - dict(id=['movieShare', 'container']), dict(name='br')] - feeds = [(u'Informacje', u'http://www.cgm.pl/rss.xml'), (u'Polecamy', u'http://www.cgm.pl/rss,4,news.xml'), - (u'Recenzje', u'http://www.cgm.pl/rss,1,news.xml')] - - def preprocess_html(self, soup): - gallery = soup.find('div', attrs={'class': 'galleryFlash'}) - if gallery and gallery.div: - img = gallery.div - gallery.img.extract() - if img: - img = img['style'] - img = 'http://www.cgm.pl' + \ - img[img.find('url(') + 4:img.find(')')] - gallery.contents[1].name = 'img' - gallery.contents[1]['src'] = img - pos = len(gallery.contents) - gallery.insert(pos, BeautifulSoup('
')) - - for item in soup.findAll(style=True): - del item['style'] - ad = soup.findAll('a') - for r in ad: - if 'www.hustla.pl' in r['href'] or 'www.ebilet.pl' in r['href']: - r.extract() - return soup diff --git a/recipes/chicago_breaking_news.recipe b/recipes/chicago_breaking_news.recipe deleted file mode 100644 index 172e574671..0000000000 --- a/recipes/chicago_breaking_news.recipe +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2009, Darko Miletic ' -''' -chicagobreakingnews.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class ChicagoBreakingNews(BasicNewsRecipe): - title = 'Chicago Breaking News' - __author__ = 'Darko Miletic' - description = 'Breaking News from Chicago' - oldest_article = 1 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = True - publisher = 'Chicago Breaking News' - category = 'news, politics, USA, Chicago' - encoding = 'utf8' - language = 'en' - - html2lrf_options = [ - '--comment', description, '--category', category, '--publisher', publisher - ] - - html2epub_options = 'publisher="' + publisher + \ - '"\ncomments="' + description + '"\ntags="' + category + '"' - - feeds = [(u'Breaking news', u'http://feeds2.feedburner.com/ChicagoBreakingNews/')] - - def preprocess_html(self, soup): - for item in soup.findAll('a'): - if item['href'].find('http://feedads.googleadservices.com') > -1: - item.extract() - for item in soup.findAll(style=True): - del item['style'] - for item in soup.findAll(color=True): - del item['color'] - for item in soup.findAll(size=True): - del item['size'] - return soup diff --git a/recipes/china_economic_net.recipe b/recipes/china_economic_net.recipe deleted file mode 100644 index c63ee43b70..0000000000 --- a/recipes/china_economic_net.recipe +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1278162597(BasicNewsRecipe): - __author__ = 'rty' - title = u'China Economic Net' - oldest_article = 7 - max_articles_per_feed = 100 - - publisher = 'www.ce.cn - China Economic net - Beijing' - description = 'China Economic Net Magazine' - category = 'Economic News Magazine, Chinese, China' - - recipe_specific_options = { - 'days': { - 'short': 'Oldest article to download from this news source. In days ', - 'long': 'For example, 0.5, gives you articles from the past 12 hours', - 'default': str(oldest_article) - } - } - - def __init__(self, *args, **kwargs): - BasicNewsRecipe.__init__(self, *args, **kwargs) - d = self.recipe_specific_options.get('days') - if d and isinstance(d, str): - self.oldest_article = float(d) - - feeds = [ - (u'Stock Market 股市', u'http://finance.ce.cn/stock/index_6304.xml'), - (u'Money 理财', u'http://finance.ce.cn/money/index_6301.xml'), - (u'Health 健康', u'http://www.ce.cn/health/index_6294.xml'), - (u'Technology 科技', u'http://sci.ce.cn/mainpage/index_6307.xml'), - (u'Domestic Politics 国内时政', u'http://www.ce.cn/xwzx/gnsz/index_6273.xml') - ] - masthead_url = 'http://finance.ce.cn/images/08mdy_logo.gif' - extra_css = ''' - @font-face {font-family: "DroidFont", serif, sans-serif; src: url(res:///system/fonts/DroidSansFallback.ttf); }\n - body {margin-right: 8pt; font-family: 'DroidFont', serif;}\n - h1 {font-family: 'DroidFont', serif;}\n - .articledescription {font-family: 'DroidFont', serif;} - ''' - remove_javascript = True - use_embedded_content = False - no_stylesheets = True - language = 'zh_CN' - encoding = 'gb2312' - conversion_options = {'linearize_tables': True} - - keep_only_tags = [ - - dict(name='h1', attrs={'id': 'articleTitle'}), - dict(name='div', attrs={'class': 'laiyuan'}), - dict(name='div', attrs={'id': 'articleText'}), - ] diff --git a/recipes/china_times.recipe b/recipes/china_times.recipe deleted file mode 100644 index b9b77e5e27..0000000000 --- a/recipes/china_times.recipe +++ /dev/null @@ -1,41 +0,0 @@ -# -*- coding: utf-8 -*- -__license__ = 'GPL v3' -# dug from http://www.mobileread.com/forums/showthread.php?p=1012294 - -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1277443634(BasicNewsRecipe): - title = u'中時電子報' - oldest_article = 1 - max_articles_per_feed = 100 - - feeds = [(u'焦點要聞', u'http://feeds.feedburner.com/chinatimes/chinatimes-focus'), - (u'生活新聞', u'http://feeds.feedburner.com/chinatimes/chinatimes-life'), - (u'社會新聞', u'http://feeds.feedburner.com/chinatimes/chinatimes-society'), - (u'兩岸國際', u'http://feeds.feedburner.com/chinatimes/chinatimes-international'), - (u'時論廣場', u'http://feeds.feedburner.com/chinatimes/chinatimes-comment'), - (u'藝文副刊', u'http://feeds.feedburner.com/chinatimes/chinatimes-philology'), - (u'地方新聞', u'http://feeds.feedburner.com/chinatimes/chinatimes-local'), - (u'財經焦點', u'http://feeds.feedburner.com/chinatimes/chinatimes-finance'), - (u'運動天地', u'http://feeds.feedburner.com/chinatimes/chinatimes-sport'), - (u'娛樂新聞', u'http://feeds.feedburner.com/chinatimes/chinatimes-showbiz'), - (u'時尚消費', u'http://feeds.feedburner.com/chinatimes/chinatimes-fashion'), - # (u'財經', u'http://rss.chinatimes.com/rss/finance-u.rss'), # broken links - # (u'股市', u'http://rss.chinatimes.com/rss/stock-u.rss') # broken links - ] - - __author__ = 'einstuerzende, updated by Eddie Lau' - __version__ = '1.1' - language = 'zh' - publisher = 'China Times Group' - description = 'China Times (Taiwan)' - category = 'News, Chinese, Taiwan' - remove_javascript = True - use_embedded_content = False - no_stylesheets = True - auto_cleanup = True - encoding = 'utf-8' - conversion_options = {'linearize_tables': True} - masthead_url = 'http://www.fcuaa.org/gif/chinatimeslogo.gif' - cover_url = 'http://www.fcuaa.org/gif/chinatimeslogo.gif' diff --git a/recipes/chipro.recipe b/recipes/chipro.recipe deleted file mode 100644 index 799880e888..0000000000 --- a/recipes/chipro.recipe +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = u'2011, Silviu Cotoar\u0103' -''' -chip.ro -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class ChipRo(BasicNewsRecipe): - title = u'Chip Online' - __author__ = u'Silviu Cotoar\u0103' - description = 'Chip Online' - publisher = 'Chip Online' - oldest_article = 5 - language = 'ro' - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - category = 'Ziare,Reviste,IT' - encoding = 'utf-8' - cover_url = 'http://www.chip.ro/images/logo.png' - - conversion_options = { - 'comments': description, 'tags': category, 'language': language, 'publisher': publisher - } - - keep_only_tags = [ - dict(name='h2', attrs={'class': 'contentheading clearfix'}), dict(name='span', attrs={ - 'class': 'createby'}), dict(name='div', attrs={'class': 'article-content'}) - ] - - remove_tags = [ - dict(name='div', attrs={'class': ['sharemecompactbutton']}), dict(name='div', attrs={'align': ['left']}), dict(name='div', attrs={ - 'align': ['center']}), dict(name='th', attrs={'class': ['pagenav_prev']}), dict(name='table', attrs={'class': ['pagenav']}) - ] - - feeds = [ - (u'Feeds', u'http://www.chip.ro/index.php?option=com_ninjarsssyndicator&feed_id=9&format=raw') - ] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/chosun.recipe b/recipes/chosun.recipe deleted file mode 100644 index 6c1ea48fb6..0000000000 --- a/recipes/chosun.recipe +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -__license__ = 'GPL v3' -__copyright__ = '2015, Hoje Lee ' -''' -Profile to download Chosun.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class ChosunDotcom(BasicNewsRecipe): - language = 'ko' - title = u'조선일보' - description = u'조선닷컴 기사' - __author__ = 'Hoje Lee' - oldest_article = 7 - max_articles_per_feed = 10 - auto_cleanup = True - - feeds = [ - (u'정치', 'http://www.chosun.com/site/data/rss/politics.xml'), - (u'조선비즈', 'http://biz.chosun.com/site/data/rss/rss.xml'), - (u'사회', 'http://www.chosun.com/site/data/rss/national.xml'), - (u'문화', 'http://www.chosun.com/site/data/rss/culture.xml'), - (u'국제', 'http://www.chosun.com/site/data/rss/international.xml'), - (u'오피니언', 'http://www.chosun.com/site/data/rss/editorials.xml'), - (u'스포츠', 'http://www.chosun.com/site/data/rss/sports.xml'), - (u'연예', 'http://www.chosun.com/site/data/rss/ent.xml'), - ] diff --git a/recipes/cinco_dias.recipe b/recipes/cinco_dias.recipe deleted file mode 100644 index 5201403fd4..0000000000 --- a/recipes/cinco_dias.recipe +++ /dev/null @@ -1,71 +0,0 @@ -__license__ = 'GPL v3' -__author__ = 'Luis Hernandez' -__copyright__ = 'Luis Hernandez' -__version__ = 'v1.2' -__date__ = '31 January 2011' - -''' -http://www.cincodias.com/ -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1294946868(BasicNewsRecipe): - - title = u'Cinco Dias' - publisher = u'Grupo Prisa' - - __author__ = 'Luis Hernandez' - description = 'spanish web about money and business, free edition' - - cover_url = 'http://www.prisa.com/images/logos/logo_cinco_dias.gif' - oldest_article = 2 - max_articles_per_feed = 100 - - remove_javascript = True - no_stylesheets = True - use_embedded_content = False - - language = 'es' - remove_empty_feeds = True - encoding = 'ISO-8859-1' - timefmt = '[%a, %d %b, %Y]' - - keep_only_tags = [ - dict(name='div', attrs={'class': ['cab_articulo cab_noticia', 'pos_3', 'txt_noticia', 'mod_despiece']}), dict( - name='p', attrs={'class': ['cintillo']}) - ] - - remove_tags_before = dict(name='div', attrs={'class': ['publi_h']}) - remove_tags_after = dict( - name='div', attrs={'class': ['tab_util util_estadisticas']}) - - remove_tags = [ - dict(name='div', attrs={'class': ['util-1', 'util-2', 'util-3', 'inner estirar', 'inner1', 'inner2', 'inner3', 'cont', 'tab_util util_estadisticas', 'tab_util util_enviar', 'mod_list_inf', 'mod_similares', 'mod_divisas', 'mod_sectores', 'mod_termometro', 'mod post', 'mod_img', 'mod_txt', 'nivel estirar', 'barra estirar', 'info_brujula btnBrujula', 'utilidad_brujula estirar']}), dict(name='li', attrs={'class': ['lnk-fcbook', 'lnk-retweet', 'lnk-meneame', 'desplegable', 'comentarios', 'list-options', 'estirar']}), dict(name='ul', attrs={'class': ['lista-izquierda', 'list-options', 'estirar']}), dict(name='p', attrs={'class': ['autor']}) # noqa - ] - - extra_css = """ - p{text-align: justify; font-size: 100%} - body{ text-align: left; font-size:100% } - h1{font-family: sans-serif; font-size:150%; font-weight:bold; text-align: justify; } - h3{font-family: sans-serif; font-size:100%; font-style: italic; text-align: justify; } - """ - - feeds = [ - - (u'Ultima Hora', u'http://www.cincodias.com/rss/feed.html?feedId=17029'), - (u'Empresas', u'http://www.cincodias.com/rss/feed.html?feedId=19'), - (u'Mercados', u'http://www.cincodias.com/rss/feed.html?feedId=20'), - (u'Economia', u'http://www.cincodias.com/rss/feed.html?feedId=21'), - (u'Tecnorama', u'http://www.cincodias.com/rss/feed.html?feedId=17230'), - (u'Tecnologia', u'http://www.cincodias.com/rss/feed.html?feedId=17106'), - (u'Finanzas Personales', u'http://www.cincodias.com/rss/feed.html?feedId=22'), - (u'Fiscalidad', u'http://www.cincodias.com/rss/feed.html?feedId=17107'), - (u'Vivienda', u'http://www.cincodias.com/rss/feed.html?feedId=17108'), - (u'Tendencias', u'http://www.cincodias.com/rss/feed.html?feedId=17109'), - (u'Empleo', u'http://www.cincodias.com/rss/feed.html?feedId=17110'), - (u'IBEX 35', u'http://www.cincodias.com/rss/feed.html?feedId=17125'), - (u'Sectores', u'http://www.cincodias.com/rss/feed.html?feedId=17126'), - (u'Opinion', u'http://www.cincodias.com/rss/feed.html?feedId=17105') - ] diff --git a/recipes/cinebel_be.recipe b/recipes/cinebel_be.recipe deleted file mode 100644 index cf5fca41dd..0000000000 --- a/recipes/cinebel_be.recipe +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2008-2011, Lionel Bergeret ' -''' -cinebel.be -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Cinebel(BasicNewsRecipe): - title = u'Cinebel' - __author__ = u'Lionel Bergeret' - description = u'Cinema news from Belgium in French' - publisher = u'cinebel.be' - category = 'news, cinema, movie, Belgium' - oldest_article = 15 - language = 'fr' - - max_articles_per_feed = 20 - no_stylesheets = True - use_embedded_content = False - timefmt = ' [%d %b %Y]' - filterDuplicates = True - - keep_only_tags = [ - dict(name='span', attrs={'class': 'movieMainTitle'}), dict(name='div', attrs={'id': 'filmPoster'}), dict( - name='div', attrs={'id': 'filmDefinition'}), dict(name='div', attrs={'id': 'synopsis'}) - ] - - feeds = [ - - (u'Les sorties de la semaine', u'http://www.cinebel.be/Servlets/RssServlet?languageCode=fr&rssType=0'), - (u'Top 10', u'http://www.cinebel.be/Servlets/RssServlet?languageCode=fr&rssType=2') - ] - - def preprocess_html(self, soup): - for alink in soup.findAll('a', href=True): - tstr = "Site officiel: " + alink['href'] - alink.replaceWith(tstr) - return soup - - def get_cover_url(self): - cover_url = 'http://www.cinebel.be/portal/resources/common/logo_index.gif' - return cover_url diff --git a/recipes/cio.recipe b/recipes/cio.recipe deleted file mode 100644 index 99dc6c1d7a..0000000000 --- a/recipes/cio.recipe +++ /dev/null @@ -1,131 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__author__ = 'Lorenzo Vigentini' -__copyright__ = '2009, Lorenzo Vigentini ' -__version__ = 'v1.01' -__date__ = '14, January 2010' -__description__ = 'CIO is the leading information brand for today s busy chief information officer. ' - -''' -http://www.cio.co.uk/ -''' - -from calibre.ptempfile import PersistentTemporaryFile -from calibre.web.feeds.news import BasicNewsRecipe - - -class cio(BasicNewsRecipe): - __author__ = 'Lorenzo Vigentini' - description = 'CIO is the leading information brand for today\'s busy chief information officer.' - cover_url = 'http://media.cio.co.uk/graphics/shared/cio-logo.gif' - - title = 'CIO ' - publisher = 'IDG Communication' - category = 'IT, technology, business, industry' - - language = 'en' - timefmt = '[%a, %d %b, %Y]' - - oldest_article = 7 - max_articles_per_feed = 10 - use_embedded_content = False - recursion = 10 - - remove_javascript = True - no_stylesheets = True - - temp_files = [] - articles_are_obfuscated = True - - def get_obfuscated_article(self, url): - br = self.get_browser() - br.open(url) - response = br.follow_link(url_regex='&print&intcmp=ROSATT2$', nr=0) - html = response.read() - self.temp_files.append(PersistentTemporaryFile('_fa.html')) - self.temp_files[-1].write(html) - self.temp_files[-1].close() - return self.temp_files[-1].name - - keep_only_tags = [ - dict(name='div', attrs={'id': 'mainContent'}) - ] - - feeds = [ - (u'News', u'http://www.cio.co.uk/rss/feeds/cio-news.xml'), - (u'Debate', u'http://www.cio.co.uk/rss/feeds/cio-debate.xml'), - (u'Analysis', u'http://www.cio.co.uk/rss/feeds/cio-analysis.xml'), - (u'Opinion', u'http://www.cio.co.uk/rss/feeds/cio-opinion.xml'), - (u'In-Depth', u'http://www.cio.co.uk/rss/feeds/cio-in-depth.xml'), - (u'Change management', - u'http://www.cio.co.uk/rss/feeds/cio-change-management-management.xml'), - (u'Regulatory compliance', - u'http://www.cio.co.uk/rss/feeds/cio-regulatory-compliance-management.xml'), - (u'Business strategy', - u'http://www.cio.co.uk/rss/feeds/cio-business-strategy-management.xml'), - (u'Technology', u'http://www.cio.co.uk/rss/feeds/cio-technology-management.xml'), - (u'Security', u'http://www.cio.co.uk/rss/feeds/cio-security-management.xml'), - (u'Soft skills', u'http://www.cio.co.uk/rss/feeds/cio-soft-skills-management.xml'), - (u'The CIO career', - u'http://www.cio.co.uk/rss/feeds/cio-cio-career-management.xml'), - (u'Budgets', u'http://www.cio.co.uk/rss/feeds/cio-budgets-management.xml'), - (u'Supplier management', - u'http://www.cio.co.uk/rss/feeds/cio-supplier-management-management.xml'), - (u'Board politics', - u'http://www.cio.co.uk/rss/feeds/cio-board-politics-management.xml'), - (u'Enterprise software', - u'http://www.cio.co.uk/rss/feeds/cio-enterprise-software-technology.xml'), - (u'Mobile and wireless', - u'http://www.cio.co.uk/rss/feeds/cio-mobile-wireless-technology.xml'), - (u'Security', u'http://www.cio.co.uk/rss/feeds/cio-security-technology.xml'), - (u'Storage', u'http://www.cio.co.uk/rss/feeds/cio-storage-technology.xml'), - (u'Desktop and client', - u'http://www.cio.co.uk/rss/feeds/cio-desktop-client-technology.xml'), - (u'Outsourcing', u'http://www.cio.co.uk/rss/feeds/cio-outsourcing-technology.xml'), - (u'Internet and e-commerce', - u'http://www.cio.co.uk/rss/feeds/cio-internet-technology.xml'), - (u'Database management', - u'http://www.cio.co.uk/rss/feeds/cio-database-management-technology.xml'), - (u'Communications and networking ', - u'http://www.cio.co.uk/rss/feeds/cio-communication-networking-technology.xml'), - (u'Grid computing', - u'http://www.cio.co.uk/rss/feeds/cio-grid-computing-cloud-technology.xml'), - (u'Enterprise search', - u'http://www.cio.co.uk/rss/feeds/cio-enterprise-search-technology.xml'), - (u'CRM ', u'http://www.cio.co.uk/rss/feeds/cio-crm-technology.xml'), - (u'Ade McCormack ', - u'http://www.cio.co.uk/rss/feeds/cio-opinion-ade-mccormack.xml'), - (u'Andy Hayler ', - u'http://www.cio.co.uk/rss/feeds/cio-opinion-andy-hayler.xml'), - (u'CEB ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-ceb.xml'), - (u'CIO Staff ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-cio-staff.xml'), - (u'Dave Pepperell ', - u'http://www.cio.co.uk/rss/feeds/cio-opinion-dave-pepperell.xml'), - (u'Elliot Limb ', - u'http://www.cio.co.uk/rss/feeds/cio-opinion-elliot-limb.xml'), - (u'Freeform Dynamics ', - u'http://www.cio.co.uk/rss/feeds/cio-opinion-freeform-dynamics.xml'), - (u'Giles Nelson ', - u'http://www.cio.co.uk/rss/feeds/cio-opinion-giles-nelson.xml'), - (u'Mark Chillingworth ', - u'http://www.cio.co.uk/rss/feeds/cio-opinion-mark-chillingworth.xml'), - (u'Martin Veitch ', - u'http://www.cio.co.uk/rss/feeds/cio-opinion-martin-veitch.xml'), - (u'Mike Altendorf ', - u'http://www.cio.co.uk/rss/feeds/cio-opinion-mike-altendorf.xml'), - (u'Richard Steel ', - u'http://www.cio.co.uk/rss/feeds/cio-opinion-richard-steel.xml'), - (u'Richard Sykes ', - u'http://www.cio.co.uk/rss/feeds/cio-opinion-richard-sykes.xml'), - (u'Rob Llewellyn ', - u'http://www.cio.co.uk/rss/feeds/cio-opinion-rob-llewellyn.xml'), - (u'Free thinking ', - u'http://www.cio.co.uk/rss/feeds/cio-blog-free-thinking.xml'), - (u'Leading CIOs ', - u'http://www.cio.co.uk/rss/feeds/cio-blog-leading-cios.xml'), - (u'CIO News View ', - u'http://www.cio.co.uk/rss/feeds/cio-blog-cio-news-view.xml'), - (u'CIO Blog ', u'http://www.cio.co.uk/rss/feeds/cio-blog-cio-blog.xml'), - (u'Transformation CIO ', - u'http://www.cio.co.uk/rss/feeds/cio-blog-transformation-cio.xml') - ] diff --git a/recipes/cio_magazine.recipe b/recipes/cio_magazine.recipe deleted file mode 100644 index 813e3445cb..0000000000 --- a/recipes/cio_magazine.recipe +++ /dev/null @@ -1,147 +0,0 @@ -from __future__ import print_function - -import re - -# Para convertir el tiempo del articulo -import string - -# sys no hace falta... lo intente usar para escribir en stderr -from calibre import strftime - -# Los primeros comentarios son las dificultades que he tenido con el Piton -# Cuando da error UTF8 revisa los comentarios (acentos). En notepad++ Search, Goto, posicion y lo ves. -# Editar con Notepad++ Si pone - donde no debe es que ha indentado mal... Edit - Blank operations - tab to space -# He entendido lo que significa el from... son paths dentro de pylib.zip... -# Con from importa solo un simbolo...con import,la libreria completa -from calibre.web.feeds.news import BasicNewsRecipe - -# Para usar expresiones regulares -# Visto en pylib.zip... la primera letra es mayuscula -# Estas dos ultimas han sido un vago intento de establecer una cookie (no -# usado) - - -class CIO_Magazine(BasicNewsRecipe): - title = 'CIO Magazine' - oldest_article = 14 - max_articles_per_feed = 100 - auto_cleanup = True - __author__ = 'Julio Map' - description = 'CIO is the leading information brand for today-s busy Chief information Officer - CIO Magazine bi-monthly ' - language = 'en' - encoding = 'utf8' - cover_url = 'http://www.cio.com/homepage/images/hp-cio-logo-linkedin.png' - - remove_tags_before = dict(name='div', attrs={'id': 'container'}) -# Absolutamente innecesario... al final he visto un print_version (ver mas -# adelante) - -# Dentro de una revista dada... -# issue_details contiene el titulo y las secciones de este ejemplar -# DetailModule esta dentro de issue_details contiene las urls y resumenes -# Dentro de un articulo dado... -# Article-default-body contiene el texto. Pero como digo, he encontrado -# una print_version - - no_stylesheets = True - remove_javascript = True - - def print_version(self, url): - # A esta funcion le llama el sistema... no hay que llamarla uno mismo (porque seria llamada dos veces) - # Existe una version imprimible de los articulos cambiando - # http://www.cio.com/article// por - # http://www.cio.com/article/print/ que contiene todas las paginas - # dentro del div id=container - if url.startswith('/'): - url = 'http://www.cio.com' + url - segments = url.split('/') - printURL = '/'.join(segments[0:4]) + '/print/' + segments[4] + '#' - return printURL - - def parse_index(self): - ####################################################################### - # This method should be implemented in recipes that parse a website - # instead of feeds to generate a list of articles. Typical uses are for - # news sources that have a Print Edition webpage that lists all the - # articles in the current print edition. If this function is implemented, - # it will be used in preference to BasicNewsRecipe.parse_feeds(). - # - # It must return a list. Each element of the list must be a 2-element - # tuple of the form ('feed title', list of articles). - # - # Each list of articles must contain dictionaries of the form: - # - # { - # 'title' : article title, - # 'url' : URL of print version, - # 'date' : The publication date of the article as a string, - # 'description' : A summary of the article - # 'content' : The full article (can be an empty string). This is used by FullContentProfile - # } - # - # For an example, see the recipe for downloading The Atlantic. - # In addition, you can add 'author' for the author of the article. - ####################################################################### - - # Primero buscamos cual es la ultima revista que se ha creado - soupinicial = self.index_to_soup('http://www.cio.com/magazine') - # Es el primer enlace que hay en el DIV con class content_body - a = soupinicial.find( - True, attrs={'class': 'content_body'}).find('a', href=True) - INDEX = re.sub(r'\?.*', '', a['href']) - # Como cio.com usa enlaces relativos, le anteponemos el domain name. - if INDEX.startswith('/'): # protegiendonos de que dejen de usarlos - INDEX = 'http://www.cio.com' + INDEX - # Y nos aseguramos en los logs que lo estamos haciendo bien - print("INDEX en parse_index: ", INDEX) - - # Ya sabemos cual es la revista... procesemosla. - soup = self.index_to_soup(INDEX) - - articles = {} - key = None - feeds = [] - # Para empezar nos quedamos solo con dos DIV, 'heading' y ' issue_item' - # Del primero sacamos las categorias (key) y del segundo las urls y - # resumenes - for div in soup.findAll(True, - attrs={'class': ['heading', 'issue_item']}): - - if ''.join(div['class']) == 'heading': - key = string.capwords(self.tag_to_string(div.span)) - print("Key: ", key) # Esto es para depurar - articles[key] = [] - feeds.append(key) - - elif ''.join(div['class']) == 'issue_item': - a = div.find('a', href=True) - if not a: - continue - url = re.sub(r'\?.*', '', a['href']) - print("url: ", url) # Esto es para depurar - # Ya para nota, quitar al final las dos ultimas palabras - title = self.tag_to_string(a, use_alt=True).strip() - # No es la fecha de publicacion sino la de colecta - pubdate = strftime('%a, %d %b') - # Dentro de la div 'issue_item' el unico parrafo que hay es el - # resumen - summary = div.find('p') - # Si hay summary la description sera el summary... si no, la - # dejamos en blanco - description = '' - - if summary: - description = self.tag_to_string(summary, use_alt=False) - print("Description = ", description) - - # Esto esta copiado del NY times - feed = key if key is not None else 'Uncategorized' - if feed not in articles: - articles[feed] = [] - if 'podcasts' not in url: - articles[feed].append( - dict(title=title, url=url, date=pubdate, - description=description, - content='')) - feeds = [(k, articles[k]) for k in feeds if k in articles] - return feeds diff --git a/recipes/cityavisen_dk.recipe b/recipes/cityavisen_dk.recipe deleted file mode 100644 index c9f493ad86..0000000000 --- a/recipes/cityavisen_dk.recipe +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -# https://manual.calibre-ebook.com/news_recipe.html -from __future__ import absolute_import, division, print_function, unicode_literals - -from calibre.web.feeds.news import BasicNewsRecipe - -''' -City Avisen -''' - - -class CityAvisen_dk(BasicNewsRecipe): - __author__ = 'CoderAllan.github.com' - title = 'City Avisen' - - category = 'newspaper, news, localnews, sport, culture, Denmark' - oldest_article = 7 - max_articles_per_feed = 50 - auto_cleanup = True - language = 'da' - - feeds = [ - ('City Avisen', 'http://minby.dk/city-avisen/feed/'), - ('Kommentarer til City Avisen', 'http://minby.dk/city-avisen/comments/feed/'), - - ] - diff --git a/recipes/cjr.recipe b/recipes/cjr.recipe deleted file mode 100644 index b360e85223..0000000000 --- a/recipes/cjr.recipe +++ /dev/null @@ -1,16 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class CJR(BasicNewsRecipe): - title = u'Columbia Journalism Review' - __author__ = u'Xanthan Gum' - description = 'News about journalism.' - language = 'en' - - oldest_article = 7 - max_articles_per_feed = 100 - - feeds = [(u'News Stories', u'http://www.cjr.org/index.xml')] - - def print_version(self, url): - return url + '?page=all&print=true' diff --git a/recipes/clarion_ledger.recipe b/recipes/clarion_ledger.recipe deleted file mode 100644 index e52c093d78..0000000000 --- a/recipes/clarion_ledger.recipe +++ /dev/null @@ -1,28 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class ClarionLedger(BasicNewsRecipe): - title = u'Clarion Ledger' - oldest_article = 7 - max_articles_per_feed = 100 - no_stylesheets = True - language = 'en' - __author__ = 'cr4zyd' - - feeds = [ - (u'Local News', u'http://www.clarionledger.com/apps/pbcs.dll/oversikt?Category=RSS01'), - (u'Breaking News', u'http://www.clarionledger.com/apps/pbcs.dll/section?Category=RSS'), - - (u'Sports', u'http://www.clarionledger.com/apps/pbcs.dll/oversikt?Category=RSS02'), - (u'Business', u'http://www.clarionledger.com/apps/pbcs.dll/oversikt?Category=RSS03')] - - keep_only_tags = [dict(name='div', attrs={'class': 'article-headline'}), - dict(name='div', attrs={'class': 'article-bodytext'})] - remove_tags = [dict(name=['img', 'script', 'li']), - dict(name='p', attrs={'class': 'ratingbyline'}), - dict(name='div', attrs={'class': 'article-tools'}), - dict(name='div', attrs={ - 'class': 'article-pagination article-pagination-top'}), - dict(name='div', attrs={ - 'class': 'article-pagination article-pagination-bottom'}), - dict(name='div', attrs={'class': 'articleflex-container'})] diff --git a/recipes/clic_rbs.recipe b/recipes/clic_rbs.recipe deleted file mode 100644 index d08e414ea3..0000000000 --- a/recipes/clic_rbs.recipe +++ /dev/null @@ -1,53 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class ClicRBS(BasicNewsRecipe): - title = u'ClicRBS' - language = 'pt' - __author__ = 'arvoredo' - oldest_article = 3 - max_articles_per_feed = 9 - cover_url = 'http://www.publicidade.clicrbs.com.br/clicrbs/imgs/logo_clic.gif' - - remove_tags = [ - dict(name='div', attrs={ - 'class': ['clic-barra-inner', 'botao-versao-mobile ']}) - ] - - remove_tags_before = dict(name='div ', attrs={'class': 'descricao'}) - remove_tags_before = dict(name='div', attrs={'id': 'glb-corpo'}) - remove_tags_before = dict(name='div', attrs={'class': 'descricao'}) - remove_tags_before = dict(name='div', attrs={'class': 'coluna'}) - remove_tags_after = dict(name='div', attrs={'class': 'extra'}) - remove_tags_after = dict(name='div', attrs={'id': 'links-patrocinados'}) - remove_tags_after = dict(name='h4', attrs={'class': 'tipo-c comente'}) - remove_tags_after = dict(name='ul', attrs={'class': 'lista'}) - - feeds = [ - - (u'zerohora.com, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?uf=1&local=1&channel=13'), - (u'diariocatarinense.com, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?uf=2&local=18&channel=67'), - (u'Concursos e Emprego', u'http://g1.globo.com/Rss2/0,,AS0-9654,00.xml'), - (u'Pioneiro.com, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?channel=87&uf=1&local=1'), - (u'Economia, zerohora.com, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?sect_id=801&uf=1&local=1&channel=13'), - (u'Esportes, zerohora.com, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?sect_id=802&uf=1&local=1&channel=13'), - (u'Economia, Pioneiro.com, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?sect_id=1180&channel=87&uf=1&local=1'), - (u'Política, Pioneiro.com, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?sect_id=1185&channel=87&uf=1&local=1'), - (u'Mundo, Pioneiro.com, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?sect_id=1184&channel=87&uf=1&local=1'), - (u'Catarinense, Esportes, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?sect_id=&theme=371&uf=2&channel=2'), - (u'Geral, Pioneiro.com, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?sect_id=1183&channel=87&uf=1&local=1'), - (u'Estilo de Vida, zerohora.com, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?sect_id=805&uf=1&local=1&channel=13'), - (u'Corrida, Corrida, Esportes, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?sect_id=1313&theme=15704&uf=1&channel=2'), - (u'Jornal de Santa Catarina, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?espid=159&uf=2&local=18'), - (u'Grêmio, Futebol, Esportes, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?sect_id=11&theme=65&uf=1&channel=2'), - (u'Velocidade, Esportes, clicRBS', u'http://www.clicrbs.com.br/jsp/rssfeed.jspx?sect_id=1314&theme=2655&uf=1&channel=2') - ] - - extra_css = ''' - cite{color:#007BB5; font-size:xx-small; font-style:italic;} - body{font-family:Arial,Helvetica,sans-serif;font-size:x-small;} - h3{font-size:large; color:#082963; font-weight:bold;} - #ident{color:#0179B4; font-size:xx-small;} - p{color:#000000;font-weight:normal;} - .commentario p{color:#007BB5; font-style:italic;} - ''' diff --git a/recipes/climate_progress.recipe b/recipes/climate_progress.recipe deleted file mode 100644 index e7ecd93e67..0000000000 --- a/recipes/climate_progress.recipe +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2009, Darko Miletic ' -''' -climateprogress.org -''' - -from calibre.ebooks.BeautifulSoup import Tag -from calibre.web.feeds.news import BasicNewsRecipe - - -def new_tag(soup, name, attrs=()): - impl = getattr(soup, 'new_tag', None) - if impl is not None: - return impl(name, attrs=dict(attrs)) - return Tag(soup, name, attrs=attrs or None) - - -class ClimateProgress(BasicNewsRecipe): - title = 'Climate Progress' - __author__ = 'Darko Miletic' - description = "An insider's view of climate science, politics and solutions" - publisher = 'Climate Progress' - category = 'news, ecology, climate, blog' - oldest_article = 7 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = True - encoding = 'utf-8' - language = 'en' - - lang = 'en' - direction = 'ltr' - - html2lrf_options = [ - '--comment', description, '--category', category, '--publisher', publisher - ] - - html2epub_options = 'publisher="' + publisher + \ - '"\ncomments="' + description + '"\ntags="' + category + '"' - - extra_css = ''' - h2{color:#003366;font-size: large ;font-family:Arial,Helvetica,sans-serif; font-weight:bold;} - h3{color:#003366;font-size: small ;font-family:Arial,Helvetica,sans-serif; font-weight:bold;} - h4{color:#003366;font-size: x-small ;font-family:Arial,Helvetica,sans-serif; font-weight:bold;} - .date{color:#333333; font-size:xx-small; font-family:Arial,Helvetica,sans-serif; font-style:italic} - a{color:#339966;} - body{font-family:Georgia,Times New Roman,Times,serif; font-size:x-small;color:#333333;} - ''' - - feeds = [(u'Posts', u'http://feeds.feedburner.com/climateprogress/lCrX')] - - def preprocess_html(self, soup): - soup.html['lang'] = self.lang - soup.html['dir'] = self.direction - mlang = new_tag(soup, 'meta', [ - ("http-equiv", "Content-Language"), ("content", self.lang)]) - mcharset = new_tag(soup, 'meta', [ - ("http-equiv", "Content-Type"), ("content", "text/html; charset=utf-8")]) - soup.head.insert(0, mlang) - soup.head.insert(1, mcharset) - return self.adeify_images(soup) diff --git a/recipes/coding_horror.recipe b/recipes/coding_horror.recipe deleted file mode 100644 index 83a33220ff..0000000000 --- a/recipes/coding_horror.recipe +++ /dev/null @@ -1,33 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2009-2012, Darko Miletic ' -''' -www.codinghorror.com/blog/ -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class CodingHorror(BasicNewsRecipe): - title = 'Coding Horror' - __author__ = 'Darko Miletic' - description = 'programming and human factors - Jeff Atwood' - category = 'blog, programming' - publisher = 'Jeff Atwood' - language = 'en' - oldest_article = 30 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = True - encoding = 'utf8' - auto_cleanup = True - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language, 'authors': publisher - } - - remove_tags = [ - dict(name=['object', 'link']), dict( - name='div', attrs={'class': 'feedflare'}) - ] - - feeds = [(u'Articles', u'http://feeds2.feedburner.com/codinghorror')] diff --git a/recipes/columbusdispatch.recipe b/recipes/columbusdispatch.recipe deleted file mode 100644 index 476b57ba71..0000000000 --- a/recipes/columbusdispatch.recipe +++ /dev/null @@ -1,54 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class ColumbusDispatchRecipe(BasicNewsRecipe): - __license__ = 'GPL v3' - __author__ = 'kwetal' - language = 'en' - version = 1 - - title = u'The Columbus Dispatch' - publisher = u'The Columbus Dispatch' - category = u'News, Newspaper' - description = u'Daily newspaper from central Ohio' - - use_embedded_content = False - remove_empty_feeds = True - oldest_article = 1.2 - use_embedded_content = False - - no_stylesheets = True - auto_cleanup = True - # Feeds from http://www.dispatch.com/live/content/rss/index.html - feeds = [ - ('Local', - 'http://www.dispatch.com/content/syndication/news_local-state.xml'), - ('National', - 'http://www.dispatch.com/content/syndication/news_national.xml'), - ('Business', - 'http://www.dispatch.com/content/syndication/news_business.xml'), - ('Editorials', - 'http://www.dispatch.com/content/syndication/opinion_editorials.xml'), - ('Columnists', - 'http://www.dispatch.com/content/syndication/opinion_columns.xml'), - ('Life and Arts', - 'http://www.dispatch.com/content/syndication/lae_life-and-arts.xml'), - ('OSU Sports', - 'http://www.dispatch.com/content/syndication/sports_osu.xml'), - ('Auto Racing', - 'http://www.dispatch.com/content/syndication/sports_auto-racing.xml'), - ('Outdoors', - 'http://www.dispatch.com/content/syndication/sports_outdoors.xml'), - ('Bengals', - 'http://www.dispatch.com/content/syndication/sports_bengals.xml'), - ('Indians', - 'http://www.dispatch.com/content/syndication/sports_indians.xml'), - ('Clippers', - 'http://www.dispatch.com/content/syndication/sports_clippers.xml'), - ('Crew', - 'http://www.dispatch.com/content/syndication/sports_crew.xml'), - ('Reds', - 'http://www.dispatch.com/content/syndication/sports_reds.xml'), - ('Blue Jackets', - 'http://www.dispatch.com/content/syndication/sports_bluejackets.xml'), - ] diff --git a/recipes/computerworld_pl.recipe b/recipes/computerworld_pl.recipe deleted file mode 100644 index 256326967c..0000000000 --- a/recipes/computerworld_pl.recipe +++ /dev/null @@ -1,27 +0,0 @@ -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Computerworld_pl(BasicNewsRecipe): - title = u'Computerworld.pl' - __author__ = 'fenuks' - description = u'Serwis o IT w przemyśle, finansach, handlu, administracji oraz rynku IT i telekomunikacyjnym - wiadomości, opinie, analizy, porady prawne' - category = 'IT' - language = 'pl' - masthead_url = 'http://g1.computerworld.pl/cw/beta_gfx/cw2.gif' - cover_url = 'http://g1.computerworld.pl/cw/beta_gfx/cw2.gif' - no_stylesheets = True - oldest_article = 7 - max_articles_per_feed = 100 - use_embedded_content = False - preprocess_regexps = [(re.compile(u'Zobacz również:', re.IGNORECASE), lambda m: ''), - (re.compile(u'[*]+reklama[*]+', re.IGNORECASE), lambda m: ''), ] - keep_only_tags = [dict(name='article')] - remove_tags = [dict(attrs={'class': ['share_tools nocontent', 'rec']}), - dict(name='ul',attrs={'class':'tags'}), - dict(name='ol'), - dict(id=['topComment', 'bottom_tools'])] - - feeds = [(u'Wiadomo\u015bci', u'https://www.computerworld.pl/news?rss')] diff --git a/recipes/consortium_news.recipe b/recipes/consortium_news.recipe deleted file mode 100644 index 9c861dd238..0000000000 --- a/recipes/consortium_news.recipe +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env python -## -# Title: Consortium News -## -# License: GNU General Public License v3 - -# http://www.gnu.org/copyleft/gpl.html - -# Feb 2012: Initial release -__license__ = 'GNU General Public License v3 - http://www.gnu.org/copyleft/gpl.html' -''' -consortiumnews.com -''' -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class ConsortiumNews(BasicNewsRecipe): - - title = u'Consortium News' - publisher = 'Copyright © 2012 Consortiumnews. All Rights Reserved.' - language = 'en' - __author__ = 'kiavash' - - oldest_article = 7 - max_articles_per_feed = 100 - - no_stylesheets = True - remove_javascript = True - - # Flattens all the tables to make it compatible with Nook - conversion_options = {'linearize_tables': True} - - remove_attributes = ['border', 'cellspacing', 'align', 'cellpadding', 'colspan', - 'valign', 'vspace', 'hspace', 'alt', 'width', 'height'] - - # Specify extra CSS - overrides ALL other CSS (IE. Added last). - extra_css = 'body { font-family: verdana, helvetica, sans-serif; } \ - .introduction, .first { font-weight: bold; } \ - .cross-head { font-weight: bold; font-size: 125%; } \ - .cap, .caption { display: block; font-size: 80%; font-style: italic; } \ - .cap, .caption, .caption img, .caption span { display: block; margin: 5px auto; } \ - .byl, .byd, .byline img, .byline-name, .byline-title, .author-name, .author-position, \ - .correspondent-portrait img, .byline-lead-in, .name, .bbc-role { display: block; \ - font-size: 80%; font-style: italic; margin: 1px auto; } \ - .story-date, .published { font-size: 80%; } \ - table { width: 100%; } \ - td img { display: block; margin: 5px auto; } \ - ul { padding-top: 10px; } \ - ol { padding-top: 10px; } \ - li { padding-top: 5px; padding-bottom: 5px; } \ - h1 { font-size: 175%; font-weight: bold; } \ - h2 { font-size: 150%; font-weight: bold; } \ - h3 { font-size: 125%; font-weight: bold; } \ - h4, h5, h6 { font-size: 100%; font-weight: bold; }' - - # Remove the line breaks and float left/right and picture width/height. - preprocess_regexps = [(re.compile(r'', re.IGNORECASE), lambda m: ''), - (re.compile(r'', - re.IGNORECASE), lambda m: ''), - (re.compile(r'float:.*?'), lambda m: ''), - (re.compile(r'width:.*?px'), lambda m: ''), - (re.compile(r'height:.*?px'), lambda m: ''), - (re.compile(r''), lambda h1: ''), - (re.compile(r''), lambda h2: ''), - ] - - # Main article is inside this tag - keep_only_tags = [ - dict(name='div', attrs={'id': lambda x: x and 'post-' in x})] - - remove_tags = [ - # remove 'Share this Article' - dict(name='div', attrs={'class': 'sociable'}), - dict(name='p', attrs={'class': 'tags'}), # remove 'Tags: ... ' - ] - - feeds = [(u'Consortium News', u'http://feeds.feedburner.com/Consortiumnewscom')] diff --git a/recipes/contemporary_argentine_writers.recipe b/recipes/contemporary_argentine_writers.recipe deleted file mode 100644 index 93b74b8092..0000000000 --- a/recipes/contemporary_argentine_writers.recipe +++ /dev/null @@ -1,33 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2013, Darko Miletic ' -''' -contemporaryargentinewriters.wordpress.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class contemporaryargentinewriters(BasicNewsRecipe): - title = 'Contemporary Argentine Writers' - __author__ = 'Darko Miletic' - description = 'Short stories by Argentine writers (and others) translated into English' - publisher = 'Dario Bard' - category = 'fiction, literature, Argentina, english' - oldest_article = 25 - max_articles_per_feed = 200 - no_stylesheets = True - encoding = 'utf8' - use_embedded_content = True - language = 'en_AR' - remove_empty_feeds = True - publication_type = 'blog' - extra_css = """ - body{font-family: Arial,Helvetica,sans-serif } - img{margin-bottom: 0.4em; display:block} - """ - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - feeds = [(u'Posts', u'http://contemporaryargentinewriters.wordpress.com/feed/')] diff --git a/recipes/corriere_della_sera_en.recipe b/recipes/corriere_della_sera_en.recipe deleted file mode 100644 index 3606d0eb7e..0000000000 --- a/recipes/corriere_della_sera_en.recipe +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__author__ = 'Lorenzo Vigentini, based on Darko Miletic' -__copyright__ = '2009, Darko Miletic , Lorenzo Vigentini ' -__version__ = 'v1.02' -__date__ = '14, March 2010' -__description__ = 'Italian daily newspaper (english version)' -# NOTE: the feeds url are broken on the main site as the permalink structure has been changed erroneously ie: -# actual link in feed http://www.corriere.it/english/10_marzo_11/legitimate_impediment_approved_de9ba480-2cfd-11df-a00c-00144f02aabe.shtml -# this needs to be change to -# real feed URL -# http://www.corriere.it/International/english/articoli/2010/03/11/legitimate_impediment_approved.shtml -''' -http://www.corriere.it/ -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class ilCorriereEn(BasicNewsRecipe): - author = 'Lorenzo Vigentini, based on Darko Miletic' - description = 'Italian daily newspaper (english version)' - - cover_url = 'http://images.corriereobjects.it/images/static/common/logo_home.gif?v=200709121520' - title = u'Il Corriere della sera (english) ' - publisher = 'RCS Digital' - category = 'News, politics, culture, economy, general interest' - - language = 'en' - timefmt = '[%a, %d %b, %Y]' - - oldest_article = 5 - max_articles_per_feed = 100 - use_embedded_content = False - recursion = 10 - - remove_javascript = True - no_stylesheets = True - - recipe_specific_options = { - 'days': { - 'short': 'Oldest article to download from this news source. In days ', - 'long': 'For example, 0.5, gives you articles from the past 12 hours', - 'default': str(oldest_article) - } - } - - def __init__(self, *args, **kwargs): - BasicNewsRecipe.__init__(self, *args, **kwargs) - d = self.recipe_specific_options.get('days') - if d and isinstance(d, str): - self.oldest_article = float(d) - - def get_article_url(self, article): - articleUrl = article.get('link') - segments = articleUrl.split('/') - basename = '/'.join(segments[:3]) + '/' + \ - 'International/english/articoli/' - - # the date has to be redone with the url structure - mlist1 = ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', - 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre'] - mlist2 = ['01', '02', '03', '04', '05', - '06', '07', '08', '09', '10', '11', '12'] - myDate = segments[4].split('_') - x = 0 - for x in range(11): - if myDate[1] == mlist1[x]: - noMonth = mlist2[x] - break - - newDateUrl = '20' + myDate[0] + '/' + noMonth + '/' + myDate[2] + '/' - - # clean the article title - articleURLseg = segments[5].split('-') - myArticle = (articleURLseg[0])[:-9] + '.shtml' - - myURL = basename + newDateUrl + myArticle - # print myURL - return myURL - - keep_only_tags = [ - dict(name='div', attrs={'class': ['news-dettaglio article', 'article']})] - - remove_tags = [ - dict(name=['base', 'object', 'link', 'embed']), - dict(name='div', attrs={'class': 'news-goback'}), - dict(name='ul', attrs={'class': 'toolbar'}) - ] - - remove_tags_after = dict(name='p', attrs={'class': 'footnotes'}) - - feeds = [ - (u'News', u'http://www.corriere.it/rss/english.xml') - ] diff --git a/recipes/corriere_dello_sport.recipe b/recipes/corriere_dello_sport.recipe deleted file mode 100644 index df743f4b00..0000000000 --- a/recipes/corriere_dello_sport.recipe +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__author__ = 'GabrieleMarini, based on Darko Miletic' -__copyright__ = '2009, Darko Miletic , Gabriele Marini' -__version__ = ' ' -__date__ = '14-06-2010' -__description__ = 'Italian daily newspaper' - -''' -http://www.corrieredellosport.it/ -''' -from calibre.web.feeds.news import BasicNewsRecipe - - -class ilCorrieredelloSport(BasicNewsRecipe): - __author__ = 'Gabriele Marini' - description = 'Italian daily newspaper' - - cover_url = 'http://edicola.corrieredellosport.it/newsmem/corsport/prima/nazionale_prima.jpg' - - title = u'Il Corriere dello Sport' - publisher = 'CORRIERE DELLO SPORT s.r.l. ' - category = 'Sport' - - language = 'it' - timefmt = '[%a, %d %b, %Y]' - - oldest_article = 10 - max_articles_per_feed = 100 - use_embedded_content = False - recursion = 10 - - remove_javascript = True - no_stylesheets = True - - html2lrf_options = [ - '--comment', description, '--category', category, '--publisher', publisher, '--ignore-tables' - ] - - html2epub_options = 'publisher="' + publisher + '"\ncomments="' + \ - description + '"\ntags="' + category + '"\nlinearize_tables=True' - - keep_only_tags = [ - dict(name='h1', attrs={'class': ['tit_Article']}), - dict(name='h1', attrs={'class': ['tit_Article_mondiali']}), - dict(name='div', attrs={'class': ['box_Img']}), - dict(name='p', attrs={'class': ['summary', 'text']})] - - feeds = [ - (u'Primo Piano', u'http://www.corrieredellosport.it/rss/primo_piano.xml'), - (u'Calcio', u'http://www.corrieredellosport.it/rss/Calcio-3.xml'), - (u'Formula 1', u'http://www.corrieredellosport.it/rss/Formula-1-7.xml'), - (u'Moto', u'http://www.corrieredellosport.it/rss/Moto-8.xml'), - (u'Piu visti', u'http://www.corrieredellosport.it/rss/piu_visti.xml') - ] diff --git a/recipes/cosmopolitan.recipe b/recipes/cosmopolitan.recipe deleted file mode 100644 index 23cd72b896..0000000000 --- a/recipes/cosmopolitan.recipe +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__author__ = '2010, Gustavo Azambuja ' -''' -Muy Interesante -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class General(BasicNewsRecipe): - title = 'Cosmopolitan' - __author__ = 'Gustavo Azambuja' - description = 'Revista Cosmopolitan, Edicion Espanola' - language = 'es' - timefmt = '[%a, %d %b, %Y]' - use_embedded_content = False - recursion = 1 - encoding = 'utf8' - remove_javascript = True - no_stylesheets = True - conversion_options = {'linearize_tables': True} - - oldest_article = 180 - max_articles_per_feed = 100 - keep_only_tags = [ - dict(id=['contenido']), - dict(name='td', attrs={'class': ['contentheading', 'txt_articulo']}) - ] - remove_tags = [ - dict(name='div', attrs={'class': ['breadcrumb', 'bloque1', 'article', 'bajo_title', - 'tags_articles', 'otrosenlaces_title', 'otrosenlaces_parent', 'compartir']}), - dict(name='div', attrs={'id': 'comment'}), - dict(name='table', attrs={'class': 'pagenav'}), - dict(name=['object', 'link']) - ] - remove_attributes = ['width', 'height', 'style', 'font', 'color'] - - extra_css = ''' - h1{font-family:Geneva, Arial, Helvetica, sans-serif;color:#154B7A;} - h3{font-size: 14px;color:#999999; font-family:Geneva, Arial, Helvetica, sans-serif;font-weight: bold;} - h2{color:#666666; font-family:Geneva, Arial, Helvetica, sans-serif;font-size:small;} - img {float:left; clear:both; margin:10px} - p {font-family:Arial,Helvetica,sans-serif;} - ''' - feeds = [ - (u'Articulos', u'http://feeds.feedburner.com/cosmohispano/FSSt') - ] - - def preprocess_html(self, soup): - attribs = ['style', 'font', 'valign', 'colspan', 'width', 'height', 'rowspan', 'summary', 'align', 'cellspacing', 'cellpadding', 'frames', 'rules', 'border' ] # noqa - for item in soup.body.findAll(name=['table', 'td', 'tr', 'th', 'caption', 'thead', 'tfoot', 'tbody', 'colgroup', 'col']): - item.name = 'div' - for attrib in attribs: - item[attrib] = '' - del item[attrib] - return soup - - def get_cover_url(self): - index = 'http://www.cosmohispano.com/revista' - soup = self.index_to_soup(index) - link_item = soup.find('img', attrs={'class': 'img_portada'}) - if link_item: - cover_url = "http://www.cosmohispano.com" + link_item['src'] - return cover_url diff --git a/recipes/cosmopolitan_de.recipe b/recipes/cosmopolitan_de.recipe deleted file mode 100644 index efc7e0dd42..0000000000 --- a/recipes/cosmopolitan_de.recipe +++ /dev/null @@ -1,36 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1305567197(BasicNewsRecipe): - title = u'Cosmopolitan.de' - __author__ = 'schuster' - oldest_article = 7 - language = 'de' - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - remove_javascript = True - cover_url = 'http://www.cosmopolitan.com/cm/shared/site_images/print_this/cosmopolitan_logo.gif' - remove_tags_before = dict(name='h1', attrs={'class': 'artikel'}) - remove_tags_after = dict(name='div', attrs={'class': 'morePages'}) - extra_css = ''' - h2{font-family:Arial,Helvetica,sans-serif; font-size: x-small;} - h1{ font-family:Arial,Helvetica,sans-serif; font-size:x-large; font-weight:bold;} - ''' - remove_tags = [dict(id='strong'), - dict(title='strong'), - dict(name='span'), - dict(name='li', attrs={'class': 'large'}), - dict(name='ul', attrs={ - 'class': 'articleImagesPortrait clearfix'}), - dict(name='p', attrs={'class': 'external'}), - dict(name='a', attrs={'target': '_blank'}), ] - feeds = [(u'Komplett', u'http://www.cosmopolitan.de/rss/allgemein.xml'), - (u'Mode', u'http://www.cosmopolitan.de/rss/mode.xml'), - (u'Beauty', u'http://www.cosmopolitan.de/rss/beauty.xml'), - (u'Liebe&Sex', u'http://www.cosmopolitan.de/rss/liebe.xml'), - (u'Psychologie', u'http://www.cosmopolitan.de/rss/psychologie.xml'), - (u'Job&Karriere', u'http://www.cosmopolitan.de/rss/job.xml'), - (u'Lifestyle', u'http://www.cosmopolitan.de/rss/lifestyle.xml'), - (u'Shopping', u'http://www.cosmopolitan.de/rss/shopping.xml'), - (u'Bildergalerien', u'http://www.cosmopolitan.de/rss/bildgalerien.xml')] diff --git a/recipes/cosmopolitan_uk.recipe b/recipes/cosmopolitan_uk.recipe deleted file mode 100644 index 17f184c883..0000000000 --- a/recipes/cosmopolitan_uk.recipe +++ /dev/null @@ -1,41 +0,0 @@ -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1390635673(BasicNewsRecipe): - title = u'Cosmopolitan UK' - description = 'Womens Fashion, beauty and Gossip for women from COSMOPOLITAN -UK' - language = 'en_GB' - - __author__ = 'Dave Asbury' - # 2/2/14 - oldest_article = 28 - max_articles_per_feed = 10 - compress_news_images = True - compress_news_images_max_size = 20 - auto_cleanup_keep = '//div[@class="articleHeading"]' - auto_cleanup = True - ignore_duplicate_articles = {'title', 'url'} - no_stylesheets = True - masthead_url = 'http://www.cosmopolitan.co.uk//cm/cosmopolitanuk/site_images/site_logo.gif' - cover_url = 'http://www.natmagnewsletters.co.uk/CIRCULES/CosmoXXLCover.jpg' - # kovids code - - def preprocess_raw_html(self, raw_html, url): - for pat, f in [ - (re.compile(r':: [\w].+', - re.DOTALL), lambda m: ''), - - ]: - raw_html = pat.sub(f, raw_html) - return raw_html - - feeds = [ - (u'Love & Sex', u'http://www.cosmopolitan.co.uk/love-sex/rss/'), - (u'Men', u'http://cosmopolitan.co.uk/men/rss/'), - (u'Fashion', u'http://cosmopolitan.co.uk/fashion/rss/'), - (u'Hair & Beauty', u'http://cosmopolitan.co.uk/beauty-hair/rss/'), - (u'LifeStyle', u'http://cosmopolitan.co.uk/lifestyle/rss/'), - (u'Cosmo On Campus', u'http://cosmopolitan.co.uk/campus/rss/'), - (u'Celebrity Gossip', u'http://cosmopolitan.co.uk/celebrity-gossip/rss/')] diff --git a/recipes/cotidianul.recipe b/recipes/cotidianul.recipe deleted file mode 100644 index b300f02903..0000000000 --- a/recipes/cotidianul.recipe +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = u'2011, Silviu Cotoar\u0103' -''' -cotidianul.ro -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Cotidianul(BasicNewsRecipe): - title = u'Cotidianul' - __author__ = u'Silviu Cotoar\u0103' - description = u'' - publisher = u'Cotidianul' - oldest_article = 25 - language = 'ro' - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - category = 'Ziare,Stiri' - encoding = 'utf-8' - cover_url = 'http://www.cotidianul.ro/images/cotidianul.png' - - conversion_options = { - 'comments': description, 'tags': category, 'language': language, 'publisher': publisher - } - - extra_css = ''' - h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;} - h2{font-family:Arial,Helvetica,sans-serif; font-weight:normal;font-size:small;} - .byline {font-family:Arial,Helvetica,sans-serif; font-size:xx-small;} - .date {font-family:Arial,Helvetica,sans-serif; font-size:xx-small;} - p{font-family:Arial,Helvetica,sans-serif;font-size:small;} - .copyright {font-family:Arial,Helvetica,sans-serif;font-size:xx-small;text-align:center} - .story{font-family:Arial,Helvetica,sans-serif;font-size:small;} - .entry-asset asset hentry{font-family:Arial,Helvetica,sans-serif;font-size:small;} - .pagebody{font-family:Arial,Helvetica,sans-serif;font-size:small;} - .maincontentcontainer{font-family:Arial,Helvetica,sans-serif;font-size:small;} - .story-body{font-family:Arial,Helvetica,sans-serif;font-size:small;} - body{font-family:Helvetica,Arial,sans-serif;font-size:small;} - ''' - - keep_only_tags = [ - dict(name='div', attrs={'class': 'titlu'}), dict(name='div', attrs={ - 'class': 'gallery clearfix'}), dict(name='div', attrs={'align': 'justify'}) - ] - - remove_tags = [ - dict(name='div', attrs={'class': ['space']}), dict( - name='div', attrs={'id': ['title_desc']}) - ] - - remove_tags_after = [ - dict(name='div', attrs={'class': ['space']}), dict( - name='span', attrs={'class': ['date']}) - ] - - feeds = [ - (u'Feeds', u'http://www.cotidianul.ro/rssfeed/ToateStirile.xml') - ] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/counterpunch.recipe b/recipes/counterpunch.recipe deleted file mode 100644 index d32d6a912b..0000000000 --- a/recipes/counterpunch.recipe +++ /dev/null @@ -1,11 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class Counterpunch(BasicNewsRecipe): - title = u'Counterpunch' - oldest_article = 7 - max_articles_per_feed = 100 - auto_cleanup = True - language = 'en' - - feeds = [(u'Counterpunch', u'http://www.counterpunch.org/category/article/feed/')] diff --git a/recipes/countryfile.recipe b/recipes/countryfile.recipe deleted file mode 100644 index 8ce935d737..0000000000 --- a/recipes/countryfile.recipe +++ /dev/null @@ -1,44 +0,0 @@ -import re - -from calibre import browser -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1325006965(BasicNewsRecipe): - title = u'Countryfile.com' - __author__ = 'Dave Asbury' - description = 'The official website of Countryfile Magazine' - # last updated 24.10.14 - language = 'en_GB' - oldest_article = 30 - max_articles_per_feed = 25 - remove_empty_feeds = True - no_stylesheets = True - auto_cleanup = True - compress_news_images = True - ignore_duplicate_articles = {'title', 'url'} - - def get_cover_url(self): - soup = self.index_to_soup('http://www.countryfile.com/magazine') - cov = soup.find(attrs={'class': re.compile( - 'imagecache imagecache-250px')}) # 'width' : '160', - cov = str(cov) - cov = cov[10:] - cov = cov[:-135] - # print '++++ ',cov,' ++++' - br = browser() - - br.set_handle_redirect(False) - try: - br.open_novisit(cov) - cover_url = cov - except: - cover_url = 'http://www.countryfile.com/sites/default/files/imagecache/160px_wide/cover/2_1.jpg' - return cover_url - - preprocess_regexps = [ - (re.compile(r' \| Countryfile.com', re.IGNORECASE | re.DOTALL), lambda match: '')] - feeds = [ - (u'Country News', u'http://www.feed43.com/7204505705648666.xml'), - (u'Articles', u'http://www.feed43.com/8542080013204443.xml'), - ] diff --git a/recipes/courier_mail.recipe b/recipes/courier_mail.recipe deleted file mode 100644 index 0823fc7289..0000000000 --- a/recipes/courier_mail.recipe +++ /dev/null @@ -1,33 +0,0 @@ -import datetime - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Politics(BasicNewsRecipe): - title = u'The Courier-Mail' - description = 'Breaking news headlines for Brisbane and Queensland, Australia. The Courier-Mail is owned by News Corp Australia.' - language = 'en_AU' - __author__ = 'Krittika Goyal, James Cridland' - oldest_article = 3 # days - max_articles_per_feed = 20 - use_embedded_content = False - - d = datetime.datetime.today() - cover_url='http://mfeeds.news.com.au/smedia/NCCOURIER/NCCM_1_' + d.strftime('%Y_%m_%d') + '_thumb_big.jpg' - masthead_url='https://couriermail.digitaleditions.com.au/images/couriermail-logo.jpg' - - no_stylesheets = True - auto_cleanup = True - handle_gzip = True - - feeds = [ - ('Top Stories', 'http://www.couriermail.com.au/rss'), - ('Breaking', 'https://www.couriermail.com.au/news/breaking-news/rss'), - ('Queensland', 'https://www.couriermail.com.au/news/queensland/rss'), - ('Technology', 'https://www.couriermail.com.au/technology/rss'), - ('Entertainment', 'https://www.couriermail.com.au/entertainment/rss'), - ('Finance','https://www.couriermail.com.au/business/rss'), - ('Sport', 'https://www.couriermail.com.au/sport/rss'), - ] - -# This isn't perfect, but works rather better than it once did. To do - remove links to subscription content. diff --git a/recipes/courrier.recipe b/recipes/courrier.recipe deleted file mode 100644 index 6e562ce8b9..0000000000 --- a/recipes/courrier.recipe +++ /dev/null @@ -1,28 +0,0 @@ -from calibre.ebooks.BeautifulSoup import BeautifulSoup -from calibre.web.feeds.news import BasicNewsRecipe - - -class CourierPress(BasicNewsRecipe): - title = u'Courier Press' - language = 'en' - __author__ = 'Krittika Goyal' - oldest_article = 1 # days - max_articles_per_feed = 25 - - remove_stylesheets = True - remove_tags = [ - dict(name='iframe'), - ] - - feeds = [ - ('Courier Press', - 'http://www.courierpress.com/rss/headlines/news/'), - ] - - def preprocess_html(self, soup): - story = soup.find(name='div', attrs={'id': 'article_body'}) - soup = BeautifulSoup( - 't') - body = soup.find(name='body') - body.insert(0, story) - return soup diff --git a/recipes/craigslist.recipe b/recipes/craigslist.recipe deleted file mode 100644 index 8630a0b8ad..0000000000 --- a/recipes/craigslist.recipe +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai -from __future__ import with_statement - -__license__ = 'GPL v3' -__copyright__ = '2009, Kovid Goyal ' -__docformat__ = 'restructuredtext en' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class CraigsList(BasicNewsRecipe): - title = u'craigslist - Best Of' - oldest_article = 365 - max_articles_per_feed = 100 - language = 'en' - - __author__ = 'kiodane' - - feeds = [(u'Best of craigslist', - u'http://www.craigslist.org/about/best/all/index.rss'), ] diff --git a/recipes/credit_slips.recipe b/recipes/credit_slips.recipe deleted file mode 100644 index be5b73b942..0000000000 --- a/recipes/credit_slips.recipe +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL 3' -__copyright__ = 'zotzo' -__docformat__ = 'restructuredtext en' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class CreditSlips(BasicNewsRecipe): - language = 'en' - __author__ = 'zotzot' - version = 2 - title = u'Credit Slips.org' - publisher = u'Bankr-L' - category = u'Economic blog' - description = u'A discussion on credit and bankruptcy' - cover_url = 'http://bit.ly/eAKNCB' - oldest_article = 15 - max_articles_per_feed = 100 - use_embedded_content = True - no_stylesheets = True - remove_javascript = True - - conversion_options = { - 'comments': description, - 'tags': category, - 'language': 'en', - 'publisher': publisher, - } - - feeds = [ - (u'Credit Slips', u'http://www.creditslips.org/creditslips/atom.xml') - ] - - extra_css = ''' - .author {font-family:Helvetica,sans-serif; font-weight:normal;font-size:small;} - h1 {font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;} - p {font-family:Helvetica,Arial,sans-serif;font-size:small;} - body {font-family:Helvetica,Arial,sans-serif;font-size:small;} - ''' - - def populate_article_metadata(self, article, soup, first): - h2 = soup.find('h2') - h2.replaceWith(h2.prettify() + '

Posted by ' + - article.author + '

') diff --git a/recipes/cronica.recipe b/recipes/cronica.recipe deleted file mode 100644 index 7a7ba02b99..0000000000 --- a/recipes/cronica.recipe +++ /dev/null @@ -1,79 +0,0 @@ -# -*- mode: python -*- -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = '2018, Darko Miletic ' -''' -www.cronica.com.ar -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Veintitres(BasicNewsRecipe): - title = 'Cronica' - __author__ = 'Darko Miletic' - description = 'Últimas noticias' - publisher = 'Grupo Crónica' - category = 'politica, noticias generales, Argentina' - oldest_article = 15 - max_articles_per_feed = 100 - no_stylesheets = False - use_embedded_content = False - encoding = 'utf-8' - masthead_url = 'https://www.cronica.com.ar/export/sites/cronica/arte/logos/logoCronica.svg_799932565.svg' - language = 'es_AR' - remove_javascript = True - publication_type = 'magazine' - remove_empty_feeds = True - auto_cleanup = True - auto_cleanup_keep = '//h1' - resolve_internal_links = True - INDEX = "https://www.cronica.com.ar" - extra_css = """ - img{margin-bottom: 0.8em} - """ - - conversion_options = { - 'comment': description, - 'tags': category, - 'publisher': publisher, - 'language': language - } - - feeds = [ - (u'Policiales', u'https://www.cronica.com.ar/seccion/policiales/'), - (u'Politica', u'https://www.cronica.com.ar/seccion/politica/'), - (u'General', u'https://www.cronica.com.ar/seccion/info-general/'), - (u'Mundo', u'https://www.cronica.com.ar/seccion/mundo/'), - (u'Opinion', u'https://www.cronica.com.ar/seccion/opinion/'), - (u'Deportes', u'https://www.cronica.com.ar/seccion/deportes/'), - (u'Cosa de locos', u'https://www.cronica.com.ar/seccion/cosa-de-locos/'), - (u'Espectaculos', u'https://www.diarioshow.com/seccion/espectaculos/'), - ] - - def parse_index(self): - totalfeeds = [] - lfeeds = self.get_feeds() - for feedobj in lfeeds: - feedtitle, feedurl = feedobj - self.report_progress( - 0, - _('Fetching feed') + ' %s...' % - (feedtitle if feedtitle else feedurl) - ) - articles = [] - soup = self.index_to_soup(feedurl) - for item in soup.findAll('a', attrs={'class': 'cover-link'}): - url = self.INDEX + item['href'] - if feedtitle == 'Espectaculos': - url = 'https://www.diarioshow.com' + item['href'] - title = item['title'] - articles.append({ - 'title': title, - 'date': '', - 'url': url, - 'description': '' - }) - totalfeeds.append((feedtitle, articles)) - return totalfeeds diff --git a/recipes/curierulnational.recipe b/recipes/curierulnational.recipe deleted file mode 100644 index 59c845866e..0000000000 --- a/recipes/curierulnational.recipe +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = u'2011, Silviu Cotoar\u0103' -''' -curierulnational.ro -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class CurierulNal(BasicNewsRecipe): - title = u'Curierul Na\u0163ional' - __author__ = u'Silviu Cotoar\u0103' - description = '' - publisher = 'Curierul Na\u0163ional' - oldest_article = 5 - language = 'ro' - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - category = 'Ziare,Stiri' - encoding = 'utf-8' - cover_url = 'http://www.curierulnational.ro/logo.gif' - - conversion_options = { - 'comments': description, 'tags': category, 'language': language, 'publisher': publisher - } - - keep_only_tags = [ - dict(name='div', attrs={'id': 'col1'}), dict( - name='img', attrs={'id': 'placeholder'}) - ] - - remove_tags = [ - dict(name='p', attrs={'id': ['alteArticole']}), dict(name='div', attrs={'id': ['textSize']}), dict( - name='ul', attrs={'class': ['unit-rating']}), dict(name='div', attrs={'id': ['comments']}) - ] - - remove_tags_after = [ - dict(name='ul', attrs={'class': 'unit-rating'}) - ] - - feeds = [ - (u'Feeds', u'http://www.curierulnational.ro/feed.xml') - ] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/cyberpresse.recipe b/recipes/cyberpresse.recipe deleted file mode 100644 index 7c0882055f..0000000000 --- a/recipes/cyberpresse.recipe +++ /dev/null @@ -1,56 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class Cyberpresse(BasicNewsRecipe): - - title = u'Cyberpresse' - __author__ = 'balok and Sujata Raman' - description = 'Canadian news in French' - language = 'fr' - - oldest_article = 7 - max_articles_per_feed = 100 - no_stylesheets = True - remove_javascript = True - html2lrf_options = ['--left-margin=0', '--right-margin=0', - '--top-margin=0', '--bottom-margin=0'] - encoding = 'utf-8' - - keep_only_tags = [dict(name='div', attrs={'class': 'article-page'}), - dict(name='div', attrs={'id': 'articlePage'}), - ] - - extra_css = ''' - .photodata{font-family:Arial,Helvetica,Verdana,sans-serif;color: #999999; font-size: 90%; } - h1{font-family:Georgia,Times,serif ; font-size: large; } - .amorce{font-family:Arial,Helvetica,Verdana,sans-serif; font-weight:bold;} - .article-page{font-family:Arial,Helvetica,Verdana,sans-serif; font-size: x-small;} - #articlePage{font-family:Arial,Helvetica,Verdana,sans-serif; font-size: x-small;} - .auteur{font-family:Georgia,Times,sans-serif; font-size: 90%; color:#006699 ;} - .bodyText{font-family:Arial,Helvetica,Verdana,sans-serif; font-size: x-small;} - .byLine{font-family:Arial,Helvetica,Verdana,sans-serif; font-size: 90%;} - .entry{font-family:Arial,Helvetica,Verdana,sans-serif; font-size: x-small;} - .minithumb-auteurs{font-family:Arial,Helvetica,Verdana,sans-serif; font-size: 90%; } - a{color:#003399; font-weight:bold; } - ''' - - remove_tags = [ - dict(name='div', attrs={ - 'class': ['centerbar', 'colspan', 'share-module']}), - dict(name='p', attrs={'class': ['zoom']}), - dict(name='ul', attrs={'class': ['stories']}), - dict(name='h4', attrs={'class': ['general-cat']}), - ] - - feeds = [(u'Manchettes', u'http://www.cyberpresse.ca/rss/225.xml'), - (u'Capitale nationale', u'http://www.cyberpresse.ca/rss/501.xml'), - (u'Opinions', u'http://www.cyberpresse.ca/rss/977.xml'), - (u'Insolite', u'http://www.cyberpresse.ca/rss/279.xml') - ] - - def postprocess_html(self, soup, first): - - for tag in soup.findAll(name=['i', 'strong']): - tag.name = 'div' - - return soup diff --git a/recipes/cynewslive.recipe b/recipes/cynewslive.recipe deleted file mode 100644 index c05a35c8c0..0000000000 --- a/recipes/cynewslive.recipe +++ /dev/null @@ -1,118 +0,0 @@ -from datetime import datetime, timedelta - -from calibre.web.feeds.news import BasicNewsRecipe - - -class CyNewsLiveRecipe(BasicNewsRecipe): - __license__ = 'GPL v3' - __author__ = 'kwetal' - language = 'en_CY' - version = 1 - - title = u'Cyprus News Live' - publisher = u'The Cyprus Weekly' - category = u'News, Newspaper' - description = u'News from Cyprus' - - use_embedded_content = False - remove_empty_feeds = True - oldest_article = 7 - max_articles_per_feed = 100 - - no_stylesheets = True - remove_javascript = True - - pubTime = None - minTime = None - articleCount = 0 - - INDEX = 'http://www.cynewslive.com' - - feeds = [] - feeds.append( - ('News: Cyprus', 'http://www.cynewslive.com/main/92,0,0,0-CYPRUS.aspx')) - feeds.append( - ('News: World', 'http://www.cynewslive.com/main/78,0,0,0-UKWORLD.aspx')) - feeds.append( - ('Sport: Football', 'http://www.cynewslive.com/main/82,0,0,0-FOOTBALL.aspx')) - feeds.append( - ('Sport: Rugby', 'http://www.cynewslive.com/main/83,0,0,0-RUGBY.aspx')) - feeds.append( - ('Sport: Cricket', 'http://www.cynewslive.com/main/85,0,0,0-CRICKET.aspx')) - feeds.append( - ('Sport: Tennis', 'http://www.cynewslive.com/main/84,0,0,0-TENNIS.aspx')) - feeds.append( - ('Sport: Other', 'http://www.cynewslive.com/main/86,0,0,0-OTHER.aspx')) - feeds.append( - ('Business: Local', 'http://www.cynewslive.com/main/100,0,0,0-LOCAL.aspx')) - feeds.append( - ('Business: Foreign', 'http://www.cynewslive.com/main/101,0,0,0-FOREIGN.aspx')) - feeds.append( - ('Environment', 'http://www.cynewslive.com/main/93,0,0,0-ENVIRONMENT.aspx')) - feeds.append( - ('Culture', 'http://www.cynewslive.com/main/208,0,0,0-CULTURE.aspx')) - - keep_only_tags = [] - keep_only_tags.append( - dict(name='div', attrs={'class': 'ArticleCategories'})) - - extra_css = ''' - body{font-family:verdana,arial,helvetica,geneva,sans-serif ;} - ''' - - def parse_index(self): - answer = [] - for feed in self.feeds: - self.articleCount = 0 - articles = [] - soup = self.index_to_soup(feed[1]) - - table = soup.find('table', attrs={'id': 'ctl00_cp_ctl01_listp'}) - if table: - self.pubTime = datetime.now() - self.minTime = self.pubTime - \ - timedelta(days=self.oldest_article) - - self.find_articles(table, articles) - - answer.append((feed[0], articles)) - - return answer - - def postprocess_html(self, soup, first): - for el in soup.findAll(attrs={'style': True}): - del el['style'] - - for el in soup.findAll('font'): - el.name = 'div' - for attr, value in el: - del el[attr] - - return soup - - def find_articles(self, table, articles): - for div in table.findAll('div', attrs={'class': 'ListArticle'}): - el = div.find('div', attrs={'class': 'ListArticle_T'}) - title = self.tag_to_string(el.a) - url = self.INDEX + el.a['href'] - - description = self.tag_to_string( - div.find('div', attrs={'class': 'ListArticle_BODY300'})) - - el = div.find('div', attrs={'class': 'ListArticle_D'}) - if el: - dateParts = self.tag_to_string(el).split(' ') - monthNames = {'January': 1, 'February': 2, 'March': 3, 'April': 4, 'May': 5, 'June': 6, - 'July': 7, 'August': 8, 'September': 9, 'October': 10, 'November': 11, - 'December': 12} - timeParts = dateParts[3].split(':') - self.pubTime = datetime(year=int(dateParts[2]), month=int(monthNames[dateParts[1]]), - day=int(dateParts[0]), hour=int(timeParts[0]), - minute=int(timeParts[1])) - - if self.pubTime >= self.minTime and self.articleCount <= self.max_articles_per_feed: - articles.append( - {'title': title, 'date': self.pubTime, 'url': url, 'description': description}) - self.articleCount += 1 - else: - return diff --git a/recipes/icons/balkanist.png b/recipes/icons/balkanist.png deleted file mode 100644 index 72c6d25b9e5bd1a45838eccf44e6d9a9e7240e65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 557 zcmV+|0@D47P)Nkl;Qv2tfZ@lixzGQuz5RauzyJHLZ+>&~?B}^()?A)7>-5t}v-i%L`JUl} zaANRZodvgT|NT#0Ao(z~;W_6aqjLf7M`F^oSL?^TVfY|-$?C7%>{}oObNIg7$35d} zGWs{M@n7idr9a{}{bTsRXVU*ey7RW(|Np67%D)|5pIJB?{h!$M@0iN2e{q}sGklO* zu6M^U9caS8)EwVmE+@t*&tU$O<^N2(EZM9k3QalpA+j~Conq+h(!tb>2 zY~42?1z+=WcN`1$c$JegHHEA5v4+?4$xk{C6c%nh5jOh|NWqt|koE)djvqop>Qdwi z9-0|nje1bLXYtH6`+cK+K-_Ts@!A57mtukp;*mlk!qxm9% zt&;D*fZgy>?v8T8QjH^8XB|`LOO_YLE(Td4*w&`;)CuBEJ~#j54GtMGXB|=&y2O_y z)pK4knr}6;%{R&TM=VgmuVcsG-gtNQr zFnQkl&p+-z{~+Yuf8hMX!pVCUY`@ev|FBZ{v*{6KrWON{mc+LIoa?^Zzur<^zHynE$G(c7KcZSs zH{M7+r5o^ueT%{TeO3xP()TpW&3c^7B=&fsxq(W^SK$-p7Z@JqrO9rXbyPc}@!omE z2VZI!8GHUohbX6TFkINh_EO4Wy~9-oHHYFzHO3kyE7m>CYOJrgiUbZYXNXwXX6h@% qJLH8bg=d#Wzp$PzO%5?Vt diff --git a/recipes/icons/bay_citizen.png b/recipes/icons/bay_citizen.png deleted file mode 100644 index 997b74038fa8b6d244ac1d36c422c24efecef65f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1042 zcmV+t1nv8YP)?2TIt(aiJ+pxQ_^OvHtT;_0sRRZqBX$F+B&s z8k0DOG$^(ETf_T5ePygS=D-YFjGkFgg;faQ0U}E4s_#8BIseIp8%x!yF-TP?Jd8C4 z!28d=G$5OPd4X1zXlXGl4iX6jZHSn;jO7z=41Dw6;eEpu4H%OuNF!n|TTPGxX*h@V z1}G&=R=L&Hwb9*}I5rwg5y&EN0HAN*CEJIBMZO2ce$31YAq|eBc)i|yaS$ILdDS@- zt;sY2wmfE5CGHoqP429t=|F^Z7>dL<$M<4**Uk`}Fxa&}Y* zzOR_OI3p)Mzi5CYaoG-y8Ny(J+%Fb90+CYief|9x{@OZv>Ppd~-Mixi6h|;In4tg$ zMG_GU0R#X9FoS(-K9o*hseW|+da|}+43J4+G#r|Hhc~zH*z`^*Qcjwco_}^crCksL z1X|O*did?;+;=}*z5er00E$IhuP50A2mm%_mufY)89XUv61V6FKjWth++rdC@Sq+s zhelpKG@CA4Vwb#`0HRkfmhsTGW{N>ci zsmZHI`{*cSKmZ2aFFYs^8LijXYCXG##*V*Rsq93X41$c}D2lck4Jr?eA3YA|jI~(> z*-=Wl;B))-jU0H^C5bVn%K{?!R%=_iGVn{YR{lF>Ieb`uh;ZY1%gys zA(Z<1m#$5I`^8BZ=(KLTS_FC~Xs-xzFbB{`md54?i&0rvCjB z(%4_#`SsgJwi~d7mdc-b;o#j~8;SgHu|@B1oI88z^jFRr1f&Z70~gG>)jRklT>t<8 M07*qoM6N<$f{tb7(EtDd diff --git a/recipes/icons/beppe_grillo.png b/recipes/icons/beppe_grillo.png deleted file mode 100644 index b6c3414584cdaeb0c24415fef59882d316248a14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2766 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 diff --git a/recipes/icons/berlingske_dk.png b/recipes/icons/berlingske_dk.png deleted file mode 100644 index 456346fb4a738daf8bb23e1bf05a3a0c46a32be7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rIkMU~KVpaSW-rH8nuDxH&*zPkcaN zV4xrvOq?G8q#IW_xP-VU2ncepFf}^3D9m$E5CAbNz&wGD4s{SW@Zw9e{AH6fjsGT; z<$ZfsHk~=j>g9e1Z|j|$x>}RHwjBOZ_I1Oag{`9X2lY;zE^aTq-T$GYa;?EWyEI>G zp2yl}&%O}$&(m7^@nz0(^|_;Apa$Iq| z=-{^5nPG*_Zw|fLwG$3c3uW@#VsLu;f^}y&yk@<$3oy|wQIIy@`1q5+vlSN-Ii$57 zZD?v(Hj7_DNco6|x&=p0MDCo3e@bW8?pSbg9wYbN@H;O27Jdy|#AHQgoLJjapdarv zS^T|Jaqq)YqfJ7xQ9Kiy%5q&TCdri_e}BX3qd}j5Yh`a)=?7K!rS0j@)xxY+>$T5R zbU&^4UBOihd8BbHvOg*FM#wVQ3ycA|RfH%uniTmiq zB;pL1!YF>?c&cVPK>E_Yd{1MEBCWL0N*f)-oFUxDiltiPzlv9L1by;FX`&zRb2}Gu zIgj%Lqi7*!wDA&aWI_P>;*}gsUt&fx-*X{5u`ESGG8gNx7Z1>%c4EeBtWYvQO1C9{ z5Hp5zFY6E}uqd0dD?73#a}k)61New$V#Wj1l?t#BFA_6`auL-8HsE4Dq8FnW#@{^8 zNi0NQP2Ql5n2g~N%CZ4MYR&^0K};rcBSiu$@+!^AM8+odG&6zgSd75x{6I|F`GSS> z0p{iP+y~!e1*%z@%{iJg)Bl4q4&?~W=L+^>4g!ZVmY9rVHwvV_*R=dgOvZ8yf!+9& zqjH080p`t^pK=1bvL$sap6l91?xA*SfC^5{r0n1qHlUn4n9T76*5Y}-OX%^3^AaFhHyvKYj!8^oc80%9EskvUDjmTJzC2#=a7?}yMB&TvE z7jsc^CEHNWVT|J~>R6IDiOEpbn%V-j+($E!Nt{Dq3wkm(6JSq<6O)c4@;nQ$Aiwbd z6|Bzp#AFalPaOkQTunWZ79L|R7UClsIE=uqj3#YRq#)eGTr9$?oJo;A8A(ifk_KUF zGKOS+s0Z5-xR}wLLSP||5 z|2N9-1!ZhTcVaSyk21}=0yi?4Si-lQ$Xo=Dq<8K&AIXF(WVhp5uBVNdwDK;S5U6Ae zF6J(t;9;)eG?pPy;8?m7GrF)IB~L^v^Exr3jbAvK0<-9zLX%n9)u>gZYQQ_?zyG zp@|M+Mn5iP&Y3xum$3|YGlVwcOseMx4x(n3ZboSx-;H+}#YEbPB{VaRKHSbK6leEp vR%AXl<}!Y!kyaXMN=EP&$Fmx>gz5Po96i2+n7;(d00000NkvXXu0mjf%+l+0 diff --git a/recipes/icons/birmingham_post.png b/recipes/icons/birmingham_post.png deleted file mode 100644 index e899d9e4b594590647be888417f624b393ee90f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 550 zcmV+>0@?kEP)qqE#}7Gt-{$b& z=JDd_@$d5Y5IKBhfUFTZeH1-^5j%Z#jkI=-w0DoSeU!O=mAV!_fEhu88bN{*JAIO+ z#gnGQlcvR#r^OLEd>BA~Ib4%LVwgi?m_=oonykp4u*{;f&aAuBuDsO1%-_Mx-^9=1 z$I|1=)#Olapiyt2QgESJcBNf;ruO*!`uzX<{r~;`|6_iu8B|@T0002BNkl@ms>c2Qm^#JQLFH))JrR)pui zp`T?uB&;I59?U+?e{x4!MVKaA+e=EMt936$ItYU)EYu0w<~8u>9_wX+P4rvFRsWFm}d=d76hwIf6JH!6zx$wg3PC07*qoM6N<$f(DTKmjD0& diff --git a/recipes/icons/biz_portal.png b/recipes/icons/biz_portal.png deleted file mode 100644 index 170ec43d9933b77def8d1e732ddccbd0bd609f04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1043 zcmV+u1nm2XP)loG2@JctyYut&TU%Vh!ouC%-mkB(R8&=4TU$#@OuxUt?CkA5Jw11K zc&DeR92^{~s;b1q#3Lgk#>U1iEiACGu&Jr3y1KeAFEGBozVh<%EiEtd^7CV3Wc&O3 znwpx{*4E+S;fsrl@bK_UOG}H3j5anlYHDksprF0Iz4rF@SXfwziHUuEex042T3TC0 zMMc-w*wob2-{0WAzP}O@4=^w?&CSg`JUpMDpqQALGcz@_v$OpC`#Cu}H#avRARbXs zQR3p_US43*($e_&_dPv6CnqIrY;9g%UPnhr;NaoU&(B#|S`rcz`uh50WMxW9OHxu& z$H&OGx3^YSSmx&D000K+>gwO$-)wAbzrVl8$jC=WN5#d)jg5{P8W>$&UdPAB+S=L- z3=EQzl9iQ}%gfBArKQBg!^z3YkB^XJoF-2I0004WQchCA<=)ye-%{0n=$tL8!S%aJhUo_SJ{Ha4c5!nBtYr3IlU?Zhnu(@W-)@>;r`*(0G6zI-f9lJem z4E7*)0ox1v_AA&noK(Y~#6&rlJ$wY|(PQ1daQwu{Q;40Xn^Y1BXV1mY!v)m!i`Bkh zTpC5}yLwF^kwCBCxOvOIjg*$}AhyHZQPl61?&l2i+eWqZJxHUD51R%R;M1%KRmksWdFX6Yu4N= zFTN-&5E&8WAt5oz{6-p3O{S-dV@L&K?tz07nH_kT991Ny)E|4k_tWLI^VMuFUUw=x zd-sK8gzdgpoCZ}j*Vr|;yqf6|wXE^=O~;@ayDs!io7nV9?qg*{=FDBT*S7bV#I-u&w+f7k`42LAhfXMmP6c)I$ztaD0e0st8-QceH> diff --git a/recipes/icons/borse_online.png b/recipes/icons/borse_online.png deleted file mode 100644 index 6fa8875650ac3daca9f544ad47ebac5c0520a28d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!T!2rAE06{PV`JmAw6vKsXPz-m zJCg=PGyk7C^Z)<<@NFMEfYOX5L4Lsu4$p3+0XcD=E{-7;w|e_p8JQe;SpF}X{ZBeg zuKdPjpOV?`x#tu9b!>=TCz+bYz2VHYPcNs0Xgc)h2WJJS9$>yCzu_4Q+q)TDx wZz;##9oJsS&M5rhv}0XyLdvu_xBtvC3~L+N9veyXE&(~q)78&qol`;+0DDs#aS65 zKtc8rPhVH|`z#XNmdsZ?-*E$ln3BBRT^Rni_n+AhERIad0>|U%`p1>E+@FzrQM9uX_-7q1MD{QmoD|D?iq} z($mj=Z7__ub9Cu~uh;+okI#yf~EU+oh6R-`cX^%q)-8l z&<{S5Ke)_T_wQNA_0B7*{>ZWiyNwS!86*o|S9xpACv8W=oX{an^LB{Ts5jCiaE diff --git a/recipes/icons/brasil_de_fato.png b/recipes/icons/brasil_de_fato.png deleted file mode 100644 index f19a37594fe99b8369e8a02ac2c053d9ccc54c43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 979 zcmV;^11$WBP)GtgGs7+G&^74xk7@ash`u6soIX;pgCjR~X{{H^|{{E>?RQ&n*jTRl9H$Can)615b zuU%pE>FVp&*OMYB)TpZM+S{5jHt*iw@#Ez7?e4d2ar^f6qC!Xb@$$1|X!-N=`0()Q z)6~I$grY%4&6=Hz6dI*SO{q{-j~pVte1EQ5U%q>O<;lyLFEzr0hnX-n^XKTvk(1%U z!|>qX^XBH8GdS?!;=Fcx-MPE``ueIALPi&t5jH{LrA7ePnIb! z^5y0C@9>czCc=V-^XBL8-rm`q()2i>g%9ALb-5s!h?pvfP=7KW74ChixU~oouKjJ z3%W0a!aR@GwrKVsWn=O5v@iI|LcI5(WzDXA|MfC zR1Q~f=v4*@!aHuCKBW|M!}jZ*SaS@j(g4#t_v{q}!DKX=BGJn)exRyR68JNd$`m0a z_v-b5gNMkm6K2#PfPvP9K(KUMX)F$q$fE`Ug8snof1hB9p0oqKk(mMtJOui;jbjPi zjug~UCG7YB`0*3Z5+wOE z;Fqr=Q^4N{8v1RmYwUj3=9qpkBp90ZmV3J!1%-(MOm|c z!^~`WZayjFYH@1S^CRTP;sT`Q1_lQF{QL|I4E_E64-XIe`ue%Kx%>P3=jZ3RxVXH$yc`@H($dnsy}jSx z-^a(t6ciND(9q`Q=4fbWIXOAy<>l_~?zgwMq*)BYX%ElO&kqRzOiWDoh7yWO2_+>Z z3U0P#lphE)YQ~jSy@g_PS0=;VPRqH?Chdg4D|H$t*x!1 zqN4Zr_vz{BadB~jgM;AU;80Ld@bK`HlarB=k)NNR)6>&}f`VyjX&4w7ARr)SW@dzh zgeod3&d$!Jrlxs$c|1Hk`1tsbkB^Isi;azqz`(#uOH0hm%+}V{Ha0djH8tJc-5MGi z5)u;G+1Yw}dhc4G!vFvP0d!JMQvg8b*k%9#0U=35K~#9!z0!l8^FS1a@$;ThP`mw% zwQbwx{a?sV)|pg4?Z1tmI5hdAJsSJd9{v5^9(DBpS9{bgskQcA*csWmPb~NK7YBoH zY5NNXG8@7z1pUTm<$prDfeMwy09b_xNIO9fo*fs5h837q&8~~_s=Wm$*Ze9v%8bp{23q-PY00tJ9 zNHh(WS60{7!3OojMR+2*$e%B_V-z+?lOu?3b1S>8cWl7BB?-JjfyFz+e eQj&Z}U+f9fk0Z8qOB(I~0000gww2>+3^9L-qCb_V)HiM@LFZO8fi!{QUe&OG{5rPc}9-4-XH2e}6eSIf{ykjg5_w zk&!w&IsyU$KtMnX3k#p0pQNOurKP2&rlzQlq*=;$LOBUo5i zBqSs%Dk?24E%^BOU|?WjVPP&VE;BPT{r&wkG&KJJ0RPMY|Ns641qFI+uPmU-QM2b;Nall;o)d#XdW3EY8o0sLPF-| z<{lm%>FMciZf)&KdvE8UN6n|LU9n>zn`n{zXMaMn*;zzf;fv00H_*L_t(|+Rf5K zV_iWM0N{DHZR0YwZQHJG+qP}nwr%~Gc5>V1ai6mped7bT;e(?s1z@lN&fQBjOjcOn zsd1DUqv+*VYgZexZnIvVrHPS9H?f1k?r6rAbLJDJ38{7ZMU10Cpyd$X$mQCX zuG?LdO)2mi0+NE95bA=#sl{-;D z(3Cc|&kA@U|8~1#*8-B!2;!efM46~)9^L5!Shm%4lJ=8!C$<7q?i3M4H1{x*!v}D^ zsbWS~E6pGlfizzur{_QL7!9^H5@D6gnr88Y z0-PJnW9cyuRAwgA%LxUb!C1H07_0>Y-xz%0H$&jNp$)d{%>V!Z07*qoM6N<$g5khs AJpcdz diff --git a/recipes/icons/buchreport.png b/recipes/icons/buchreport.png deleted file mode 100644 index f14a105f3eb7f9844fe3731e2e765e4238557532..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 974 zcmV;<12O!GP)PttK}at`5J{l@fy9@JFv2K$2r)m{L#RJ17Q&znI;>4O#}1mcoJ zY&-YdP4ApjH|N}Tw_W?4d*_(q+KjD-I{X;h*}3O)e!t)M_q&G@C{sy|`ZodQO)Cum zsa7HnIDs{bR=a3*U=uIUTu}i!tDB^l0%dc zQF_r{fhZbLhRjiN0upo5+Ph&{5R;3`Nq<0|b+2^yVY3}}Aq*XlC??R-8vQmA85^Ik zYk&e;eKRP#giz0O!C)n>sEix{5YkR#{qs1sI1tTYgAEpkx(BrRh30Fa{uk+!Nq*5< z4G!f2DA8E>!${!H{pGI5@fjDHOD5qn_~a>~D1o!X;^2cGC6!X5@yO`c)LKLXga?Pn z0@j)@$=|01nuQrK(Y7zX>MHP6-62U^<`UY{nRq~!M=J_b3* zhBCDddbQpTHD4%TsiQMfw@OM;)}xu9vgnl>&chnaSRtRJk{|Y`ll*Zse-0p@&^V>j zP0`7zgtVYUqG{oWBeENZp1txMJfaFwEm4*yr)j$f%}PdMXy9dj544s`dKqW&R34bG zJLkK2#do23{`hIJY>$=?yhY~Fk$7mIVAy0s6j#`_1v(UQMXxDcZP99%hSJ~Z0+9EP wljCLwdoij;As`ID{XMh8E$x51n-E_DF6Tf07*qoM6N<$f_&Dv3jhEB diff --git a/recipes/icons/buckmasters.png b/recipes/icons/buckmasters.png deleted file mode 100644 index 98b85a85eb2b86bbce1bb46028b8f5bb2a52d90b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 603 zcmV-h0;K(kP)Gas#;hd4xN=^L&X?ayHZbn8%20VbEiFnXk zOQ&8PLv1N(VQy|FT-FdY1rPdQf*e7G_(MSY?W2`I5=o%0T3C;$TBlA(a-`Hbxmkw5HQ8k>7BU) zF7(0NVWz&Zo4SSvHe@Cv%L?=ae$(H31${28_*_(p6@4qNoEV>D;2m%5lYoizJ!5(0 zH1Jwr?f^9X-}fK?fB*Ua`!^Q!=TF1AcMJ<2FfPJ|7CvA|pFqfhqDqiKxIz7;PYjEn zFf74=CY+$yf{P#VS+M9KjV%D8L2bd`zkiEQzNVoC-+uk}-uak@794;6MRdhOT3PVo z%TM23PY9Sk?IOcRD`#8?SQ322umBkD-+%o%@%#(WbjC%G@R<%o#S0l`8=B)p`X-a( zbAWjjn45s9rQs3~eJVNi78ve?Lk5WE-(_%$VE~qexDc=uGxUyUT<`#77AC@PIuNz( zW)P8Kz$|Iu2v{Nl%Pe52Lf9-!1Pnc&EKqSxD+`*oFbGP}%z~L$7>wPaRVMW<0LHCf z4g(W2Z7cwq9$v-32CMO@YymK2fNn=NooW^U%l)RUpm2wW4Am@HaF3yVH-m3BG|gZF p@+|yxqS0`@Q@B|NjGuzTbD?>y2AL#@`=5-|pP= zX3Ng^dk(zWwC&g1cMN~OeLtaV^knj^_lJ%g5t90L=iZ;sU(TA@U5iTi{|}`3$)stg zOe}xDfB$0X$`6N+GW`4f=cJ+elSwn*?$~|S%>LJ#x9|4sd%1Mw5fND+8>r#g?D?ln ztw9c1v*GX0pFj=2PZ^rsEv>y@-*!15?B}!RcS~#D?cRG#TKVO&)esFQH1uArTzfM$ z2WTh5zdwIY8kxUXv=Zq0;|dy2CQN(S*7N=0BcKr%-TlED7M!uR2Qq$t{P^|y4Tc|2 zo}Mx=zf)B8Z2FuFPTqIRYM#xS57hj8;j&{gYCzxLt7$xCVDWC}-X{~LJfFLW#xXr} j=1kIJ+Q-L-_Nf&Bp20Vt!9H$(00000NkvXXu0mjf=lRJZ diff --git a/recipes/icons/buffalonews.png b/recipes/icons/buffalonews.png deleted file mode 100644 index ab40b9e25357a268be4860242a596a25fd40199e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmV;50d@X~P)FAvKhl^j*)QTQ=OW?wSp+9Q9eMQbVccM)q5B)3%pZ+;GMg zDpErUfwbVQQw~^k+aW7f{gE0{3IG5A diff --git a/recipes/icons/businessworldin.png b/recipes/icons/businessworldin.png deleted file mode 100644 index b20e729f6aac1cce798c28b1768d50ced7118693..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmV=xiGs94jxBEe2;^o#Zpw({E$BgROZ-h5qMG1 zQP#FHum3iOSsqkV#Z0M*_~xM(6d)$Wara|h3Wa3ECj}SGCErO`0wcN$@}fZUG&6eZ zpv){_VDrG`0RnAH`7<^TXiRc&_KB_2(#hMD`XMV!Zm_)hrmt&FDLU8eQ{bDH0=XjK n+1qHG23r2F*Xq5$nWy{@YBa*-QK#s$00000NkvXXu0mjfqfTZU diff --git a/recipes/icons/cafcaf_dergisi.png b/recipes/icons/cafcaf_dergisi.png deleted file mode 100644 index 46529cb072e1e7d356c60e6b90f800eb008c47bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2050 zcmV+d2>thoP)`1mJCm6V^W5Ft-QC^Y4G(p9FR3D7ab7BD zm13bt6^NG9LxKz;{hRzDBt+hK_m(`K_x5(V*>moZ?|k>%rN1A7C=jXmT6HDe{06-} zm6CHwQ^@8oS@epAu6~i|Jjm5h7X-pQ%K=r9FK&KD{ABw3+Vb2cbIajghuiD+4P#=_ za=0(I(e&PmP4v!0y5xT7V$0e1V1cl}uY2U2pH?ofvkV3zu~;k=japnoyG$pG+q+BJ zyRk64hC-1jMD9RzS*=n1)dD)_Ch5O?2$&Kc&wl%Lp~2-1Vt`Mq3!(Uem9DVM&@ zqVJT6#gDlcO)mXGu5amfLe1q1eVtcNcfT!hxc(LvOtnfy?@V6ZY{wq6)BU=3EB%ne zX0j}$7pgLfR2nw1z)!s7Qm9#6Zfsd&=%(j>R`L+>|IbxbkpSzZ9S*4K3>He1=_j3} zDU>ut0?efq{AuDPL{NYleUp`CFk@rMK?gni)0mI=;J82gT~^CcC@tUFfw<1eC`y=6 z%nc!AJ{60ig!b-t?i-@wQzu- z==*HKex&mCdiL|XY`kF;W%z16o}z|Xe{^vrSb)9JXfzyQtFPpGO1R;S4}lHwl0>b` zJK_xl)Ag;>H?=L@y1%%^Hmht_+BLfe@a{>dbV(-D-Y7&iQJN(;IR_5{^I-bHMATv_jBP z0MKB|$EzP+QU!=1#`u45^vW4}`f{D9)R}(F*=9Py!U{77MyI>wNS`|pmfp&MahSjE z<2BU~{8-v-??0s^%k(C1YLkA<T<&_~)jv%@ju zqi-`wnpBMP%DZh~B+9jPdq->x=%zzXv>=$~C<)(X&#T#o@VV6Fbff;Tjua_1UzNe^ zc>E(5OfAEqDQ@d_Gp6K|IFSj8+YSL`RPx?M6~oA1LCG5k-86e6M+t6Fk_IJ%up&h_ zePTIK(xC?M1YTiR<-wzf60sJw9y;TIQu6>&t?2|HV!h#K9a?`Jr74@+fD%~5YA|oJ z!{Y-BVV^S+#~$T9XJRpoey*#-n@@6g(a(8^wbpo|heJdk&SFJ&dFV%7!h|B2%h=G$ z9l(ac?gaF3EPR^<7VSGe@bcR2aVn$#AZfTqaKOMb98_rv#k2x!vGsadQREj;6QgL7##5(Rm{B|y~U@s%Gq ziiCu;0+r>J)^w(A+&Xs?>d%uv2-ZH28t=b7(~&;Y)%||qU~nJ!Cdh6*0x{?aRWVrx3*!d@ zR}C1ksBL!z@bDBjKj=zFw%UH#>c! z$`u{Mg;8&Il=u&?^A6v%beilA3F1lCs{=|q8-O`uEeh3;8ekNXhuPfdIz(A6){3n}!iRzx?<039>Y#gyyt goN=G;;@?{O4O27;+SZfniU0rr07*qoM6N<$f)fGws{jB1 diff --git a/recipes/icons/camera_di_commercio_di_bari.png b/recipes/icons/camera_di_commercio_di_bari.png deleted file mode 100644 index 8884148798d0d9593a2f654c1c0c77f34d3fa099..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2127 zcmV-V2(b5wP)GZ~~ zuAavpfBZe~dEYDFf8*!*SAY7GpUPx%K?ucS3#n8(kxYg{;an~k3PqNdm*dOvKwze? zzyG`6{oczK^1MOg$BrG-Xf&&9>+|z5icU;U8%^d&BswuMwY;1VOJp;%vlHVJUY|dm z&aSSm508v~?h9Xd2x}oNl)o2FAR0}^m)9#t*z~+o_hNEviak{>bJmsW_FHVq*A#?tD9D978aN0=7jc+E@+@} zr^}ODT{}8DvRJGYRn--h)nbW!C7n(r66{K6eD8F+9ZvV+($c3t{h5cw^SrCo+GsR3 zHa4-gzA-sD)!NnpZ)_%4s8~!n$UJrWoX6uEAD?*U_(`_pHy17z0tiZj71*-b?Dh3c zBC&*CrBc}oWc=tyKjB>c{ezbZi?v#vLZL$V{0H3YH*Q|Pe#7o?QjQ)~s-Y>hMk-g7 zS5(#2H_i#d)vH&7LCmoRk`0Z`vvYGRD`~)Fk7M6F_K*XySdz(RqtSUxq|s;{P8X#` zV(FkrtW*stlq$2yYBZWw(izZ)r{#D8xJSpv1tADr)6?qliAfZ!)#<0E)$w=|RDrjx ztv#Ov9}0ydL&Kw;o!yyi4$GiL)N_uGtsYVXyp6_JW~Q0 z=Pz6miKOXF7OKX^Cp=!i$LB{^k38~7!PCzi$M%DRqPC7MnLLlJz#(OX)saLVfHngUwD<$T7FD1j2a{R5?Cl~gY(E=4URrR8$Dl4kGR zy?gK8z5o9Ae|)A#UZ#-4;e={V45}Cicu6WcXlv_;#TJo6fyV<}flEatklEhR3Hz;W z?WfP2$Gsp^UQx{kEGFi{kw`MRf=I4kzYdbcrR9)`Iq-8Z7-D&E-vCwsy1l)9gcJ;g zAin@A1VIQ#qBn2eGMOwW1o0r&kT6MY_WO0ezVzXFc`^( zKmYm9CbJbw-??+g?r?$6ph%*St8fEZw6?b1+kZ2YOSJ%`5 zfm*GptgJ?b|NQ5_vf11W^a%n@xLj`DnVQyMg1Y*qXe_q9z0IHC3A+`~}n= zEz$XTtWaK2S@8JdPtM0;H1)?n{R!Y~c00*@?))WS0d$;2s39bh6x`SbMWA4$GCVvA zd7PX5p^YWHj9$SFb%;b_RCIsXF;@W;6#=nMXTT<_t7~Y0zyR4)Y9;%i1pFf#^ur{u z+nu-_XB-_}h3&(`XK6yM(efjPMMA|T<-{-p{9SK^z(@pOZ->i8y zbITQQfK}wo*^vQn^B>&kD3x3hi=~WGEDbS~h68N9w|~I)L#6XYin?TC}#y>YFZ0)^hE;F2Zy5%cD;4$4oW*XI3NK55HOJz zqk)S-U*EvPnUmk(3t#vmaI;3E)glihgfIXK`LY=Op$$aoec*N`9g?A;cp`;(*pFmo z2qsf2@J}k!*+)L|u@`O_`7h5LKe4vH4&gM*g5JJ-vows3H=H zFlQi{4B)nc*w7vWfO7*sQY0jZ?pME9li_h`+lTYH2t?eC@!$_#8tTLM|XbFZfFgP3@ z9(HtgkBp6DH$26#s&?^mbD8(tkh`N>b`XE%BkLSZCGJTx}7&@8_PcL40^ z?Z+0GTn=u#x_dtGp%3LNyoJjzcbV4KHm}#my@6oC7HRg(WVs_DAWlgVH#RnX`O9B< zoy+eVU*GwO$p<$?_t5YNVIY;r%E~Lg`@QeIn7`Mm{(sR{6n^o)Gh+Y%002ovPDHLk FV1m(!9(4c! diff --git a/recipes/icons/capital.png b/recipes/icons/capital.png deleted file mode 100644 index 6922c7a3ff60b4cff91542349de920ec4a585cff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 494 zcmV4&xJlle{DxiR>{y<29Sy~VjP^wc87%kW zq8pxb3xY=w9$BPt?7hbWTeT7N^MHa-oZ}X4wn!u*%W`UWS3#DG!GUx--6G7|pJ}ws zO%M)+UP+RgO(B;%-r3n&T@8go%?4mbo0~1uof`8-N=^ou-;dzz2O`QR?Ib zW@f2mEH7ae?Tcb87J~+u9|BY_2X2fI=2&%N9QTQswOse`D+>#zX#(&|0HfjD9UWcv ziMKp=)x*0*5$J3-3&VB-Jp?R_aWEM4dcDzTv{rj-oi>F0)Ral@1Xb(oPg6Gu0hp=y k{rTx>-RbPQfQH}u0~X{qSA^9a?f?J)07*qoM6N<$f?pusLI3~& diff --git a/recipes/icons/capital_de.png b/recipes/icons/capital_de.png deleted file mode 100644 index 1d7343d2c242b381996f74950d3fc7fba500aa3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1127 zcmV-t1ep7YP)$+w_~^lShUE>Ws=#?6-k49w(zFo^h>=5;Kb9( z%$K@iKv<6gJ?1inH*Ke1=`{d}7gC%!-WUW{;#J%3i}Va&k!hs_;_Rl$1W|k$?a;ao zuyCPSNT;%&a^hkLg@fo8z@mj#0R#83CX2-lEh4JK>j(_0BM;?9zUU}tJ zxclyV;M%LNgGm$17|1Y#DCA1dJI;V|$N;8kCsK)K;37s0g1!)pA3G5qdhj9WbiMJ$ zo1m*XZ@U97 zyY%vX)%f`1PaqnO6U69XzAA$7w5Q!FQQ&ybRar+r^Y94{PS@_;yJ2{61b=-by#L<& zaK+_Ug2!_>$Y{;N`6eV{DK3~C1XaSOOo#!<^L;bt#p!m!abDQ8aWgCP&Rx4;YGeAo z;C=MrM{xahH-P`d0EtpQ=&@s;AUpVAdN|Kh8G$(2kcg+?^UptT0hl>`b_;+H0R*A~ z2px*~(zDnxH3oo92GcI?a1^|LXMl8t03RL_0D~YqUhL}|kURqeLlcwn)R%l{_!|v; z{&^R)0_=2O0X`GiO#WTZ$neS6N`a2Pp|?Re_w4i90cN&c#TaD;y{7kHd+l|u0`385=Cx|$ z(VG`9mD-k}WjY&l0R;8@tFE}32cSXdeI9`J0oofniYwU0tCjkbICFo;Mr2!k>r}bb z4hkr}_s~NR16_Oe?15{pzILD3d+)tZT@Xh)0`PnYmtS@zU<=1dMB2s6^{1CCU4FuU zwqlDQB#nch0W?U))9~yw&$3Fq|NaN?_uqfRefQo6+qd5dzyJO_eD~dVv~M(9v9@2l zJh}Sp;-$;I|9dmSmbpgZA&e-{Yuf47u2~1a{PGJ3F50LlGxR&=IhLIQ=Rf4_*hUC# zlpT~2^1GNH181CmCahky1~zZn0yo{b7%)Q+k0#mdDeV-v#S}P~2NDYACO#AV21Prh z_jo^?c)V}lVI<_2o8tRCuRV=v54t*#2q4;m)j91NH5p#qJpjK%MU@bX*Pcbsz1=>R zQzrP;A#Shb+LKFI+PezCRtMiFcyZQVd;ZtVTx4%igCKhQfI z930Hd%!Y=BqN1WnNl8HQyu3V9Q&S-!q2%P`>gsA|XJYvNJ&X4C@4rmLZYjy>+j#cVq#(y6%`2y3H$f&&&|zUwQAMj!-wzR zzyJOF_l%4TDJdy?dwYF-{W){yq@|_p-Mg2Sl{G3VYSX4oDJdz77cW**Q`@y`*Uz6n zmo8m;^XARt$B!2j6sW7K>*(nC`}?=HwiXr^e)#ZV^5n^xnVB&$F~Y*aM~)mhdh}>) zY%C8CkBN!NxpU_}efsq4*RSU0W^;4%W5oaO&Of z`ESDo5uSQYkr)Qy%ut8m+3qzCAG_Z%R)Pr(?5=UUpnEC zFMsy^y1kZLGMB7={o+;Hfkpoor)Vwt*SPh&^}>vQnswh9X3X$CW59UnUD?Mf=@8rB z^{xj_t(AGQpvZ;`X^PwCxjVg|#XW&*ZAc26^iQ=T43i#( zzfzdlt+9gn!p0zuja-^luN5nw1?ffHx8l3zeAwg^({H^S{23o63On4kJGjlEd2$KE zKO4a}V*iBO-^Fim-Z1x8qbJ`+@8A4qT=rd5kM#VRu(sOLf|Hj|>oQ}9+=B-SK{8f6 zCxe|g=Oi3wYqe+;;rDagRC!W>!TPS=k(qodJacW?PiCmjddt=wBQkx~gn;Tw>lxAa zG@Au4UCn+}C9!Ikv=isEh)&TE=d7Kz>dVB+-*-AnJ_((eG>@P1& x{PeLZ=a{P0``t+|H$Bz<@iW{iD`?*T_*HTrd1idt-UKRcJYD@<);T3K0RUCKzRCaq diff --git a/recipes/icons/carta.png b/recipes/icons/carta.png deleted file mode 100644 index d1b55b368bc0c3f88b36da69af80583f7eb3efb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAx;$MRLn;_q4=@I`D2OmzsQ+Jl zj5+$CT6l2eQqGiRyRIxsVaojVJLY-m-#5JqXa5Fsf37rdDzY;@_&U#XLyui!iAhtj zjAVrN!3r~nlPt-57zKJhvN;s=%No=Rzj=H@=+ZWUEzjo(Sx7hjjSQZ)HC-{_TXn5w s_Iq!^6R$2--#_(!4y%XP$#}_sjH21EEi>jxuz_6X>FVdQ&MBb@0J{20;Q#;t diff --git a/recipes/icons/catholic_daily_readings.png b/recipes/icons/catholic_daily_readings.png deleted file mode 100644 index a602ffe1182b912e073fa8f9a0c5df85a746db46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!dVo)eE0AVrO=4(EVdzL??8#;V zp&X{(9OmvEmfoCSfB*dc`{(c9|G$;RK`I$bg8YIR9G=}s19H4PT^vIyZuOpb6ml>S za0xuw!C(9TbJQ1uuphfCL+7sY`R{CVUi3(i2}9tf#DpaUjBFhoSEAmF?Tl?-Qr)=X k?4PeITq}3COy3`(eq4@uf#KD#nIJnnUHx3vIVCg!0B7?>qW}N^ diff --git a/recipes/icons/cd_action.png b/recipes/icons/cd_action.png deleted file mode 100644 index ac72cb15c3503918a95d16a23787a27c1ba35d2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 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 diff --git a/recipes/icons/cesky_rozhlas_6.png b/recipes/icons/cesky_rozhlas_6.png deleted file mode 100644 index 00c62b6454f936558e71c16d13a725b3e353eb71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1200 zcmV;h1W)^kP)N!TGW! z7>-t1a)%sFP1mgm5Cm9|wduxJ_rK32=~S2 z^YLw0?4^ajJI0NBq9YGt*mOKk2gJIh-lRpHSQA{=*D#o)4}_tMM+d?i5hm4uPPxlNKv*uKW-r+sdvrwxoD3b0W%ZY9 z?D=M&q9Lb)2qb_200&Tza{}{+6GpCJV2>r3jOpF@qWo=G-LIBSr@%W>@Bumm2}Ixo zl&ak0Qd+$BIA)IufLft$TfXV?I&}^~0sujx6A3y1A|QKYI_hRK>~BV%5?uH6*Dttw zb>9Dh^^jy}fgl1o1nxu-LP0pLc3DbV>UyqaTbno>9ud@aZ~NWVynp#__@mVuVj?am zkmHUVZ-i)$oM@=A%r)6{1} zR8u>pZc@9bEsuXRnRy*Jr7${^0v9RB3Pd9PY}ytux; zxmm4ONTI|}N$OHbU0&Qz<76gMk=isp_~Bqrc2TY5+ArzmFyE$SB?%k=p#VW7x~BZNFJVz#`s;buzD|9$-NTN@7mRGvHE#Rd+wW;)9M-BT;pQyxbTKVELbC1-z{Z(DZUx(Ji6m%#?t~hlG<|dGD5E1l9{W7 zJMJ_$HNwfweR+6TsyAAx{l+H;e_Ajb>2z-K1D9M^yP5<`7PzCpJxe4Z`J(B3@#R$W zl#`qZcv>(`7!OQ;&+9u_ks^Zw5(tqAfJAO&Yj~rY`{e$MZ*r}b{GJ}jIFFFQGvM#R zaW|WuJejrc2d_7luALQ0AQVUdii{v!fB>>%4e0wISw7uQ)A*QR*XQjp*y^h(zP4^d zYT!t?f6yR@h5`aPYWNJE@tShZR;#_|i-J<>x?fAxrh*EkBY`@sLyka#j5!1j4ptz> z$*4Z`r5~=UUB+?zd4a&2Cv0ew$w8#{ad3fygUAjJkb@eyaOJGcx}?O+^2G$_vysNS z+1~C-NmWT82o%Tx2oMnv07#I?nQc&7n=Y5;=3f+y<7DQ~Zn?f*R;wxnAIO0CIYP>* zta9}1FW^nsqTL&CUh6xL zzPA47WJazPZ_XCS+mxP~W2&njRlb6mwdcFm$NW$Jb2i^8?LAx+ynvznch{yVs=w2| z-|*S;;v%c$AwB(6`_BpM6qXyb3s_%C(6lbLW0PWHXt*J*T$goi63ALlS3j3^P6w5&A50U}m)|_I;Biug@(YEc zz()4q(13%ck}PkI%F0woCiJhl#kkYyTO8Y|3Xuoujy5|**Ko_S)V3znWi6Uz-)&HD velasane zA0r+gBpx3mA0Q(iAR`_iBOf6nA0i_mA|)XrCLtmwAR;FtBq|;wCLkUoARQtgA0Z(j zAs-G{t#rxyN z`r*g_>(Kq|-T(ja|NsB?%%JkS*y|U!wHvHDM+z%A_P)E^;1PO%*4TT5}g$fUc4HAkI z7>W}aixnDs004Xd0Dk}ge*gofOi-syQm9Zr&yu4-r0FWLdksu_F86Joa6nX#vhz=Bw9U*}L1&<*kkR2o9 z#>eK&&gRa}=+V*W(bDYK*ze!qgarzuNK1+m7jpmrbpQZq004vr42%{VYXAUk004pk z28IX@jw2?92@Zk+2!aC%g8~Q2l9kGqn9G)!&Yhppq@~rXt<|ip)~&ABudj#?6^RfP zi4hi&ASIC^C6y~LoHsk2IX<91LZVJk_3G;P@9+5X^85Gq{QCN%Nlb=H%qsu@0K-W{ zK~#9!MUDfu!vGLPdt;}@w{6?DZR~#ujgvW?=bY%DdT80I7+nZR27fgn0|XtGX9Qta zj)A#-zK>N?TYr-yV5*;Oai;;#N(cxVeG_Jbm7Jarf$|G`qZ*gMdBF!12iR=+9AUuf zdh`MJ3aH#H!I1srTZBn|SNR{D|DdB3))soIcXamZM_jnkj^f!p-Lt2|EYzo?+6u5$ zZsmPLjDYG7hE#0lYfO#+9S&4^eDU@*0>riJwg*vEP8`{PJkcT+ch^nQ2LJ#707*qo IM6N<$f=0;c@&Et; diff --git a/recipes/icons/china_times.png b/recipes/icons/china_times.png deleted file mode 100644 index 22cfdfff1f57e6405b1953db6454995ce67a19a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 641 zcmV-{0)G98P)pdf!yg#XPf5cb7tKXKz!M9^A{)jiA^!XN&PYPeNkhaV z8_-cp>anitv$5{Jy#D(7!y+5RAsWm-Im|*l%|kuSL_WY03&SB9z7Ge_OGVF4NWc~j zz!wk1A{xOM5y2S|#3LNUBpt#U62cl2(Ns^;R#4MgRMcHr)nHrIV_w!~Vc2VC#w#Vq zEG5S+C-1_+@5RIL#KQ2%#>X!x$TKX_QB1`p9>NTy zbK7`y+j(@|e|z45ecpqA--?Fdi-+Khh~bZl;**c!m67C`mgSw9<)5AApq=KRp5~&S z=cAzKq@n1jrNSH(!WFN6F>iX>K`|j@h@9zBZ@%;An{r2_!_V)ev_x|+rZQFL&w)OLCok1{4h$+GK^iLN}x!_cn zGci>vgjsf68aPK|(?l1aFND3D;ob%L9jPn1Z*7pF|6@erDAF0V9dYz`0r>6hTkze^ zy`Y09;|jhTHca=h%+MLWBw|}}GBm2aVrO@K+nUsg9SJYVcWrK@JziXoF~l_o9i0FW ziXpJ9Fm%9tpmB4x4NsXJ=R9Hdz!NX+zm%}&AOZA1}^08a2 bE9%Grr->fe=u-&b00000NkvXXu0mjfIipA1 diff --git a/recipes/icons/chipro.png b/recipes/icons/chipro.png deleted file mode 100644 index 77ef6fdbd6459b65fb9ccd571d9369ea8fab2010..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJe}GSj>ybl8{`~vX($vzz#PWxU zrNK|T9Vq4M>EaktaVzy4Bi8`~4(E$sUjIFB!!-5GTjo|fhpT*lzO3G)y6Vat6NNcU z<)`=;=w*cQxUlhkj%VQBbW}k+V)FVdQ&MBb@0J>W< Au>b%7 diff --git a/recipes/icons/chosun.png b/recipes/icons/chosun.png deleted file mode 100644 index 58a17eea2d47a34e41eaa25f3cc9edbcd8e42366..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347 zcmV-h0i^zkP)LF7=Euk9pP%Zhs_U<=?%LY7U|{gw-SW)Lr8qdzM@7?5 zPR^5)m>L?MC@72p0oZ0_*{Z6J1qI!Dc;0<{-nF&gxw+xIyyTRVkqQdAWMst|7sVSH z#~>b)5D>_Og!AR)_37#M?CkjP@cHNF`RM2R^Yi=f@BR4r{rUO*`uhF*`^qgV{{8*T zH8agQIJthK4FCWDaY;l$RCwBqjDr;eKoCUtpJUs$(SK*LpK@4?r2BLJ1ypR7I=+Ek zb&ZSoH&BClssFZQS8kd4%!oqkI{Jg!T>z0JbS^C)_O>C{GXg!3LK8^b01d>$6v$O> tfEjZ;n_>I1-H`giZYSk*QO+X|0069m638?D%A)`P002ovPDHLkV1isnuuT8} diff --git a/recipes/icons/cinco_dias.png b/recipes/icons/cinco_dias.png deleted file mode 100644 index ebba30cf028f6d9a970c410834b39ce2cbd0207d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 994 zcmV<810DQ{P)9#Ta2_Po=Arnzpq2nPR)?|pdL?|J{vVF)G5|E+?6AmD!mP_&$vqVN+0 zLHrbjzfwy>QcEdX@z(%ajuNFPL4p#*i`p$A$0R8dFetWYF}SOke8&}|7!gsD6p{!G zfQ(SQIA8ss%l5X*%$Y4Vkg=OH+8jrucXLYbv+w%b3>JMSYi4a$?k#6?beOEFT1~{k z3y=r3l;L-V$D*C0ng%V#)6?HZXUE;Mp3mN?FBs2O+|KZK_#DWQxC2)Ncr0L0~OXVH#AhzRp)wq;-937Cyp>aQc8 zuy^vbx+x?<9JXIYB}rHBSGiqIc-AR(6BLI0NI;7`pIvEZZb)mMO0GP~5Zxj$D78?w zKC^rQaI*XXiYr>|pCl>Q)9c04jT$|Q6$J)dZ+Zdg48DIqGV~G8jbl8)a=lx!)WC>5 zRN)8U(F$r$$s5)NE#)aUDa{!F!LbSO63?Wyy6ja=5p7&0H%b{t?wHamK{4J7G$%_8Iez53f z(@RKVB>+XHjLB8rKc=b+5z4~SRs6UjarI*_w5rP)cHn%(&l)TgIXqnjLl>P>Iqew* zGqWUjP<$~zw!-W@Y3-=0)vz2f*E2RE%&k6{SEDtuzOql*?T%-y zhPHO|*r*FGn=Cz>GRvq$#(ya-u?QX^U6ZCPzuj!%dYuCwdhCwcN4l7!m1z69<7JH< zR(p%i`23YoZ?G6l)(#_Er_pCKcggw^Fo9QvZ`mo(J{hz#)R6RkyqN4V0mFmR?U9hV zgE$C+JAB$HB2z-kmtUxVTG!ACeBX+O#$D`1FpwtSOZ8h-gMXPpKoH=sACvG?hPpoI Q>i_@%07*qoM6N<$g3#g5761SM diff --git a/recipes/icons/cinebel_be.png b/recipes/icons/cinebel_be.png deleted file mode 100644 index f4379714a9ff15372d68c746b5ef59e4112fff79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmV;Z0$2TsP)Zrey%frt~G?Q zH-@q=hO#%0w>Oo#HkP|HnY}fezcZY_G@HIWn7vS)z&)A1RG+~+pTR((!aktFN}|MT zqQ!Ex(TLIFtJLJY>hjm}_viWh_4@qx{Qdd;{`_mBDRQP8aHcSHs3>!&Fm|agpu#?* z#6EhfCwi+Wc&jpctTKJADSfU!gt0S&u{VgbC5N*#h_f_`v@MFXGm5k{inTe1v`LP) zFpjo5kGMFHxH^rvQj@w!l)FZjyF!w?Pm{Y)mb^omy*{15Hk`jgoWN9{!B?QdP^83Q zq{V2e$62Y!Sgp!qtIBGs$#SU4eyq!aug!b3(2=>)dcW3xy407w)r!E^fxXq1zt)Vt z)|+|^Q^!V-d`S14m z@cH}m`uz6${Q3U={r>*`_C-#R0002vNkl?a# zUwNsZ6z<0CHs7+{+8*6lE^}vg)8VvbxSwijteS+3&56n6u;+L_N~KQ8*&QYXL8v(c z;NwJS5d=iBZnWZIKfRS6FgA;#h%6g7ciIdFgRxfrgQ8fiKhrZ{g#!TF3@FN>;NIT= O0000 zJFH-Z`_~)QYxT;HZO=E;5)DCKKk&P%O9V-@P0I% zJbv!%3s){Zbox|o=J6M=TzvYy^VU!l&zG)VKJw}-TGwZ}{D;|zQ9A-QT#VA!k_S!> zjezy#krd|q5jV;ReK#|P%cLwz+1IbXAvv$DZ+!90sg)Z)K=|CnOW&S<2Vni?t*@SY zes8@1{QUY(y>Qc0NhSmfJ2fzqp zOsDO$h>@Fq0vc+CLUnZw{V*kdtR))oAx7yDH#TWGDasr|5ibkg?h#a^uzLMYF&195{rrK}`1k}ww<_h* z(p`XnAoLC^tjI7d!$>l=qSS`pfmcb>Dsvx9E~RKs{{n(x(LI+!1UYGtI3V$qTo=Bl z6eZdU-CN&}P?9sPrr`TrH$SE|{JXV58rmopy;3QfPG^rj7K|H(YFmp!J!+HtUsiXn z)yqw#GRz8ShbcQ~T7ke}N*zL=Pixh8NEKL&wZFStSzZRy_){kcqnZGZxPB;f1T(xZ zg(n12x&lj+DiEZ@lS2}wX%gbM+7f#x#YHX6-Kp1uIpFQi_TmyiZhG1oi6f{}WFeN& z)oy#C1?ehdnve-r7sMK{1jP<52LMdo)^@8}agxdDx6URHALiX|b!9E|NvW+nOTzCa z9?T~WJs_o|(jb$TJ!;v7ZfBv{FbO^8xQq}NW6|qpoSE?5CgBi3b$z3_Iy+~(?vrny zi;s={H9x;~XOS?ynKD-SeYv@_6GXaLj RdYb?M002ovPDHLkV1ii{{!Rb@ diff --git a/recipes/icons/cio_magazine.png b/recipes/icons/cio_magazine.png deleted file mode 100644 index 576eaf91e5175cb98ecce6eb7a9318dc3d6d0dfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmV-y1e5!TP)ZXj@enzP|z&0)cP| zp@eWr2?-;kC1aBgS!svOsBLMtc4({pfI5}wT2|Y+RoXI9hsA*m{Ua#K<_|$c5oA`> zO*V(0pw;0%I%S}YopWw(Zql^LP2%(3d-G9Si$4_nQ8--Qd%m9c<9VMW@w)o|bVyqO zTLAw)Kp@Q3D1BiEBV<$t=0n?Pz`#=F2yA<&{oM>ejWSOilO*m_@yjGHlYLwXGPj?( zF)w4u8ZvV!jyHiYlRVgF9dvVVkl;54!0nPGb~hU*pEr)3NR3YzN2j#5`$fDd+0m2i zI$%uCq)*MKUwp}UW>y~><-Q>Ihkyh-H8zoYay<3KxMQFoCG5%TY>TX;vxlM1Bm(9KRC!-9#Bpa(FVA)eD)l6=YIgQvW9{f zs3cGoRcwpf09tE8+jC#3P@r@rI*Dlx02MNK`Ab~2{KlIUbhLpo3v2b$&v7#U<3<2B z)0JQaKO2-nwssDZU%7S zVi~|nQTCm85tn&$$!@W~^fsCZwW+44rA^!0j{TdZ=c~;@NC?re6V6tH zfZ-1%yLw@ZXroi)jvgj^%wK<_B6qAS@;Bd7kw*@JfnZRXrb?Z8?FJp*e~`Hqhjw(k zDk2RlA1@%XDvNsh!2R?K^K{YBD8Sax^v)e*0*z&RDLD&nCE0zTn9HqvbRLHp66I5w zH+a_~7+Qn`N{v#Z6$)BQ0;ymgC4co7v@SJTAYzGAn51jhQ)P_M|a&Tz_bov`7iyYfK(D z=AJcX=kV3`LPcB~iCu+`$P5Xx0^zj;N1{f9Ttkqna_y?hHA#?*XhsKRCj0+hu4^Bh y$^%lao-Y}Ks*0000Fy9%f4|e+@AUR?o3b!&kYJFhAY+FFf%@VA z0053jL_t(|+U?Rs5&|&*MA7cJ0{1^{6dzr~ubSwaUBI1w2WS9-EdfBAI!KOV)q$EP zq-`m98<)V`=Q@gIU{T|x4tg1+2D);~p#R*yz!h-CNUQ-f zfnEb{0`~$SYkmR-v;tp2E8c-XORR!mW)c`$!a0KEtWIk)?T-2eap M07*qoM6N<$g3Oz77XSbN diff --git a/recipes/icons/cjr.png b/recipes/icons/cjr.png deleted file mode 100644 index d780d82759a4714e4ba8b3959c2c1ba27433261b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1063 zcmZvadoY|=7{)&(N;CZ&v*BCWaTqfy=mhF3-Al2S-KocElW^S;05IrE;f2*$ZX z2ag{F0N_w4mBJ+U6Z^};l!%m$@@W7tnTnvZgP{mlyhDm#ml6kv>55-3#%~nkH%lR= zJAD2OlFHC3h1!ZlU0u5VN|vFu5TZFkGoiebU@cNFat zh${lZa0aRN1eVA#T>Al}JMIh7o%gGV^6pZ+TW;)85HvI=3M=Ls8gmUzd7wXlw--W; zePe_iVF@GycxUmh9}!C+wmZc3grYp5Xm2z(%Gjp_DfasgRbpLTn*MSI6ypt@_ru!? z;aGo|>kkG3upj^y1i}eqB$YlIl|-jX)zwH42~GcF29iqGU(VA1l%;RT z(KqH8u4Wq=a*#9z%<(fc=NX#w4K4X-8pF_9U}!5u(<9*6GkALun#Dx3*l=7RNOwka zqtU!*G(QFwQVi?QzOZ>fE<3%+0)lA#Qi&<4IAMz{%|CUALSMU%!c`^1i=+GNaSVW@VN&>1Cdm zEgeJad>)o_TP(>y<7n)RnQF6nYvYf@X-cTyq4r4P8z)Ae>5N=~WiF;;x9cUQ3%{P$ zd!O2TRDarfz@*jkg@;25u33KX>R&?sfhce~uVw!AJvY8=l)Ev$ZY3F9^76FO)6{)! z=1#MJ&+s$0-ICwgnHuSqsbpV`+E9IVRz2pPL@o)(SX1>WqK>d@)*q$X{>1KsGG%RM+wj;%jqui9r{9jp ztzhG4aGd;9(t$0XY!Yu`BB*j`YI1G1r-77wL1ZrK(2HK0R!b;hq~}%KOB2KM*`)Dz zhsbw|;w`?kZ9jIU`|ARwwVEAeAL)KW6Yg6n5Mp*Ag6bMl8Gmr#!86Tj?c7@%`cMhS cbS=Xm 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 ZV0)%DfHh}6-L3!t002ovPDHLkV1mxKlym?9 diff --git a/recipes/icons/columbusdispatch.png b/recipes/icons/columbusdispatch.png deleted file mode 100644 index ba4f2250ba6c88ef45925b4690545433cd68119e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcmV-~0(O>vAo!^)Aw+w=3=GpSE2Aci{(>rvJ80Z5pCHHUBnJqz6WIF2U_ABa^4_! z;L+CS=JEWZ)bbX6>vV>;tokq*Cx+`Lh3g`N>mY*b9)atG!ti&v?Gij#8>CNN%oWbiA za^(?l<-ytSi^A?hmFqr}?r*R2U8V35cI0ll@epg(6>i>%$ng+q(+_6Qjn4BmQ=K-C z?u5GZ235=kTh$0*+zeyZ4QSmBYTz)6>n@1vEs5(9Uf&E&+6zb721D8hKG+92)dn=x z1wh9JMZg6)xe7+A3`(nfwezE`%_w`{D1752gzKTN(M4mZEQ94FNuwEm>)Pk^o7?u^ z?fMgZ>+tgT|NsBf=KG(@_sin?FXLoz00001bW%=J06^y0W&i*H;z>k7RCwAwkAs$j zK@5eH-_}fRZq2oA+qU}tM|Jxh#km){aQL>S+`|x75z?}jQb;c)C}d}*0}(Z2aNPnj zcYOAbQa+#>m3E%rSuaU^ZsY%#e^;@+koqnJXT4IWSgjYsD;#*1qX(tjk2tkoZ4{p7 z5Ks#rM!a95DA9JoeG4xO(O1Vm!7%biJrs1`fJaZ*THM9RW!I?V>>?0j&rZgLvc2e^ zOeQwla@nnMXFj&XJjBvR7D5}{tkrz0pFaEK?5fh0u3H&%?D6>g;`(`DZe-iEPA{P diff --git a/recipes/icons/computerworld_pl.png b/recipes/icons/computerworld_pl.png deleted file mode 100644 index f4784197435a8c86886fd50b5ace84b30207e0a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;V>j`DU(}s5E?Y%GgL|ltX zy_r#Tx2*m_OZStBGoH_1`g-lAcf0q0JbC8pwVOYlJp1$M^Z)<^>L25Qgsba4!+ zV4QovQRt9@0K-AXYb*uKpZ{O?s{ESvdHTLs<>-^MC-Uljzj2sj@^Plq4Y%ud7cz6T z6lWMS3Tvcgl{2WdSHIrItmd8-&RkIFvv*pUgZ2f}Aj@UvU;Ap@eWKCtRa$8IvulMw duh7(Z`MY~qk3FsAPzGAe;OXk;vd$@?2>=?yU-$q3 diff --git a/recipes/icons/consortium_news.png b/recipes/icons/consortium_news.png deleted file mode 100644 index 2ceed69a4691d0aa9a4a99dc6ede54e5eeca35c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmV;p0!RIcP)ub+Yd00H<(L_t(|+G3y_0Qw>eMLS^_fF^Zsal3BY|9{~E zchBWukponUE$=h1r%!@o?)EM#%S7pW6qBNeQUnMnMOv{GO18=tK#<|Z-|pyED-;-rA=u92(;ph%Jz1WVHcGEC{M&V z=af(2X;oDA&f>cC(J1x6n59GS6XQ$+=e%c}r_}d#)p-he)76}HU1B`}RPVZ)?)Cai ze5LCcr{(-F)I`5R56-BqQ`Ko!Rh-vUgZ=~S|8{fL&$_9oOThE}dObI47O-ct=2cfc zg?G?9UCnl3p6Lr64T&!3HmLDr6>zuny6T8m;k~j7?Kc9^5Ph==^o#wT?Frbw<9t5v z_m>bz@aOyGdOsWvaNnTtdB6VoJINh!K3=Ye;W)ry! zZn&@W*#2lgdDFRnpZDWbM9ox60?yCp7i4vlT1su^n&H~t&To>qWTx`7NZkATxmo5- zN$u^%MRMU&$vknb|0Vl#?v^+M0HS=U`6Gcn46>Vp^>aK3GvxR4*AN+p8$II?&U%D1FTv~&0Eo&Qx8Jb& QC;$Ke07*qoM6N<$g27hdRsaA1 diff --git a/recipes/icons/corriere_della_sera_en.png b/recipes/icons/corriere_della_sera_en.png deleted file mode 100644 index 90df7f4d163762a49fe4740e15dc64de550208d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmV+x0qOpUP)V{}*P%+abQKvT0=!(c-4P}-Q9Ss=SsU;(wx`#vCo``bw4C;j_SFhaEn&@uwATiMDgXcg07*qoM6N<$g0a|l1ONa4 diff --git a/recipes/icons/corriere_dello_sport.png b/recipes/icons/corriere_dello_sport.png deleted file mode 100644 index 08d1c861b01e871a62bb701388169fe02d98b0d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmVP)t-s;}|Oc z|NrrfmFiJn{qgejsITvRhw+P)=QTy;CO7I*U+!;u?QVJVnxW=2MD?k#_P4zDx4rnq z%KFsT=tEKLU~K#1*`q5%otsH?(S zU!(;N#9d>=Uu4B$X2oG=#$#y4WopT6amj6R%58GXaCOUZcFS^i%yW3mb$ZQre5)HH z(SnB3g^JXPjn$5l){m3el$h9-nc0?_*_WED8X~SEE8?%RgxFH?D_BTv@<&W`T4dt zKK=as{`~x<3KG6eRK8ABr3w?>qo(lI*ZJ`9`ttJp`1stQqpl$--lnP9mz&$3qVU$( zw>dz$KSrn#8S~%Z&Uk&#dw`}36y2evouAdj0001$Nkl{ih6>a50+r+&`m)9z5X%5!XTz#34Jztf4XJfn;QsoAWiNo28}sKo>oToThHhxy|R6rKM#y z9gVcoNCPv)0=0*xB_$?GHg&}4r4;m#Joj4X%jnO!=l;L{_xlbX+-s1C!#HejHbqgK za8YO+zPaRaT8TZh$v8k!4rWP|On^(KXM`CTXU1lJe_LQi-q07@nVY>#YyZ;g*`-(0 zw7HuZnxrdQ=*t~+Ni%J1p*0q|^akd%r3V!Ckk>#LS!ku1R$rqFEugpp+4Wd-t_dOv z;OGV9;n+nuUIX%KNIwVZmBgH^g~JsfQbA%FBvn9?0W!`*q#81-;E0i!WCJl0Eu@@< zv`RQwN=T`mdEKp$M6eja^l2NY6Z&C3B`7Hc5zv|cAcxM ztGl}om%EwA^Y`cT`P;Ye-m_N}C6*8!O3#qXiy{epjDP)|;>%J83&g@=a7@{be_ zKh1Ru@uX}*D^arkfumpdrfwONy-C+4pR_lagF0KE*0FYc?6daHo7=`)_DA+?(duh_ zdHpZSTZPhvc>P$kvg64 zk-1j*+r7c03-ILZtX&A~yW|xZ;c%|mZgn*N@cO{!$m{Z^oF?S6?hz+c%E9)Op3}Lp zEFUfHS+ncsw8MO4V}VuDJFczUJafW95Rfkj3CQ>OG~xZ#+4Oy>*B~7@s0*Tk2QPPZ zSQqJZDQoM7H&+i#yX?3xpRMF&4+k~b?mN#3(h`+^juRQFzQW=&_GHfKEY^)B-nA@# z^O}vi>8vfEjl!H5A5DVqsiueX?4NJ2=d!MSxc5xrXWtxIpj>EHR jnN=^1fvJ}-+eO8&I#XZG`0G9V@k>+T0&!^DzEu4mgcAZe diff --git a/recipes/icons/cosmopolitan_uk.png b/recipes/icons/cosmopolitan_uk.png deleted file mode 100644 index f73fbf673fd97e86148c63853771d6d277c9160c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1750 zcmV;{1}XW8P)W=M~jsSKZ)nVIRBnVFfHnaa$} zVNR1?){Fl+>1{5(_QJH*;@?#FjYzbLk^ znhma`zlQtaZK0}IaN1<63BuO8>aRZeuuBZ($G^Y+EV%8m*CChMDPVkJWZoP!;*+aY-!6aV>3F|-rgfBo(osnsPptb)}D(j}}u z4?p`~(u*O!L_Hb#5cgh;WNwB{ID&)Na8B#1 zFQ$fLu2QK0fIO?p&X9c`!D4`D$b4jruyz6Is{$d^pnc)rh{aa+nJunvJaPN+m zjE(pxHP(<<`jb(Q(WvxO3rBX!elH9P9fT67S~O!C)KcXDx#zCCES05_#{nP1+Ff?3 zwt}SeAfq3r0E2YgZy(Z+^skBg{6#Q^Fd)>zmgVqO0ia6U4rg7}BM&`5J;390lm7;ivwNk5Giv;(mUg480HV$SzzC*&haICo16o{fFCTXt$Jy?Tuy_iDBLJ`u_)hHE$za@b zm##V|Q}(&T{3sFLx{~d!x(c8|Mz&Mou!^~9;^k9f&Se_mx(a*&tIBcFW=5zR3UVKR zy-S2X_u&F)W-u89Dm7zokKTc1F?SDP2;eT$ipXx?*hp z`YZ6boaVQ~ZiY@!v^g;hDL03&N$bydmnakSDET{;hS*QY5s zf!;8{n)ws}e4=C>+Qxm7#QpsR_v;73&b3M{QZ6%ODl*fw+F;+^xNI>x7p`BV2d%=P z?L?uduZmwj19qTx%56Sj?R@rWhKzb7@Fc@e`Bmz0(V&WL+qrfX6B@6*n2LMRfg-8Z zBc`1uLv$$A06-(-=ZvGd4-dfJ(&=n}4SBIQJ5b9np4tHb9zf>3H(zgWH7H4C>6fVE ziVzwDn5`@(iO-RkC#e%qH1=Cch1r0WoBRs_0BRAa+qmS~*a)X^B*w%Hq-${{Q~}|NsB}{oLIC{`~C@4Ewpk{{H^$AtLiK zFYg~D@-Z&{@9gw1Gynhk=>P!pQB?S4WA=7)@^{{Q{^y1MmbXZ*Xk`n!i zY-gqrhr7$(v{{d`WQdW+n|YZ}`+2DvA}*$WnOt2{L;~C_oeC8#0Wr4ymH;42K;2Dq ziUblcx}W;P5ah57OiTJ3#Kn$N&BPq@<)GA|lWL z0MHd2(=|Ko?d|;c_Z%D?)H^`o;o%+;=(4luv$N^8x9REW>bSXfc6M}hbn5Bp?7qM3zrf*7qS{r30V+uPujmAbmR?#IaP%F5v1-|WD_?7+h8!Nb%tI4373)ICDfL`dS7nd6$A z=PEha4%kS^+yu7^j;o|q^=J)pY_~_{Q>gqK$HP00lKtMps z%F6!x{LdmH%>V#>eSOo@)6z9N?83wB!^7>v#O=ey?Zn0H#mCb%IPS&8?#0HwzP`V| zzeGetPEJlxP*Cyk@bdEV^YZfa+S>Hn+<$+6fPjF4f`XNmm6w;7p`oGs^z{4t`=g_y zS65fpU}D>HblY=v{`~y@{r%7!9MCc{(EuFL6&xMO)dm0n0ia1lK~#9!h0_DCJ3$l$ z@Ox&~we9|G+qP}nw#}#S`)+o#&D19i`^%2bB@BrNq~k_{V@AA~3XndRP-FT);#@Tv zjsDtl;wMaeI1qlqIeX#1{{@LDhsY+P4Bcr0JL|Uu=UV*lMdl17Qbn>Xn_|{H`VJg3 zLY2At)1WT?Y=TE@f;QmDatk~L@(dQX1C-S--0%JZ)>2?Fn4^9n z-viv(_2T?{G#EVczOc9hc=vylK^R!cU{MDsa7Gv;;~O6?KQo>bEBbsv*AhaM^n1of zm~CKHZhr2Pd)1mYYhv{FaR3S^;1gL?!*o%ZmOXXy^uG-^JHZ#ehaC(;#`?&QvkZEC{g+{?fQ279cz7Luc+E~QAd_-URKX7T{Ko(Q002ov JPDHLkV1k=9`mz83 diff --git a/recipes/icons/countryfile.png b/recipes/icons/countryfile.png deleted file mode 100644 index 10f1e9be82a737c24634ef17dfb15f98cfd5c28b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 928 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 diff --git a/recipes/icons/credit_slips.png b/recipes/icons/credit_slips.png deleted file mode 100644 index e5aa786bf4941032dbb96fb00ba07a78aa6e3a00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3239 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 Zug~vNuYZu^9Y6p8002ovPDHLkV1nntPpbd` diff --git a/recipes/icons/cronica.png b/recipes/icons/cronica.png deleted file mode 100644 index e0e9680da8d581cb35d5b7c191de320f23956382..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 514 zcmV+d0{#7oP))d*|bwr!h1t*~}b+qP}njGlGY9d^%;tV^9FO5m2hh?Fkr8T;taM1?ncb|gcww!0!EAx)>O<)FpB4A!TTlH49OP}25ZCJ; zp#fRlUT|jQg2QDnV$-+vEyD6ie)Y^Z=#Qms9l*%B}L%uUE@ zc86fIgTwamr|5xt=ve2ajJ;wH>UlzrdL%gX!{p$eRoRH)6i~ z0)o{B^?(^dsDQ(jFNX+0Kz_Lv;n`1V0NwNzaI1Cj7)+cD&IuLx!!7y2Eh@W=gJ#$~ zlx*4$XI4H4+-=C44H8AEYX3q6>a8wbw;ORm711BM07-?G0k1fR`H{w2R-m#dwG$S> z^7K7VrZ{Zh{-SipamX9?jch1ICTm(TvW2_SgM|i?3^TdkC0;kSr4PU2lN=O@wM|MJaSKZk zICGjkcAY6x6GKg%bK{%p1aPVyw9S((4@c7 zrohsu!qck5)T_kRt;N=`$JepQ*RsjjwaePK%-gul+q%x&zR}*o)ZoR|;>p?M%-iM8 z-R9BW=hout+T`rt= zMR5rL002k;rwwuqoBs=k8Kr+T zP1%<5c_Go2WgP!~I*RQd6PDwLy5IHn@bq~hk%47d-<#m|^lj4Du60)=T0@hQ3Wxri z1dftK?Lhqn#BTFlAsZj|B$nYkAPCyn9U3)?97)vvO#lLiENF_D=&`+>-#(d_pWejX zmocMWEUUw_qm|SBIt(55m$Hh-A;rt( z(#ByK;u0tG(4v;Xe%;#ZaftJmLuQt)jd6)+Aev|(t{+4bnuG>48qhw{XpIB_0CoTp z007tnNB{s}4mfF}S600IJ^Kp=hwfY+n>XdY_mbIDlRP+Q+80JP`f%P_Wn+g3Hw zOU6Y2fc4R#Z*4WN)Y`fhk=pKhK~84T(g4e1L2=?nnr5d-QS5$;7h|NHv?{{HC_1?m?H>KF^@4gl#6 z0_hL}=@0|y5(Mo#Fz!b_@LpB%WnBL8@&Eez=@SP3`}_a=`~Up>|NZ^x6bI@R2K_y9Ar$K+80#e&>n0lOCmZW4AnYt4>?|SdFC*+TC+svR?L9N? zJ~QeT2<}2T>J|y^MLh0CJMKn2?ngc85CrZ>KJH6E?@U4OQAqDoO7B!k?^H|a3IOqD zUGZpO@^xw6b9%60O}qR{M*_5;otq~>HY2O{q61k@bLce@aYc%{`dFk6bSmp!s!tN=m7xg z8x83W0qGM3=mG%g6A18KROki(@LyN$H!SH40qs07?L9K;9uesc0PQv_@K;Xx!M^&$ z!TQC){`&gr7YXrVTJdCC?K&{%2LSrb%KO*V``Fd|+S$AM8Xf=u0bof)K~#9!&C}ze z<3Iq0;eIm{qqezr*S4*$_t>_5-)CyKfBP2E6DJn2OFaV!AxtdA2%(e`Rtp5v?T(A3 ztfq6^ZdbM_sQ`g`7E@P}#p&dkUGKvukF~S&cWDW*YZv-}b%lsLReFagc>liLkx2yv zfQ=$pdinu+ObM;JUq&taB}mRrEv)fWeRuz!QK0ok8>=l=tPb0N|i zJos_i@f{J|aoncu(j{PN641d$yba0#kd zd$SDW%fV;)%)$N8Ny5Z>U_^KsOmm>)o|A}T4Y(Mn*}^9T8-OUN*Kcb#^J(65iA$-4 ztEX)B&!nKZlwwXRON^LqTZ@Ob6cZW$@4YvxOUKTdPQ2;&ORxX{002ovPDHLkV1g*5 Bq3r+w