diff --git a/manual/custom.py b/manual/custom.py index b385d92074..1da37118c9 100644 --- a/manual/custom.py +++ b/manual/custom.py @@ -33,7 +33,7 @@ def formatter_funcs(): ans = {'doc': {}, 'sum': {}} with TemporaryDirectory() as tdir: - db = LibraryDatabase(tdir) # needed to load formatter_funcs + db = LibraryDatabase(tdir) # needed to load formatter_funcs ffml = FFMLProcessor() all_funcs = formatter_functions().get_builtins() for func_name, func in all_funcs.items(): diff --git a/manual/plugin_examples/helloworld/__init__.py b/manual/plugin_examples/helloworld/__init__.py index 60b3cb570b..07647b2d5f 100644 --- a/manual/plugin_examples/helloworld/__init__.py +++ b/manual/plugin_examples/helloworld/__init__.py @@ -13,13 +13,13 @@ from calibre.customize import FileTypePlugin class HelloWorld(FileTypePlugin): - name = 'Hello World Plugin' # Name of the plugin + name = 'Hello World Plugin' # Name of the plugin description = 'Set the publisher to Hello World for all new conversions' - supported_platforms = ['windows', 'osx', 'linux'] # Platforms this plugin will run on - author = 'Acme Inc.' # The author of this plugin + supported_platforms = ['windows', 'osx', 'linux'] # Platforms this plugin will run on + author = 'Acme Inc.' # The author of this plugin version = (1, 0, 0) # The version number of this plugin - file_types = {'epub', 'mobi'} # The file types that this plugin will be applied to - on_postprocess = True # Run this plugin after conversion is complete + file_types = {'epub', 'mobi'} # The file types that this plugin will be applied to + on_postprocess = True # Run this plugin after conversion is complete minimum_calibre_version = (0, 7, 53) def run(self, path_to_ebook): diff --git a/manual/template_ref_generate.py b/manual/template_ref_generate.py index 9fcba5e2b3..0aac5a924e 100644 --- a/manual/template_ref_generate.py +++ b/manual/template_ref_generate.py @@ -61,7 +61,7 @@ def generate_template_language_help(language, log): a = output.append with TemporaryDirectory() as tdir: - db = LibraryDatabase(tdir) # needed to load formatter_funcs + db = LibraryDatabase(tdir) # needed to load formatter_funcs ffml = FFMLProcessor() all_funcs = formatter_functions().get_builtins() categories = defaultdict(dict) diff --git a/recipes/1843.recipe b/recipes/1843.recipe index 0a30f9631b..4c5a016581 100644 --- a/recipes/1843.recipe +++ b/recipes/1843.recipe @@ -274,7 +274,7 @@ class Economist(BasicNewsRecipe): 'economist.com/cdn-cgi/image/width=600,quality=80,format=auto/') return soup - else: # Load articles from individual article pages {{{ + else: # Load articles from individual article pages {{{ def __init__(self, *args, **kwargs): BasicNewsRecipe.__init__(self, *args, **kwargs) diff --git a/recipes/andhrajyothy_ap.recipe b/recipes/andhrajyothy_ap.recipe index 68fe0d4e45..86a122fb6c 100644 --- a/recipes/andhrajyothy_ap.recipe +++ b/recipes/andhrajyothy_ap.recipe @@ -5,7 +5,7 @@ from datetime import date from calibre.web.feeds.news import BasicNewsRecipe # figure out your local edition id from the log of this recipe -edi_id = 182 # NTR VIJAYAWADA - 182 +edi_id = 182 # NTR VIJAYAWADA - 182 today = date.today().strftime('%d/%m/%Y') diff --git a/recipes/andhrajyothy_tel.recipe b/recipes/andhrajyothy_tel.recipe index 6d8608ea81..eb1abb8dfd 100644 --- a/recipes/andhrajyothy_tel.recipe +++ b/recipes/andhrajyothy_tel.recipe @@ -5,7 +5,7 @@ from datetime import date from calibre.web.feeds.news import BasicNewsRecipe # figure out your local edition id from the log of this recipe -edi_id = 34 # HYDERABAD MAIN I - 34 +edi_id = 34 # HYDERABAD MAIN I - 34 today = date.today().strftime('%d/%m/%Y') diff --git a/recipes/android_police.recipe b/recipes/android_police.recipe index a3b9a4114f..dd9b304600 100644 --- a/recipes/android_police.recipe +++ b/recipes/android_police.recipe @@ -23,36 +23,36 @@ class AdvancedUserRecipe1718384518(BasicNewsRecipe): auto_cleanup = True feeds = [ - #Phones + # Phones ('Phones', 'https://www.androidpolice.com/feed/phones/'), ('News about Phones', 'https://www.androidpolice.com/feed/phones-news/'), ('Guides about Phones', 'https://www.androidpolice.com/feed/phones-guide/'), ('Phones Features', 'https://www.androidpolice.com/feed/phones-features/'), ('Phones & Accessory Reviews', 'https://www.androidpolice.com/feed/phones-reviews/'), - #Google + # Google ('Google', 'https://www.androidpolice.com/feed/google/'), ('News about Google', 'https://www.androidpolice.com/feed/news-google/'), ('Google Applications', 'https://www.androidpolice.com/feed/tag/google-app/'), ('Guides about Google', 'https://www.androidpolice.com/feed/guides-google/'), ('Features about Google', 'https://www.androidpolice.com/feed/features-google/'), - #Operating Systems + # Operating Systems ('Operating Systems', 'https://www.androidpolice.com/feed/operating-systems/'), ('News about Operating Systems', 'https://www.androidpolice.com/feed/news-operating-systems/'), ('Guides about Operating Systems', 'https://www.androidpolice.com/feed/guides-operating-systems/'), ('Features on Operating Systems', 'https://www.androidpolice.com/feed/features-operating-systems/'), - #Chromebooks + # Chromebooks ('Chromebooks', 'https://www.androidpolice.com/feed/laptops/'), ('News about Chromebooks', 'https://www.androidpolice.com/feed/news-chromebooks/'), ('Guides about Chromebooks', 'https://www.androidpolice.com/feed/guides-chromebooks/'), ('Chromebook & Laptop Reviews', 'https://www.androidpolice.com/feed/reviews-chromebooks/'), - #Gadgets + # Gadgets ('Gadgets', 'https://www.androidpolice.com/feed/gadgets/'), ('Smartwatches & Wearables', 'https://www.androidpolice.com/feed/wearables/'), ('Audio', 'https://www.androidpolice.com/feed/tag/audio/'), ('Accessories', 'https://www.androidpolice.com/feed/accessories/'), ('Smart Home', 'https://www.androidpolice.com/feed/smart-home/'), ('Applications & Games', 'https://www.androidpolice.com/feed/applications-games/'), - #Reviews + # Reviews ('Reviews', 'https://www.androidpolice.com/feed/reviews/'), ('Phones & Accessory Reviews', 'https://www.androidpolice.com/feed/phones-reviews/'), ('Smartwatch & Wearable Reviews', 'https://www.androidpolice.com/feed/wearable-reviews/'), diff --git a/recipes/backyard_boss.recipe b/recipes/backyard_boss.recipe index 783fd11183..2626a3baec 100644 --- a/recipes/backyard_boss.recipe +++ b/recipes/backyard_boss.recipe @@ -22,21 +22,21 @@ class AdvancedUserRecipe1718382046(BasicNewsRecipe): auto_cleanup = True feeds = [ - #Gardening + # Gardening ('Gardening', 'https://www.backyardboss.net/feed/category/gardening/'), ('Outdoor Gardening', 'https://www.backyardboss.net/feed/category/gardening/outdoor-gardening/'), ('Indoor Gardening', 'https://www.backyardboss.net/feed/category/gardening/indoor-gardening/'), ('Fruits & Vegetables', 'https://www.backyardboss.net/feed/tag/gardening/fruits-and-vegetables/'), ('Houseplants', 'https://www.backyardboss.net/feed/category/gardening/houseplants/'), ('Plant Care', 'https://www.backyardboss.net/feed/category/gardening/plant-care/'), - #Backyard + # Backyard ('Backyard', 'https://www.backyardboss.net/feed/category/backyard/'), ('Home Improvement', 'https://www.backyardboss.net/feed/category/backyard/home-improvement/'), ('Lawn Care', 'https://www.backyardboss.net/feed/category/backyard/lawn-care/'), ('Landscaping', 'https://www.backyardboss.net/feed/category/backyard/landscape-industry/'), ('Barbecue', 'https://www.backyardboss.net/feed/category/backyard/bbq/'), ('Reviews', 'https://www.backyardboss.net/feed/category/backyard/reviews/'), - #DIY & Project + # DIY & Project ('DIY & Projects', 'https://www.backyardboss.net/feed/category/diy/'), ('How-To', 'https://www.backyardboss.net/feed/category/diy/how-to/'), ('Designs & Ideas', 'https://www.backyardboss.net/feed/category/diy/designs-and-ideas/'), diff --git a/recipes/bloomberg.recipe b/recipes/bloomberg.recipe index 02f1a9ceb0..40846337dd 100644 --- a/recipes/bloomberg.recipe +++ b/recipes/bloomberg.recipe @@ -58,7 +58,7 @@ class Bloomberg(BasicNewsRecipe): 'Bloomberg delivers business and markets news, data, analysis, and video' ' to the world, featuring stories from Businessweek and Bloomberg News.' ) - oldest_article = 1.2 # days + oldest_article = 1.2 # days resolve_internal_links = True remove_empty_feeds = True cover_url = 'https://assets.bwbx.io/images/users/iqjWHBFdfxIU/ivUxvlPidC3M/v0/600x-1.jpg' diff --git a/recipes/deutschland_funk.recipe b/recipes/deutschland_funk.recipe index a5dd30defc..379fef1b59 100644 --- a/recipes/deutschland_funk.recipe +++ b/recipes/deutschland_funk.recipe @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -#from __future__ import unicode_literals, division, absolute_import, print_function +# from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe __license__ = 'GPL v3' @@ -58,8 +58,8 @@ class AdvancedUserRecipe1432200863(BasicNewsRecipe): ('DLF-Kultur Film / Serie', 'https://www.deutschlandfunkkultur.de/film-serie-100.rss'), ] keep_only_tags = [ - dict(name='nav', attrs={'class':'b-breadcrumbs'}), # DLF articles - dict(name='article', attrs={'class':'b-article'}), # DLF articles + dict(name='nav', attrs={'class':'b-breadcrumbs'}), # DLF articles + dict(name='article', attrs={'class':'b-article'}), # DLF articles dict(name='div', attrs={'class':[ 'b-section-article-head-area', 'b-section-editor-content', @@ -76,6 +76,6 @@ class AdvancedUserRecipe1432200863(BasicNewsRecipe): dict(name='ul', attrs={'class':['b-social-icons']}), # DLF articles dict(name='ul', attrs={'class':['b-social-icons']}), # DLF Kultur articles - dict(name='div', attrs={'class':'b-footer-area-series'}), # DLF Kultur articles + dict(name='div', attrs={'class':'b-footer-area-series'}), # DLF Kultur articles dict(name='div', attrs={'id':'weekender'}) ] diff --git a/recipes/dr_dk.recipe b/recipes/dr_dk.recipe index ef6283ee2a..7f735ed313 100644 --- a/recipes/dr_dk.recipe +++ b/recipes/dr_dk.recipe @@ -14,8 +14,8 @@ class DRNyheder(BasicNewsRecipe): ('Udland', 'https://www.dr.dk/nyheder/service/feeds/udland'), ('Penge', 'https://www.dr.dk/nyheder/service/feeds/penge'), ('Politik', 'https://www.dr.dk/nyheder/service/feeds/politik'), - #('Sporten', 'https://www.dr.dk/nyheder/service/feeds/sporten'), - #('Seneste sport', 'https://www.dr.dk/nyheder/service/feeds/senestesport'), + # ('Sporten', 'https://www.dr.dk/nyheder/service/feeds/sporten'), + # ('Seneste sport', 'https://www.dr.dk/nyheder/service/feeds/senestesport'), ('Viden', 'https://www.dr.dk/nyheder/service/feeds/viden'), ('Kultur', 'https://www.dr.dk/nyheder/service/feeds/kultur'), ('Musik', 'https://www.dr.dk/nyheder/service/feeds/musik'), @@ -42,8 +42,8 @@ class DRNyheder(BasicNewsRecipe): publication_type = 'newspaper' encoding = 'utf8' language = 'da' - oldest_article = 4 # 2 might be best - max_articles_per_feed = 50 # 100 better, this is just for testing + oldest_article = 4 # 2 might be best + max_articles_per_feed = 50 # 100 better, this is just for testing no_stylesheets = True use_embedded_content = False auto_cleanup = False @@ -106,15 +106,15 @@ class DRNyheder(BasicNewsRecipe): keep_only_tags = [ - dict(name='h1', attrs={'class': 'dre-article-title__heading'}), # Title - dict(name='div', attrs={'class': 'dre-article-byline'}), # Author - dict(name='figure', attrs={'class': 'dre-standard-article__figure'}), # Comment out to remove images - dict(name='p', attrs={'class': 'dre-article-body-paragraph'}), # All body text of the article + dict(name='h1', attrs={'class': 'dre-article-title__heading'}), # Title + dict(name='div', attrs={'class': 'dre-article-byline'}), # Author + dict(name='figure', attrs={'class': 'dre-standard-article__figure'}), # Comment out to remove images + dict(name='p', attrs={'class': 'dre-article-body-paragraph'}), # All body text of the article dict(name='article', attrs={'itemtype': 'http://schema.org/NewsArticle'}), - #dict(name="h1", attrs={'class': 'hydra-latest-news-page-short-news__title'}), - #dict(name="p", attrs={'class': 'hydra-latest-news-page-short-news__paragraph'}), - #dict(name="div", attrs={'class': 'dre-speech'}), - #dict(name="div", attrs={'itemprop': 'author'}) + # dict(name="h1", attrs={'class': 'hydra-latest-news-page-short-news__title'}), + # dict(name="p", attrs={'class': 'hydra-latest-news-page-short-news__paragraph'}), + # dict(name="div", attrs={'class': 'dre-speech'}), + # dict(name="div", attrs={'itemprop': 'author'}) ] remove_tags = [ @@ -123,8 +123,8 @@ class DRNyheder(BasicNewsRecipe): 'hydra-latest-news-page-short-news__share', 'hydra-latest-news-page-short-news__a11y-container', 'hydra-latest-news-page-short-news__meta', 'hydra-latest-news-page-short-news__image-slider', 'dre-byline__dates']}), dict(name='source'), - #dict(name='menu', attrs={'class': 'share'}), - #dict(name='menu', attrs={'class': 'dr-site-share-horizontal'}), + # dict(name='menu', attrs={'class': 'share'}), + # dict(name='menu', attrs={'class': 'dr-site-share-horizontal'}), ] # Fixes images having the wrong aspect ratio diff --git a/recipes/el_correo.recipe b/recipes/el_correo.recipe index 5f42a7aa2e..63d05274ba 100644 --- a/recipes/el_correo.recipe +++ b/recipes/el_correo.recipe @@ -21,7 +21,7 @@ class elcorreo(BasicNewsRecipe): encoding = 'utf-8' remove_empty_feeds = True resolve_internal_links = True - max_articles_per_feed = 25 # articles + max_articles_per_feed = 25 # articles compress_news_images = True recipe_specific_options = { diff --git a/recipes/faz_net.recipe b/recipes/faz_net.recipe index a87bfd495d..68cf8fdf04 100644 --- a/recipes/faz_net.recipe +++ b/recipes/faz_net.recipe @@ -18,7 +18,7 @@ def format_tickaroo_liveblog(soup): for div in soup.findAll('div', attrs={'class':'tik4-content-block tik4-content-block--rich-text tik4-content-block--position-2'}): div.insert_before(soup.new_tag('br')) - #format liveblogs + # format liveblogs for tag in soup.findAll('time'): ntag = soup.new_tag('br') tag.insert_before(ntag) @@ -209,7 +209,7 @@ class FazNet(BasicNewsRecipe): if tag: story(soup,tag) - #Extract images and text from image galleries + # Extract images and text from image galleries for par in soup.findAll('p'): if len(par.contents) == 1: cont = str(par.contents[0]) @@ -260,7 +260,7 @@ class FazNet(BasicNewsRecipe): def postprocess_html(self, soup, first_fetch): - #Position point between figure caption and figure credit, where needed + # Position point between figure caption and figure credit, where needed for tag in soup.findAll(attrs={'class':['body-elements__image-figcaption','header-teaser__image-details']}): if tag.string is None: if tag.contents[0].string: diff --git a/recipes/firstpost.recipe b/recipes/firstpost.recipe index 75e62501a4..2d0c7e7d19 100644 --- a/recipes/firstpost.recipe +++ b/recipes/firstpost.recipe @@ -41,7 +41,7 @@ class firstpost(BasicNewsRecipe): # 'photos', 'entertainment', 'living', 'education', 'sports', 'firstcricket', ] - oldest_article = 1.2 # days + oldest_article = 1.2 # days for sec in sections: a = 'https://www.firstpost.com/rss/{}.xml' feeds.append((sec.capitalize(), a.format(sec))) diff --git a/recipes/fluter_de.recipe b/recipes/fluter_de.recipe index 508ae4de6f..e8eb764f46 100644 --- a/recipes/fluter_de.recipe +++ b/recipes/fluter_de.recipe @@ -20,7 +20,7 @@ class AdvancedUserRecipe1313693926(BasicNewsRecipe): language = 'de' encoding = 'UTF-8' - __author__ = 'Armin Geller' # 2013-02-05 V3 + __author__ = 'Armin Geller' # 2013-02-05 V3 oldest_article = 14 max_articles_per_feed = 50 diff --git a/recipes/football_fancast.recipe b/recipes/football_fancast.recipe index 8644b45253..88644578ce 100644 --- a/recipes/football_fancast.recipe +++ b/recipes/football_fancast.recipe @@ -20,13 +20,13 @@ class AdvancedUserRecipe1718373345(BasicNewsRecipe): auto_cleanup = True feeds = [ - #EURO 2024 + # EURO 2024 ('EURO 2024', 'https://www.footballfancast.com/feed/tag/euro-2024/'), ('EURO England', 'https://www.footballfancast.com/feed/tag/england/'), ('EURO Scotland', 'https://www.footballfancast.com/feed/tag/scotland/'), ('EURO Groups', 'https://www.footballfancast.com/feed/tag/euro-2024-groups/'), ('History of the EUROs', 'https://www.footballfancast.com/feed/tag/history-of-the-euros/'), - #Transfer Rumours + # Transfer Rumours ('Transfer Focus', 'https://www.footballfancast.com/feed/tag/transfer-focus/'), ('Saudi Pro League', 'https://www.footballfancast.com/feed/tag/saudi-pro-league/'), ('Marcus Rashford', 'https://www.footballfancast.com/feed/tag/marcus-rashford/'), @@ -34,7 +34,7 @@ class AdvancedUserRecipe1718373345(BasicNewsRecipe): ('Michael Olise', 'https://www.footballfancast.com/feed/tag/michael-olise/'), ('Bruno Guimarães', 'https://www.footballfancast.com/feed/tag/bruno-guimaraes/'), ('Fabrizio Romano', 'https://www.footballfancast.com/feed/tag/fabrizio-romano/'), - #Premier League + # Premier League ('Premier League', 'https://www.footballfancast.com/feed/tag/premier-league/'), ('Arsenal', 'https://www.footballfancast.com/feed/tag/arsenal/'), ('Aston Villa', 'https://www.footballfancast.com/feed/tag/aston-villa/'), @@ -45,19 +45,19 @@ class AdvancedUserRecipe1718373345(BasicNewsRecipe): ('Manchester United', 'https://www.footballfancast.com/feed/tag/manchester-united/'), ('Tottenham Hotspur', 'https://www.footballfancast.com/feed/tag/tottenham-hotspur/'), ('West Ham United', 'https://www.footballfancast.com/feed/tag/west-ham-united/'), - #European Leagues + # European Leagues ('La Liga', 'https://www.footballfancast.com/feed/la-liga/'), ('Bundesliga', 'https://www.footballfancast.com/feed/bundesliga/'), ('Ligue 1', 'https://www.footballfancast.com/feed/ligue-1/'), ('Serie A', 'https://www.footballfancast.com/feed/serie-a/'), - #Champions League + # Champions League ('Champions League', 'https://www.footballfancast.com/feed/champions-league/'), ('Real Madrid', 'https://www.footballfancast.com/feed/tag/real-madrid/'), ('Barcelona', 'https://www.footballfancast.com/feed/tag/barcelona/'), ('Bayern Munich', 'https://www.footballfancast.com/feed/tag/bayern-munich/'), ('Paris Saint-Germain', 'https://www.footballfancast.com/feed/tag/psg/'), ('Europa League', 'https://www.footballfancast.com/feed/europa-league/'), - #Europa League + # Europa League ('ROMA', 'https://www.footballfancast.com/feed/tag/roma/'), ('Villarreal', 'https://www.footballfancast.com/feed/tag/villarreal/'), diff --git a/recipes/football_league_world.recipe b/recipes/football_league_world.recipe index 200ecc3635..b7e7d336b1 100644 --- a/recipes/football_league_world.recipe +++ b/recipes/football_league_world.recipe @@ -21,12 +21,12 @@ class AdvancedUserRecipe1718380039(BasicNewsRecipe): auto_cleanup = True feeds = [ - #Transfer Rumours + # Transfer Rumours ('Transfer Rumours', 'https://footballleagueworld.co.uk/feed/transfer-rumours/'), ('Alex Scott', 'https://footballleagueworld.co.uk/feed/tag/alex-scott/'), ('James Ward-Prowse', 'https://footballleagueworld.co.uk/feed/tag/james-ward-prowse/'), ('Wilfried Gnonto', 'https://footballleagueworld.co.uk/feed/wilfried-gnonto/'), - #Championship + # Championship ('Championship', 'https://footballleagueworld.co.uk/feed/championship/'), ('Leeds United', 'https://footballleagueworld.co.uk/feed/tag/leeds-united/'), ('Leicester City', 'https://footballleagueworld.co.uk/feed/tag/leicester-city/'), @@ -36,14 +36,14 @@ class AdvancedUserRecipe1718380039(BasicNewsRecipe): ('Southampton', 'https://footballleagueworld.co.uk/feed/tag/southampton/'), ('Sunderland', 'https://footballleagueworld.co.uk/feed/tag/sunderland/'), ('West Bromwich Albion', 'https://footballleagueworld.co.uk/feed/tag/west-bromwich-albion/'), - #League One + # League One ('Barnsley', 'https://footballleagueworld.co.uk/feed/tag/barnsley/'), ('Bolton Wanderers', 'https://footballleagueworld.co.uk/feed/tag/bolton-wanderers/'), ('Charlton Athletic', 'https://footballleagueworld.co.uk/feed/tag/charlton-athletic/'), ('Derby County', 'https://footballleagueworld.co.uk/feed/tag/derby-county/'), ('Portsmouth', 'https://footballleagueworld.co.uk/feed/tag/portsmouth/'), ('Reading', 'https://footballleagueworld.co.uk/feed/tag/reading/'), - #League Two + # League Two ('Bradford City', 'https://footballleagueworld.co.uk/feed/tag/bradford-city/'), ('Gillingham', 'https://footballleagueworld.co.uk/feed/tag/gillingham/'), ('Notts County', 'https://footballleagueworld.co.uk/feed/tag/notts-county/'), diff --git a/recipes/game_rant.recipe b/recipes/game_rant.recipe index 39f5b4043c..5913eb69ad 100644 --- a/recipes/game_rant.recipe +++ b/recipes/game_rant.recipe @@ -24,14 +24,14 @@ class AdvancedUserRecipe1718106336(BasicNewsRecipe): feeds = [ ('Game News', 'https://gamerant.com/feed/gaming/'), - #Platforms + # Platforms ('Platforms', 'https://gamerant.com/feed/platforms/'), ('Playstation', 'https://gamerant.com/feed/tag/playstation/'), ('Xbox', 'https://gamerant.com/feed/tag/xbox/'), ('Nintendo', 'https://gamerant.com/feed/tag/nintendo/'), ('PC Gaming', 'https://gamerant.com/feed/tag/pc/'), ('Mobile Gaming', 'https://gamerant.com/feed/tag/mobile/'), - #Game Rant Originals + # Game Rant Originals ('Game Rant Originals', 'https://gamerant.com/feed/originals/'), ('Editorials', 'https://gamerant.com/feed/editorial/'), ('Game Reviews', 'https://gamerant.com/feed/game-reviews/'), diff --git a/recipes/globaltimes.recipe b/recipes/globaltimes.recipe index 0bcf1aa43d..c33c67762d 100644 --- a/recipes/globaltimes.recipe +++ b/recipes/globaltimes.recipe @@ -20,7 +20,7 @@ class GlobalTimes(BasicNewsRecipe): encoding = 'utf-8' remove_empty_feeds = True resolve_internal_links = True - oldest_article = 1 # days + oldest_article = 1 # days def get_cover_url(self): soup = self.index_to_soup('https://en.kiosko.net/cn/np/cn_global_times.html') diff --git a/recipes/google_news.recipe b/recipes/google_news.recipe index 9777951626..761dc07050 100644 --- a/recipes/google_news.recipe +++ b/recipes/google_news.recipe @@ -50,7 +50,7 @@ class google_news_de(BasicNewsRecipe): url = e.hdrs.get('location') soup = self.index_to_soup(url) link = soup.find('a', href=True) - skip_sections =[ # add sections you want to skip + skip_sections =[ # add sections you want to skip '/video/', '/videos/', '/media/', 'podcast-' ] if any(x in link['href'] for x in skip_sections): diff --git a/recipes/horizons.recipe b/recipes/horizons.recipe index baa007e5fd..880b4c230f 100644 --- a/recipes/horizons.recipe +++ b/recipes/horizons.recipe @@ -47,7 +47,7 @@ class horizons(BasicNewsRecipe): url = d else: soup = self.index_to_soup('https://www.cirsd.org/en/horizons') - a = soup.findAll('a', href=True, attrs={'class':'horizon-gallery-box'})[0] #use 1 for previous edition + a = soup.findAll('a', href=True, attrs={'class':'horizon-gallery-box'})[0] # use 1 for previous edition url = a['href'] if url.startswith('/'): url = 'https://www.cirsd.org' + url diff --git a/recipes/hot_cars.recipe b/recipes/hot_cars.recipe index bb7aa0cfd0..87a1d4ba7b 100644 --- a/recipes/hot_cars.recipe +++ b/recipes/hot_cars.recipe @@ -23,7 +23,7 @@ class AdvancedUserRecipe1718126839(BasicNewsRecipe): auto_cleanup = True feeds = [ - #Car Types + # Car Types ('Fast Cars', 'https://www.hotcars.com/feed/category/fast-cars/'), ('Classic Cars', 'https://www.hotcars.com/feed/tag/classic-cars/'), ('Muscle Cars', 'https://www.hotcars.com/feed/category/muscle-cars/'), @@ -32,13 +32,13 @@ class AdvancedUserRecipe1718126839(BasicNewsRecipe): ('Mass Market Cars', 'https://www.hotcars.com/feed/category/mass-market-cars/'), ('Luxury Cars', 'https://www.hotcars.com/feed/tag/luxury-cars/'), ('Motorcycles', 'https://www.hotcars.com/feed/category/motorcycles/'), - #Hot Cars Exclusives + # Hot Cars Exclusives ('Hot Cars Exclusives', 'https://www.hotcars.com/feed/category/hotcars-exclusives/'), ('Car Reviews', 'https://www.hotcars.com/feed/category/car-reviews/'), ('Car Guides', 'https://www.hotcars.com/feed/category/car-guides/'), ('Car Renders', 'https://www.hotcars.com/feed/category/car-renders/'), ('Hot Cars Awards', 'https://www.hotcars.com/feed/category/hotcars-awards/'), - #Car Culture + # Car Culture ('News', 'https://www.hotcars.com/feed/category/news/'), ('JDM Life', 'https://www.hotcars.com/feed/category/jdm-life/'), ('Car TV', 'https://www.hotcars.com/feed/category/cars-on-tv/'), diff --git a/recipes/howtogeek.recipe b/recipes/howtogeek.recipe index c60ee2d90d..abf1297e6a 100644 --- a/recipes/howtogeek.recipe +++ b/recipes/howtogeek.recipe @@ -20,18 +20,18 @@ class AdvancedUserRecipe1716091656(BasicNewsRecipe): auto_cleanup = True feeds = [ - #Desktop + # Desktop ('Desktop', 'https://www.howtogeek.com/feed/category/desktop/'), ('Windows', 'https://www.howtogeek.com/feed/category/windows/'), ('Mac', 'https://www.howtogeek.com/feed/category/mac/'), ('Linux', 'https://www.howtogeek.com/feed/category/linux/'), ('Chromebook', 'https://www.howtogeek.com/feed/category/chromebook-chrome-os/'), - #Mobile + # Mobile ('Mobile', 'https://www.howtogeek.com/feed/category/mobile/'), ('Android', 'https://www.howtogeek.com/feed/category/android/'), ('iOS', 'https://www.howtogeek.com/feed/tag/ios/'), ('Cellular Carriers', 'https://www.howtogeek.com/feed/category/cellular-carriers/'), - #Hardware + # Hardware ('Hardware', 'https://www.howtogeek.com/feed/category/hardware/'), ('Computer Hardware', 'https://www.howtogeek.com/feed/category/hardware/'), ('Wifi & Networking', 'https://www.howtogeek.com/feed/category/wifi-routers/'), @@ -39,7 +39,7 @@ class AdvancedUserRecipe1716091656(BasicNewsRecipe): ('eReaders', 'https://www.howtogeek.com/feed/category/ereaders/'), ('Audio', 'https://www.howtogeek.com/feed/category/audio/'), ('Televisions', 'https://www.howtogeek.com/feed/category/tv/'), - #Web + # Web ('Web', 'https://www.howtogeek.com/feed/category/web/'), ('Web Apps', 'https://www.howtogeek.com/feed/category/apps-web-apps/'), ('Social Media', 'https://www.howtogeek.com/feed/category/social-media/'), @@ -48,11 +48,11 @@ class AdvancedUserRecipe1716091656(BasicNewsRecipe): ('Google', 'https://www.howtogeek.com/feed/category/google/'), ('Microsoft', 'https://www.howtogeek.com/feed/category/microsoft/'), ('Privacy & Security', 'https://www.howtogeek.com/feed/category/privacy-security/'), - #Cutting Edge + # Cutting Edge ('Cutting Edge', 'https://www.howtogeek.com/feed/category/cutting-edge/'), ('Virtual Reality', 'https://www.howtogeek.com/feed/category/virtual-reality/'), ('AI & Machine Learning', 'https://www.howtogeek.com/feed/category/ai-machine-learning/'), - #Lifestyle + # Lifestyle ('Lifestyle', 'https://www.howtogeek.com/feed/category/lifestyle/'), ('Gaming', 'https://www.howtogeek.com/feed/category/video-games/'), ('Streaming', 'https://www.howtogeek.com/feed/category/cord-cutting-streaming/'), @@ -63,7 +63,7 @@ class AdvancedUserRecipe1716091656(BasicNewsRecipe): ('Buying Guides', 'https://www.howtogeek.com/feed/buying-guides/'), ('Deals', 'https://www.howtogeek.com/feed/tag/deals/'), - #Discontinued Feeds - #('Electric Vehicles', 'https://www.howtogeek.com/feed/category/electric-vehicles/'), - #('Cryptocurrency', 'https://www.howtogeek.com/feed/category/cryptocurrency/'), + # Discontinued Feeds + # ('Electric Vehicles', 'https://www.howtogeek.com/feed/category/electric-vehicles/'), + # ('Cryptocurrency', 'https://www.howtogeek.com/feed/category/cryptocurrency/'), ] diff --git a/recipes/lex_fridman_podcast.recipe b/recipes/lex_fridman_podcast.recipe index 8dfb25a5c2..fee8031d49 100644 --- a/recipes/lex_fridman_podcast.recipe +++ b/recipes/lex_fridman_podcast.recipe @@ -10,7 +10,7 @@ class lexfridman(BasicNewsRecipe): 'philosophy and the nature of intelligence, consciousness, love, and power. Lex is an AI ' 'researcher at MIT and beyond. Download monthly.' ) - oldest_article = 30 # days + oldest_article = 30 # days __author__ = 'unkn0wn' language = 'en' encoding = 'utf-8' diff --git a/recipes/make_use_of.recipe b/recipes/make_use_of.recipe index 50cfae3de3..3546197709 100644 --- a/recipes/make_use_of.recipe +++ b/recipes/make_use_of.recipe @@ -20,28 +20,28 @@ class AdvancedUserRecipe1716102924(BasicNewsRecipe): auto_cleanup = True feeds = [ - #PC & Mobile + # PC & Mobile ('PC & Mobile', 'https://www.makeuseof.com/feed/category/pc-mobile/'), ('Windows', 'https://www.makeuseof.com/feed/category/windows/'), ('Mac', 'https://www.makeuseof.com/feed/category/mac/'), ('Linux', 'https://www.makeuseof.com/feed/category/linux/'), ('Android', 'https://www.makeuseof.com/feed/category/google-android/'), ('iOS', 'https://www.makeuseof.com/feed/category/ios/'), - #Internet + # Internet ('Internet', 'https://www.makeuseof.com/feed/category/web-based/'), ('Social Media', 'https://www.makeuseof.com/feed/category/social-media/'), ('Security', 'https://www.makeuseof.com/feed/category/security/'), ('Programming', 'https://www.makeuseof.com/feed/category/programming/'), - #Productivity + # Productivity ('Productivity', 'https://www.makeuseof.com/feed/category/productivity/'), ('Creative', 'https://www.makeuseof.com/feed/category/creative/'), ('DIY', 'https://www.makeuseof.com/feed/category/diy-projects/'), - #Lifestyle + # Lifestyle ('Lifestyle', 'https://www.makeuseof.com/feed/category/lifestyle/'), ('Smart Home', 'https://www.makeuseof.com/feed/category/smart-home/'), ('Gaming', 'https://www.makeuseof.com/feed/category/games/'), ('Entertainment', 'https://www.makeuseof.com/feed/category/entertainment/'), - #Technology Explained + # Technology Explained ('Technology Explained', 'https://www.makeuseof.com/feed/category/technology-explained/'), ('Artificial Intelligence', 'https://www.makeuseof.com/feed/tag/artificial-intelligence/'), ('Tech Jargon', 'https://www.makeuseof.com/feed/tag/pc-jargon-terminology/'), diff --git a/recipes/mediapart.recipe b/recipes/mediapart.recipe index 166cea0044..a69df9fb41 100644 --- a/recipes/mediapart.recipe +++ b/recipes/mediapart.recipe @@ -65,7 +65,7 @@ class Mediapart(BasicNewsRecipe): url = e.hdrs.get('location') soup = self.index_to_soup(url) link = soup.find('a', href=True) - skip_sections =[ # add sections you want to skip + skip_sections =[ # add sections you want to skip '/video/', '/videos/', '/media/' ] if any(x in link['href'] for x in skip_sections): diff --git a/recipes/moneycontrol.recipe b/recipes/moneycontrol.recipe index 98d7c15350..68f422a475 100644 --- a/recipes/moneycontrol.recipe +++ b/recipes/moneycontrol.recipe @@ -16,7 +16,7 @@ class MoneyControlRecipe(BasicNewsRecipe): ignore_duplicate_articles = {'title', 'url'} remove_empty_feeds = True resolve_internal_links = True - oldest_article = 1 # days + oldest_article = 1 # days extra_css = ''' img {display:block; margin:0 auto;} diff --git a/recipes/movie_web.recipe b/recipes/movie_web.recipe index bf6231e896..6030346cdf 100644 --- a/recipes/movie_web.recipe +++ b/recipes/movie_web.recipe @@ -23,20 +23,20 @@ class AdvancedUserRecipe1716109041(BasicNewsRecipe): auto_cleanup = True feeds = [ - #News feeds + # News feeds ('Trailers', 'https://movieweb.com/feed/trailers/'), ('Movie News', 'https://movieweb.com/feed/movie-news/'), ('TV News', 'https://movieweb.com/feed/tv-news/'), ('Marvel Cinematic Universe News', 'https://movieweb.com/feed/mcu-news/'), ('DC Universe News', 'https://movieweb.com/feed/tag/dcu-news/'), - #Genre feeds + # Genre feeds ('Action', 'https://movieweb.com/feed/tag/action/'), ('Comedy', 'https://movieweb.com/feed/tag/comedy/'), ('Fantasy', 'https://movieweb.com/feed/tag/fantasy/'), ('Horror', 'https://movieweb.com/feed/tag/horror/'), ('Sci-Fi', 'https://movieweb.com/feed/tag/sci-fi/'), ('Western', 'https://movieweb.com/feed/tag/western/'), - #What to Watch feeds + # What to Watch feeds ('Apple TV+', 'https://movieweb.com/feed/tag/apple-tv-plus/'), ('Criterion Collection', 'https://movieweb.com/feed/tag/criterion-collection/'), ('Disney+', 'https://movieweb.com/feed/tag/disney-plus/'), diff --git a/recipes/new_yorker.recipe b/recipes/new_yorker.recipe index 4b4ee666a0..5a9c5f84df 100644 --- a/recipes/new_yorker.recipe +++ b/recipes/new_yorker.recipe @@ -49,7 +49,7 @@ class NewYorker(BasicNewsRecipe): remove_attributes = ['style'] def preprocess_html(self, soup): - w = '/w_320' # use '/w_640' for highres + w = '/w_320' # use '/w_640' for highres for img in soup.findAll('img'): if img.has_attr('srcset'): for x in img['srcset'].split(): diff --git a/recipes/newslaundry.recipe b/recipes/newslaundry.recipe index 4fe4cf6996..3e317aaff0 100644 --- a/recipes/newslaundry.recipe +++ b/recipes/newslaundry.recipe @@ -14,7 +14,7 @@ class newslaundry(BasicNewsRecipe): encoding = 'utf-8' no_stylesheets = True remove_javascript = True - oldest_article = 7 # days + oldest_article = 7 # days resolve_internal_links = True ignore_duplicate_articles = {'url'} @@ -34,5 +34,5 @@ class newslaundry(BasicNewsRecipe): def print_version(self, url): if 'hindi.newslaundry' in url: - self.abort_article('Skipping hindi article') # remove this line if you want hindi articles. + self.abort_article('Skipping hindi article') # remove this line if you want hindi articles. return url diff --git a/recipes/pocket_lint.recipe b/recipes/pocket_lint.recipe index c63562d2f3..f50b023b59 100644 --- a/recipes/pocket_lint.recipe +++ b/recipes/pocket_lint.recipe @@ -20,12 +20,12 @@ class AdvancedUserRecipe1718387215(BasicNewsRecipe): auto_cleanup = True feeds = [ - #Segments + # Segments ('Devices', 'https://www.pocket-lint.com/feed/devices-segment/'), ('Entertainment', 'https://www.pocket-lint.com/feed/entertainment-segment/'), ('Lifestyle', 'https://www.pocket-lint.com/feed/lifestyle-segment/'), ('Audio Video', 'https://www.pocket-lint.com/feed/audio-video-segment/'), - #Segments + # Segments ('News', 'https://www.pocket-lint.com/feed/news/'), ('Features', 'https://www.pocket-lint.com/feed/features/'), ('Editorials', 'https://www.pocket-lint.com/feed/editorials/'), @@ -33,13 +33,13 @@ class AdvancedUserRecipe1718387215(BasicNewsRecipe): ('Lists', 'https://www.pocket-lint.com/feed/lists/'), ('Guides', 'https://www.pocket-lint.com/feed/guides/'), ('Hubs', 'https://www.pocket-lint.com/feed/hubs/'), - #Best Products + # Best Products ('Reviews', 'https://www.pocket-lint.com/feed/reviews/'), ('Buyer’s Guides', 'https://www.pocket-lint.com/feed/buyers-guides/'), ('Comparisons', 'https://www.pocket-lint.com/feed/comparisons/'), ('Gift Guides', 'https://www.pocket-lint.com/feed/gift-guides/'), ('Deals', 'https://www.pocket-lint.com/feed/deals/'), - #Topics + # Topics ('Apps', 'https://www.pocket-lint.com/feed/apps/'), ('Augmented Reality & Virtual Reality', 'https://www.pocket-lint.com/feed/ar-vr/'), ('Cameras', 'https://www.pocket-lint.com/feed/cameras/'), diff --git a/recipes/poliitico_eu.recipe b/recipes/poliitico_eu.recipe index 44f4e9f484..666dfcae67 100644 --- a/recipes/poliitico_eu.recipe +++ b/recipes/poliitico_eu.recipe @@ -19,7 +19,7 @@ class Politico(BasicNewsRecipe): ' intelligence about European politics and policy. Download Weekly.') publisher = 'Axel Springer SE.' category = 'news, politics, Europe' - oldest_article = 7 # days + oldest_article = 7 # days max_articles_per_feed = 20 use_embedded_content = False no_stylesheets = True diff --git a/recipes/pro_physik.recipe b/recipes/pro_physik.recipe index 869f5f0462..bf5848ae69 100644 --- a/recipes/pro_physik.recipe +++ b/recipes/pro_physik.recipe @@ -45,7 +45,7 @@ class AdvancedUserRecipe1303841067(BasicNewsRecipe): ] remove_tags = [ - dict(name='ul', attrs={'class':['wj-share-buttons']}), #Block social media + dict(name='ul', attrs={'class':['wj-share-buttons']}), # Block social media ] feeds = [ diff --git a/recipes/project_syndicate.recipe b/recipes/project_syndicate.recipe index 0bd7caac26..c44114e424 100644 --- a/recipes/project_syndicate.recipe +++ b/recipes/project_syndicate.recipe @@ -24,7 +24,7 @@ class projectsynd(BasicNewsRecipe): resolve_internal_links = True remove_empty_feeds = True remove_attributes = ['style', 'height', 'width'] - oldest_article = 7 # days + oldest_article = 7 # days storage = [] articles_are_obfuscated = True diff --git a/recipes/radio_canada.recipe b/recipes/radio_canada.recipe index 844a19b67d..dfe2235c04 100644 --- a/recipes/radio_canada.recipe +++ b/recipes/radio_canada.recipe @@ -48,28 +48,28 @@ class RadioCanada(BasicNewsRecipe): ''' keep_only_tags = [ - classes('text-fluid1' # title - ' group/signature' # author (top) - ' sc-jbo7hw-6 cemuXe sc-1ejcmnj-0 bKbDpQ' # whole article block - ' sc-jbo7hw-4 gPWroG' # individual paragraphs - ' sc-jbo7hw-3 GgmiC' # section title (h2 headings) - ' sc-1tkrlyq-0 sc-1tkrlyq-1 eJZZNJ dthPak sc-1fmq1ly-0 hGSCGE' # images - ' sc-1tkrlyq-2 gucMx transition-opacity ease-out' # images - ' sc-ic6be9-0 eZGuin' # figure/picture caption + classes('text-fluid1' # title + ' group/signature' # author (top) + ' sc-jbo7hw-6 cemuXe sc-1ejcmnj-0 bKbDpQ' # whole article block + ' sc-jbo7hw-4 gPWroG' # individual paragraphs + ' sc-jbo7hw-3 GgmiC' # section title (h2 headings) + ' sc-1tkrlyq-0 sc-1tkrlyq-1 eJZZNJ dthPak sc-1fmq1ly-0 hGSCGE' # images + ' sc-1tkrlyq-2 gucMx transition-opacity ease-out' # images + ' sc-ic6be9-0 eZGuin' # figure/picture caption ' blockquote' ), ] remove_tags = [ - classes('print:hidden' # whatever is deemed not necessary while printing - ' xsOnly:hidden' # whetever is deemed not necessary on very small screens - ' sc-jbo7hw-0 dQmOIK' # ads - ' sc-1f1cagl-0 hvyKh' # buttons? (full-screen, contact author) - ' sc-jbo7hw-2' # link to full dossier and insights - ' sc-fqkvVR crilYZ rcplayer-show' # video player - ' framed' # "À lire aussi" (might be desirable in some cases?) - ' bg-gray100 light:bg-gray100 dark:bg-gray999 lg:mt-10 print:hidden' # "À la une" (links to other current events) and more - ' sc-pahfbg-0 beUHeC' # Infolettre + classes('print:hidden' # whatever is deemed not necessary while printing + ' xsOnly:hidden' # whetever is deemed not necessary on very small screens + ' sc-jbo7hw-0 dQmOIK' # ads + ' sc-1f1cagl-0 hvyKh' # buttons? (full-screen, contact author) + ' sc-jbo7hw-2' # link to full dossier and insights + ' sc-fqkvVR crilYZ rcplayer-show' # video player + ' framed' # "À lire aussi" (might be desirable in some cases?) + ' bg-gray100 light:bg-gray100 dark:bg-gray999 lg:mt-10 print:hidden' # "À la une" (links to other current events) and more + ' sc-pahfbg-0 beUHeC' # Infolettre ), dict(name='aside') ] diff --git a/recipes/rnd.recipe b/recipes/rnd.recipe index 92cea1b3f2..e4ac4c3647 100644 --- a/recipes/rnd.recipe +++ b/recipes/rnd.recipe @@ -63,20 +63,20 @@ class RND(BasicNewsRecipe): ('Wirtschaft', 'https://www.rnd.de/arc/outboundfeeds/rss/category/wirtschaft/'), ('Sport', 'https://www.rnd.de/arc/outboundfeeds/rss/category/sport/'), ('Panorama', 'https://www.rnd.de/arc/outboundfeeds/rss/category/panorama/'), - #('Promis', 'https://www.rnd.de/arc/outboundfeeds/rss/category/promis/'), - #('Reise', 'https://www.rnd.de/arc/outboundfeeds/rss/category/reise/'), - #('Medien', 'https://www.rnd.de/arc/outboundfeeds/rss/category/medien/'), - #('Digital', 'https://www.rnd.de/arc/outboundfeeds/rss/category/digital/'), - #('Kultur', 'https://www.rnd.de/arc/outboundfeeds/rss/category/kultur/'), - #('Wissen', 'https://www.rnd.de/arc/outboundfeeds/rss/category/wissen/'), - #('Familie', 'https://www.rnd.de/arc/outboundfeeds/rss/category/familie/'), - #('Gesundheit', 'https://www.rnd.de/arc/outboundfeeds/rss/category/gesundheit/'), - #('Lifestyle', 'https://www.rnd.de/arc/outboundfeeds/rss/category/lifestyle/'), - #('Bauen & Wohnen', 'https://www.rnd.de/arc/outboundfeeds/rss/category/bauen-und-wohnen/'), - #('Geld & Finanzen', 'https://www.rnd.de/arc/outboundfeeds/rss/category/geld-und-finanzen/'), - #('Liebe & Partnerschaft', 'https://www.rnd.de/arc/outboundfeeds/rss/category/liebe-und-partnerschaft/'), - #('Beruf & Bildung', 'https://www.rnd.de/arc/outboundfeeds/rss/category/beruf-und-bildung/'), - #('E-Mobility', 'https://www.rnd.de/arc/outboundfeeds/rss/category/e-mobility/') + # ('Promis', 'https://www.rnd.de/arc/outboundfeeds/rss/category/promis/'), + # ('Reise', 'https://www.rnd.de/arc/outboundfeeds/rss/category/reise/'), + # ('Medien', 'https://www.rnd.de/arc/outboundfeeds/rss/category/medien/'), + # ('Digital', 'https://www.rnd.de/arc/outboundfeeds/rss/category/digital/'), + # ('Kultur', 'https://www.rnd.de/arc/outboundfeeds/rss/category/kultur/'), + # ('Wissen', 'https://www.rnd.de/arc/outboundfeeds/rss/category/wissen/'), + # ('Familie', 'https://www.rnd.de/arc/outboundfeeds/rss/category/familie/'), + # ('Gesundheit', 'https://www.rnd.de/arc/outboundfeeds/rss/category/gesundheit/'), + # ('Lifestyle', 'https://www.rnd.de/arc/outboundfeeds/rss/category/lifestyle/'), + # ('Bauen & Wohnen', 'https://www.rnd.de/arc/outboundfeeds/rss/category/bauen-und-wohnen/'), + # ('Geld & Finanzen', 'https://www.rnd.de/arc/outboundfeeds/rss/category/geld-und-finanzen/'), + # ('Liebe & Partnerschaft', 'https://www.rnd.de/arc/outboundfeeds/rss/category/liebe-und-partnerschaft/'), + # ('Beruf & Bildung', 'https://www.rnd.de/arc/outboundfeeds/rss/category/beruf-und-bildung/'), + # ('E-Mobility', 'https://www.rnd.de/arc/outboundfeeds/rss/category/e-mobility/') ] def parse_feeds(self): @@ -116,5 +116,5 @@ class RND(BasicNewsRecipe): for keyword in unwanted_article_keywords: if keyword in raw: print('Skipping unwanted article with keyword(s):',keyword) - #self.abort_article('Skipping unwanted article') + # self.abort_article('Skipping unwanted article') return raw diff --git a/recipes/saechsische.recipe b/recipes/saechsische.recipe index b7b875e39f..c08d238395 100644 --- a/recipes/saechsische.recipe +++ b/recipes/saechsische.recipe @@ -60,137 +60,137 @@ class Saechsische(BasicNewsRecipe): ] feeds = [ - #('Alle Artikel der SZ', 'https://www.saechsische.de/arc/outboundfeeds/rss/'), + # ('Alle Artikel der SZ', 'https://www.saechsische.de/arc/outboundfeeds/rss/'), ('Stadt Dresden', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden'), - #('Altstadt', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/altstadt'), - #('Blasewitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/blasewitz'), - #('Cotta', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/cotta'), - #('Klotzsche', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/klotzsche'), - #('Leuben', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/leuben'), - #('Loschwitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/loschwitz'), - #('Neustadt', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/neustadt'), - #('Pieschen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/pieschen'), - #('Plauen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/plauen'), - #('Prohlis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/prohlis'), - #('Cossebaude', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/cossebaude'), - #('Langebrück', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/langebrueck'), - #('Gompitz/Altfranken', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/gompitz-altfranken'), - #('Weixdorf', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/weixdorf'), - #('Schönfeld-Weißig', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/schoenfeld-weissig'), - #('Landkreis Bautzen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk'), - #('Stadt Bautzen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/bautzen'), - #('Bischofswerda', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/bischofswerda'), - #('Kamenz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/kamenz'), - #('Pulsnitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/pulsnitz'), - #('Radeberg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/radeberg'), - #('Hoyerswerda', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/hoyerswerda'), - #('Bernsdorf', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/bernsdorf'), - #('Großröhrsdorf', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/grossroehrsdorf'), - #('Lauta', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/lauta'), - #('Schirgiswalde-Kirschau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/schirgiswalde-kirschau'), - #('Wittichenau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/wittichenau'), - #('Landkreis Görlitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk'), - #('Stadt Görlitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/goerlitz'), - #('Niesky', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/niesky'), - #('Löbau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/loebau'), - #('Zittau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/zittau'), - #('Ostritz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/ostritz'), - #('Rothenburg/Oberlausitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/rothenburg'), - #('Zittauer Gebirge', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/zittauer-gebirge'), - #('Vierkirchen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/vierkirchen'), - #('Bad Muskau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/bad-muskau'), - #('Weißwasser', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/weisswasser'), - #('Boxberg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/boxberg'), - #('Ebersbach-Neugersdorf', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/ebersbach-neugersdorf'), - #('Kodersdorf', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/kodersdorf'), - #('Landkreis Sächsische Schweiz-Osterzgebirge', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge'), - #('Pirna', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/pirna'), - #('Sebnitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/sebnitz'), - #('Bad Schandau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/bad-schandau'), - #('Bad Gottleuba-Berggießhübel', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/bad-gottleuba-berggiesshuebel'), - #('Heidenau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/heidenau'), - #('Dippoldiswalde', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/dippoldiswalde'), - #('Altenberg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/altenberg'), - #('Freital', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/freital'), - #('Stolpen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/stolpen'), - #('Glashütte', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/glashuette'), - #('Wilsdruff', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/wilsdruff'), - #('Neustadt in Sachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/neustadt-in-sachsen'), - #('Landkreis Meißen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk'), - #('Meißen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/meissen'), - #('Radebeul', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/radebeul'), - #('Riesa', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/riesa'), - #('Großenhain', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/grossenhain'), - #('Nossen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/nossen'), - #('Lommatzsch', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/lommatzsch'), - #('Radeburg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/radeburg'), - #('Königsbrücker Heide', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/koenigsbruecker-heide'), - #('Weinböhla', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/weinboehla'), - #('Moritzburg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/moritzburg'), - #('Coswig', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/coswig'), - #('Gröditz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/groeditz'), - #('Klipphausen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/klipphausen'), - #('Landkreis Mittelsachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen'), - #('Döbeln', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/doebeln'), - #('Freiberg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/freiberg'), - #('Mittweida', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/mittweida'), - #('Leisnig', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/leisnig'), - #('Waldheim', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/waldheim'), - #('Frankenberg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/frankenberg'), - #('Großschirma', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/grossschirma'), - #('Hainichen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/hainichen'), - #('Augustusburg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/augustusburg'), - #('Jahnatal', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/jahnatal'), - #('Landkreis Zwickau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/zwickau-lk'), - #('Stadt Leipzig', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/leipzig'), - #('Chemnitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/chemnitz'), - #('Landkreis Nordsachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/nordsachsen'), - #('Landkreis Leipzig', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/leipzig-lk'), - #('Erzgebirgskreis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/erzgebirgskreis'), - #('Annaberg-Buchholz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/erzgebirgskreis/annaberg-buchholz'), - #('Seiffen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/erzgebirgskreis/seiffen'), - #('Vogtlandkreis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/vogtland'), - #('Plauen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/vogtland/plauen'), - #('Tschechien', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/tschechien'), + # ('Altstadt', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/altstadt'), + # ('Blasewitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/blasewitz'), + # ('Cotta', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/cotta'), + # ('Klotzsche', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/klotzsche'), + # ('Leuben', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/leuben'), + # ('Loschwitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/loschwitz'), + # ('Neustadt', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/neustadt'), + # ('Pieschen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/pieschen'), + # ('Plauen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/plauen'), + # ('Prohlis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/prohlis'), + # ('Cossebaude', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/cossebaude'), + # ('Langebrück', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/langebrueck'), + # ('Gompitz/Altfranken', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/gompitz-altfranken'), + # ('Weixdorf', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/weixdorf'), + # ('Schönfeld-Weißig', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/schoenfeld-weissig'), + # ('Landkreis Bautzen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk'), + # ('Stadt Bautzen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/bautzen'), + # ('Bischofswerda', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/bischofswerda'), + # ('Kamenz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/kamenz'), + # ('Pulsnitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/pulsnitz'), + # ('Radeberg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/radeberg'), + # ('Hoyerswerda', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/hoyerswerda'), + # ('Bernsdorf', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/bernsdorf'), + # ('Großröhrsdorf', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/grossroehrsdorf'), + # ('Lauta', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/lauta'), + # ('Schirgiswalde-Kirschau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/schirgiswalde-kirschau'), + # ('Wittichenau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/bautzen-lk/wittichenau'), + # ('Landkreis Görlitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk'), + # ('Stadt Görlitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/goerlitz'), + # ('Niesky', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/niesky'), + # ('Löbau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/loebau'), + # ('Zittau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/zittau'), + # ('Ostritz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/ostritz'), + # ('Rothenburg/Oberlausitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/rothenburg'), + # ('Zittauer Gebirge', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/zittauer-gebirge'), + # ('Vierkirchen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/vierkirchen'), + # ('Bad Muskau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/bad-muskau'), + # ('Weißwasser', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/weisswasser'), + # ('Boxberg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/boxberg'), + # ('Ebersbach-Neugersdorf', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/ebersbach-neugersdorf'), + # ('Kodersdorf', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/goerlitz-lk/kodersdorf'), + # ('Landkreis Sächsische Schweiz-Osterzgebirge', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge'), + # ('Pirna', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/pirna'), + # ('Sebnitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/sebnitz'), + # ('Bad Schandau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/bad-schandau'), + # ('Bad Gottleuba-Berggießhübel', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/bad-gottleuba-berggiesshuebel'), + # ('Heidenau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/heidenau'), + # ('Dippoldiswalde', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/dippoldiswalde'), + # ('Altenberg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/altenberg'), + # ('Freital', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/freital'), + # ('Stolpen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/stolpen'), + # ('Glashütte', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/glashuette'), + # ('Wilsdruff', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/wilsdruff'), + # ('Neustadt in Sachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/saechsische-schweiz-osterzgebirge/neustadt-in-sachsen'), + # ('Landkreis Meißen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk'), + # ('Meißen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/meissen'), + # ('Radebeul', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/radebeul'), + # ('Riesa', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/riesa'), + # ('Großenhain', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/grossenhain'), + # ('Nossen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/nossen'), + # ('Lommatzsch', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/lommatzsch'), + # ('Radeburg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/radeburg'), + # ('Königsbrücker Heide', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/koenigsbruecker-heide'), + # ('Weinböhla', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/weinboehla'), + # ('Moritzburg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/moritzburg'), + # ('Coswig', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/coswig'), + # ('Gröditz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/groeditz'), + # ('Klipphausen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/meissen-lk/klipphausen'), + # ('Landkreis Mittelsachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen'), + # ('Döbeln', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/doebeln'), + # ('Freiberg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/freiberg'), + # ('Mittweida', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/mittweida'), + # ('Leisnig', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/leisnig'), + # ('Waldheim', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/waldheim'), + # ('Frankenberg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/frankenberg'), + # ('Großschirma', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/grossschirma'), + # ('Hainichen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/hainichen'), + # ('Augustusburg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/augustusburg'), + # ('Jahnatal', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/jahnatal'), + # ('Landkreis Zwickau', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/zwickau-lk'), + # ('Stadt Leipzig', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/leipzig'), + # ('Chemnitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/chemnitz'), + # ('Landkreis Nordsachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/nordsachsen'), + # ('Landkreis Leipzig', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/leipzig-lk'), + # ('Erzgebirgskreis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/erzgebirgskreis'), + # ('Annaberg-Buchholz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/erzgebirgskreis/annaberg-buchholz'), + # ('Seiffen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/erzgebirgskreis/seiffen'), + # ('Vogtlandkreis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/vogtland'), + # ('Plauen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/vogtland/plauen'), + # ('Tschechien', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/tschechien'), ('Sachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/sachsen'), - #('Der Osten', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/der-osten'), - #('Politik in Sachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/politik/regional'), - #('Wirtschaft in Sachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/wirtschaft/regional'), - #('Sport in Sachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/sport/regional'), - #('Dynamo Dresden', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/dynamo-dresden'), - #('Outdoor in Sachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/outdoor-in-sachsen'), - #('Autobahn 17 (A17)', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/autobahn-17-(a17)'), - #('Autobahn 4 (A4)', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/autobahn-4-(a4)'), - #('Autobahn 72 (A72)', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/autobahn-72-(a72)'), - #('Autobahn 9 (A9)', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/autobahn-9-(a9)'), - #('Bundesstraße 170 (B170)', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/bundesstrasse-170-(b170)'), - #('Bundesstraße 178 (B178)', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/bundesstrasse-178-(b178)'), - #('Bundesstraße 96 (B96)', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/bundesstrasse-96-(b96)'), - #('Erzgebirge', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/erzgebirge'), - #('Sachsen Freizeit', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/sachsen-freizeit'), - #('Sachsen Gastronomie', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/sachsen-gastronomie'), - #('Genuss und Kochen', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/genuss-und-kochen'), - #('Sächsische Schweiz', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/saechsische-schweiz'), - #('Sachsenkompass', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/sachsenkompass'), + # ('Der Osten', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/der-osten'), + # ('Politik in Sachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/politik/regional'), + # ('Wirtschaft in Sachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/wirtschaft/regional'), + # ('Sport in Sachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/sport/regional'), + # ('Dynamo Dresden', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/dynamo-dresden'), + # ('Outdoor in Sachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/outdoor-in-sachsen'), + # ('Autobahn 17 (A17)', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/autobahn-17-(a17)'), + # ('Autobahn 4 (A4)', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/autobahn-4-(a4)'), + # ('Autobahn 72 (A72)', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/autobahn-72-(a72)'), + # ('Autobahn 9 (A9)', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/autobahn-9-(a9)'), + # ('Bundesstraße 170 (B170)', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/bundesstrasse-170-(b170)'), + # ('Bundesstraße 178 (B178)', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/bundesstrasse-178-(b178)'), + # ('Bundesstraße 96 (B96)', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/bundesstrasse-96-(b96)'), + # ('Erzgebirge', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/erzgebirge'), + # ('Sachsen Freizeit', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/sachsen-freizeit'), + # ('Sachsen Gastronomie', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/sachsen-gastronomie'), + # ('Genuss und Kochen', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/genuss-und-kochen'), + # ('Sächsische Schweiz', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/saechsische-schweiz'), + # ('Sachsenkompass', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/sachsenkompass'), ('Politik', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/politik'), ('Wirtschaft', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/wirtschaft'), - #('Sport', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/sport'), + # ('Sport', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/sport'), ('Panorama', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/panorama'), - #('Promis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/promis'), - #('Reise', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/reise'), - #('Medien & TV', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/medien'), - #('Digital', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/digital'), - #('Kultur', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/kultur'), - #('Wissen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/wissen'), - #('Familie', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/familie'), - #('Gesundheit', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/gesundheit'), - #('Lifestyle', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lifestyle'), - #('Mobilität', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/mobilitaet'), - #('Bauen & Wohnen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/bauen-und-wohnen'), - #('Geld & Finanzen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/geld-und-finanzen'), - #('Liebe & Partnerschaft', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/liebe-und-partnerschaft'), - #('E-Mobility', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/e-mobility'), - #('Beruf & Bildung', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/beruf-und-bildung') + # ('Promis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/promis'), + # ('Reise', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/reise'), + # ('Medien & TV', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/medien'), + # ('Digital', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/digital'), + # ('Kultur', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/kultur'), + # ('Wissen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/wissen'), + # ('Familie', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/familie'), + # ('Gesundheit', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/gesundheit'), + # ('Lifestyle', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lifestyle'), + # ('Mobilität', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/mobilitaet'), + # ('Bauen & Wohnen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/bauen-und-wohnen'), + # ('Geld & Finanzen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/geld-und-finanzen'), + # ('Liebe & Partnerschaft', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/liebe-und-partnerschaft'), + # ('E-Mobility', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/e-mobility'), + # ('Beruf & Bildung', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/beruf-und-bildung') ] def parse_feeds(self): @@ -230,5 +230,5 @@ class Saechsische(BasicNewsRecipe): for keyword in unwanted_article_keywords: if keyword in raw: print('Skipping unwanted article with keyword(s):',keyword) - #self.abort_article('Skipping unwanted article') + # self.abort_article('Skipping unwanted article') return raw diff --git a/recipes/salon.recipe b/recipes/salon.recipe index 93a41fa9ef..f72c628c3a 100644 --- a/recipes/salon.recipe +++ b/recipes/salon.recipe @@ -21,8 +21,8 @@ class Salon_com(BasicNewsRecipe): oldest_article = 7 max_articles_per_feed = 100 no_stylesheets = True - #auto_cleanup = True - #auto_cleanup_keep = '//div[@id="image-id"]' + # auto_cleanup = True + # auto_cleanup_keep = '//div[@id="image-id"]' ignore_duplicate_articles = {'title', 'url'} remove_empty_feeds = True @@ -40,14 +40,14 @@ class Salon_com(BasicNewsRecipe): remove_attributes = ['lang', 'style'] feeds = [ - #('News', 'http://www.salon.com/category/news/feed/rss/'), - #('Politics', 'http://www.salon.com/category/politics/feed/rss/'), - #('Business', 'http://www.salon.com/category/business/feed/rss/'), - #('Technology', 'http://www.salon.com/category/technology/feed/rss/'), - #('Innovation', 'http://www.salon.com/category/innovation/feed/rss/'), - #('Sustainability', 'http://www.salon.com/category/sustainability/feed/rss/'), - #('Entertainment', 'http://www.salon.com/category/entertainment/feed/rss/'), - #('Life', 'http://www.salon.com/category/life/feed/rss/'), + # ('News', 'http://www.salon.com/category/news/feed/rss/'), + # ('Politics', 'http://www.salon.com/category/politics/feed/rss/'), + # ('Business', 'http://www.salon.com/category/business/feed/rss/'), + # ('Technology', 'http://www.salon.com/category/technology/feed/rss/'), + # ('Innovation', 'http://www.salon.com/category/innovation/feed/rss/'), + # ('Sustainability', 'http://www.salon.com/category/sustainability/feed/rss/'), + # ('Entertainment', 'http://www.salon.com/category/entertainment/feed/rss/'), + # ('Life', 'http://www.salon.com/category/life/feed/rss/'), # ('News and Politics', 'https://www.salon.com/category/news-and-politics/feed'), ('Culture', 'http://www.salon.com/category/culture/feed/'), diff --git a/recipes/science_x.recipe b/recipes/science_x.recipe index 1ae4dc8b07..bf3d72ae80 100644 --- a/recipes/science_x.recipe +++ b/recipes/science_x.recipe @@ -16,7 +16,7 @@ class scix(BasicNewsRecipe): ) language = 'en' __author__ = 'unkn0wn' - oldest_article = 1 # days + oldest_article = 1 # days max_articles_per_feed = 50 encoding = 'utf-8' remove_attributes = ['height', 'width'] @@ -51,8 +51,8 @@ class scix(BasicNewsRecipe): ('Tech Xplore', 'https://techxplore.com/rss-feed/'), ('Medical Xpress', 'https://medicalxpress.com/rss-feed/'), ('Phys.org', 'https://phys.org/rss-feed/') - #https://medicalxpress.com/feeds/ - #https://techxplore.com/feeds/ + # https://medicalxpress.com/feeds/ + # https://techxplore.com/feeds/ ] def preprocess_html(self, soup): diff --git a/recipes/simple_flying.recipe b/recipes/simple_flying.recipe index 542bad9823..1afe3a84be 100644 --- a/recipes/simple_flying.recipe +++ b/recipes/simple_flying.recipe @@ -24,17 +24,17 @@ class AdvancedUserRecipe1718370158(BasicNewsRecipe): auto_cleanup = True feeds = [ - #Features + # Features ('Analysis', 'https://simpleflying.com/feed/category/analysis/'), ('History', 'https://simpleflying.com/feed/category/history/'), ('Exclusives', 'https://simpleflying.com/feed/category/exclusives/'), - #By Region + # By Region ('Asia', 'https://simpleflying.com/feed/category/asia/'), ('Europe', 'https://simpleflying.com/feed/category/europe/'), ('North America', 'https://simpleflying.com/feed/category/north-america/'), ('Africa', 'https://simpleflying.com/feed/category/africa/'), ('Rest of World', 'https://simpleflying.com/feed/category/rest-of-world/'), - #Travel + # Travel ('Trip Reports', 'https://simpleflying.com/feed/category/trip-reports/'), ('Passanger Experience', 'https://simpleflying.com/feed/category/passenger-experience/'), diff --git a/recipes/techcrunch.recipe b/recipes/techcrunch.recipe index 22e91777b8..d58f36efc2 100644 --- a/recipes/techcrunch.recipe +++ b/recipes/techcrunch.recipe @@ -18,7 +18,7 @@ class AdvancedUserRecipe1718089036(BasicNewsRecipe): feeds = [ ('TechCrunch', 'https://techcrunch.com/feed/'), - #Categories + # Categories ('Apps', 'https://techcrunch.com/category/apps/feed/'), ('Artificial Intelligence', 'https://techcrunch.com/category/artificial-intelligence/feed/'), ('Biotech', 'https://techcrunch.com/category/biotech-health/feed/'), @@ -41,7 +41,7 @@ class AdvancedUserRecipe1718089036(BasicNewsRecipe): ('Tech Policy & Government', 'https://techcrunch.com/category/government-policy/feed/'), ('Transportation', 'https://techcrunch.com/category/transportation/feed/'), ('Venture Capital', 'https://techcrunch.com/category/venture/feed/'), - #Tags + # Tags ('Amazon', 'https://techcrunch.com/tag/amazon/feed/'), ('Apple', 'https://techcrunch.com/tag/apple/feed/'), ('Cloud Computing', 'https://techcrunch.com/tag/cloud-computing/feed/'), @@ -52,6 +52,6 @@ class AdvancedUserRecipe1718089036(BasicNewsRecipe): ('Meta', 'https://techcrunch.com/tag/meta/feed/'), ('Microsoft', 'https://techcrunch.com/tag/microsoft/feed/'), ('TikTok', 'https://techcrunch.com/tag/tiktok/feed/'), - #Other + # Other ('Events Archive', 'https://techcrunch.com/events/feed/'), ] diff --git a/recipes/the_gamer.recipe b/recipes/the_gamer.recipe index 3e5acc747d..187ea4eade 100644 --- a/recipes/the_gamer.recipe +++ b/recipes/the_gamer.recipe @@ -21,26 +21,26 @@ class AdvancedUserRecipe1718109535(BasicNewsRecipe): feeds = [ ('Game Guides', 'https://www.thegamer.com/feed/category/game-guides/'), - #AAA Games + # AAA Games ('AAA Games', 'https://www.thegamer.com/feed/aaa-games/'), ('AAA Games Features', 'https://www.thegamer.com/feed/aaa-games/features/'), ('AAA Games News', 'https://www.thegamer.com/feed/aaa-games/news/'), ('AAA Games Lists', 'https://www.thegamer.com/feed/aaa-games/lists/'), - #Live-Service Games + # Live-Service Games ('Live-Service Games', 'https://www.thegamer.com/feed/live-service-games/'), ('Live-Service Games Features', 'https://www.thegamer.com/feed/live-service-games/features/'), ('Live-Service Games News', 'https://www.thegamer.com/feed/live-service-games/news/'), ('Live-Service Games Lists', 'https://www.thegamer.com/feed/live-service-games/lists/'), - #Indie Games + # Indie Games ('Indie Games', 'https://www.thegamer.com/feed/indie-games/'), ('Indie Games Features', 'https://www.thegamer.com/feed/indie-games/features/'), ('Indie Games News', 'https://www.thegamer.com/feed/indie-games/news/'), ('Indie Games Lists', 'https://www.thegamer.com/feed/indie-games/lists/'), - #Streaming + # Streaming ('Streaming', 'https://www.thegamer.com/feed/streaming/'), ('Streaming Features', 'https://www.thegamer.com/feed/streaming/features/'), ('Streaming News', 'https://www.thegamer.com/feed/streaming/news/'), - #Movies & Shows + # Movies & Shows ('Movies & Shows', 'https://www.thegamer.com/feed/movies-tv-anime/'), ('Movies & Shows Features', 'https://www.thegamer.com/feed/movies-tv-anime/features/'), ('Movies & Shows News', 'https://www.thegamer.com/feed/movies-tv-anime/news/'), diff --git a/recipes/the_sportster.recipe b/recipes/the_sportster.recipe index 3b8574dad3..6d6b9e8222 100644 --- a/recipes/the_sportster.recipe +++ b/recipes/the_sportster.recipe @@ -23,14 +23,14 @@ class AdvancedUserRecipe1718381004(BasicNewsRecipe): auto_cleanup = True feeds = [ - #WWE + # WWE ('World Wrestling Entertainment', 'https://www.thesportster.com/feed/category/wwe/'), ('WWE News', 'https://www.thesportster.com/feed/category/news/'), ('WWE Lists', 'https://www.thesportster.com/feed/category/wrestling/'), ('WWE Real American Wrestling', 'https://www.thesportster.com/feed/category/wwe-raw/'), ('WWE SmackDown', 'https://www.thesportster.com/feed/category/wwe-smackdown/'), ('WWE NXT', 'https://www.thesportster.com/feed/category/wwe-nxt/'), - #AEW + # AEW ('All Elite Wrestling', 'https://www.thesportster.com/feed/category/aew/'), ('AEW News', 'https://www.thesportster.com/feed/category/news/'), ('AEW Lists', 'https://www.thesportster.com/feed/category/wrestling/'), diff --git a/recipes/the_things.recipe b/recipes/the_things.recipe index 7798ccd2e1..7ab7b35b89 100644 --- a/recipes/the_things.recipe +++ b/recipes/the_things.recipe @@ -23,7 +23,7 @@ class AdvancedUserRecipe1718105400(BasicNewsRecipe): auto_cleanup = True feeds = [ - #Celebrity + # Celebrity ('Celebrity', 'https://www.thethings.com/feed/category/celebrity/'), ('Celebrity News', 'https://www.thethings.com/feed/category/celebrity-news/'), diff --git a/recipes/theoldie.recipe b/recipes/theoldie.recipe index 009f04297c..a97eb8fd34 100644 --- a/recipes/theoldie.recipe +++ b/recipes/theoldie.recipe @@ -90,7 +90,7 @@ class PrivateEyeRecipe(BasicNewsRecipe): # oldie links/headings often contain the author (in one of various formats # 1. Title. By author - #.2. Title by author: subtitle + # .2. Title by author: subtitle # 3. Title: author: subtitle title_author_re = re.compile(r'^(.*?)(?:(?: by )|(?:: ))(.*?): (.*?)$') @@ -212,7 +212,7 @@ class PrivateEyeRecipe(BasicNewsRecipe): r'(?<=[^\.\s])\s*
\s*',
re.DOTALL | re.IGNORECASE
),
- lambda match: ' ' # space
+ lambda match: ' ' # space
),
]
diff --git a/recipes/toiprint.recipe b/recipes/toiprint.recipe
index e610205a95..33deae3573 100644
--- a/recipes/toiprint.recipe
+++ b/recipes/toiprint.recipe
@@ -9,7 +9,7 @@ from calibre.web.feeds.news import BasicNewsRecipe
# Chennai - 'toich'; Chandigarh - 'toicgct'; Jaipur - 'toijc'; Kolkata - 'toikc';
# There are others too, try to figure it out, visit toi epaper link.
-le = 'cap' # local edition;
+le = 'cap' # local edition;
date0 = date.today().strftime('%Y/%m/%d')
diff --git a/recipes/top_speed.recipe b/recipes/top_speed.recipe
index eecc208219..a31a257763 100644
--- a/recipes/top_speed.recipe
+++ b/recipes/top_speed.recipe
@@ -22,10 +22,10 @@ class AdvancedUserRecipe1718128185(BasicNewsRecipe):
auto_cleanup = True
feeds = [
- #News feeds
+ # News feeds
('Car News', 'https://www.topspeed.com/feed/category/car-news/'),
('Motorcycle News', 'https://www.topspeed.com/feed/category/motorcycle-news/'),
- #Guides & Reviews feeds
+ # Guides & Reviews feeds
('Car Reviews', 'https://www.topspeed.com/feed/category/car-reviews/'),
('Vehicle Comparisons', 'https://www.topspeed.com/feed/category/vehicle-comparisons/'),
('Car Guides', 'https://www.topspeed.com/feed/category/car-guides/'),
diff --git a/recipes/ua_fooball.recipe b/recipes/ua_fooball.recipe
index 34a1c26ac8..ce015c67dc 100644
--- a/recipes/ua_fooball.recipe
+++ b/recipes/ua_fooball.recipe
@@ -6,14 +6,14 @@ from calibre.web.feeds.news import BasicNewsRecipe
class UAFootball(BasicNewsRecipe):
-#Russian version
+# Russian version
# title = 'UA-\u0424\u0443\u0442\u0431\u043E\u043B'
# language = 'ru_UK'
# feeds = [
# ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438 \u0444\u0443\u0442\u0431\u043E\u043B\u0430', 'https://www.ua-football.com/rss/all.xml')
# ]
-#Ukrainian version
+# Ukrainian version
title = 'UA-\u0424\u0443\u0442\u0431\u043E\u043B'
description = ('\u0410\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u0456 \u0442\u0435\u043C\u0438'
' \u0444\u0443\u0442\u0431\u043E\u043B\u044C\u043D\u043E\u0433\u043E'
diff --git a/recipes/wsj_news.recipe b/recipes/wsj_news.recipe
index 47777dcb7e..d5a9d3e1e8 100644
--- a/recipes/wsj_news.recipe
+++ b/recipes/wsj_news.recipe
@@ -25,7 +25,7 @@ class WSJ(BasicNewsRecipe):
resolve_internal_links = True
ignore_duplicate_articles = {'url', 'title'}
remove_empty_feeds = True
- oldest_article = 1.2 # days
+ oldest_article = 1.2 # days
recipe_specific_options = {
'days': {
diff --git a/recipes/xda.recipe b/recipes/xda.recipe
index 1a6ba8445e..2da3acbe79 100644
--- a/recipes/xda.recipe
+++ b/recipes/xda.recipe
@@ -22,11 +22,11 @@ class AdvancedUserRecipe1718385916(BasicNewsRecipe):
auto_cleanup = True
feeds = [
- #News & Deals
+ # News & Deals
('News', 'https://www.xda-developers.com/feed/news/'),
('Computing News', 'https://www.xda-developers.com/feed/category/computing-news/'),
('Today’s Deals', 'https://www.xda-developers.com/feed/deals/'),
- #Reviews
+ # Reviews
('Reviews', 'https://www.xda-developers.com/feed/reviews/'),
('Laptop Reviews', 'https://www.xda-developers.com/feed/category/computing-reviews/'),
('CPU Reviews', 'https://www.xda-developers.com/feed/cpu-reviews/'),
@@ -34,9 +34,9 @@ class AdvancedUserRecipe1718385916(BasicNewsRecipe):
('SSD Reviews', 'https://www.xda-developers.com/feed/ssd-reviews/'),
('Phone Reviews', 'https://www.xda-developers.com/feed/phone-reviews/'),
('XDA’s Product Review Awards', 'https://www.xda-developers.com/feed/awards/'),
- #Best Guides
+ # Best Guides
("Buyer's Guides", 'https://www.xda-developers.com/feed/buying-guides/'),
- #Tutorials
+ # Tutorials
('Tutorials', 'https://www.xda-developers.com/feed/tutorials/'),
('Windows Tutorials', 'https://www.xda-developers.com/feed/windows-tutorials/'),
('MacOS Tutorials', 'https://www.xda-developers.com/feed/macos-tutorials/'),
diff --git a/ruff-strict-pep8.toml b/ruff-strict-pep8.toml
index b91df15ec7..4aca737742 100644
--- a/ruff-strict-pep8.toml
+++ b/ruff-strict-pep8.toml
@@ -38,6 +38,7 @@ select = [
'RUF047', # needless else
'E302', 'E303', 'E304', 'E305', 'W391', # blank-line standard
'E111', 'E112', 'E113', 'E117', # code indentation
+ 'E114', 'E115', 'E116', 'E261', 'E262', 'E265', # comment formating
]
[lint.per-file-ignores]
@@ -45,8 +46,10 @@ select = [
"manual/plugin_examples/*" = ['UP']
"setup/commands.py" = ['RUF022']
"src/calibre/*" = ['UP031']
+"src/calibre/devices/kobo/driver.py" = ['E116']
"src/calibre/ebooks/unihandecode/*codepoints.py" = ['E501']
"src/calibre/ebooks/metadata/sources/*" = ['UP']
+"src/calibre/ebooks/pdf/reflow.py" = ['E114']
"src/calibre/gui2/store/stores/*" = ['UP']
"src/calibre/gui2/tts/manager.py" = ['UP037']
"src/calibre/utils/copy_files.py" = ['UP037']
diff --git a/src/calibre/db/constants.py b/src/calibre/db/constants.py
index 2c5fccb3b0..0e9aee7cb0 100644
--- a/src/calibre/db/constants.py
+++ b/src/calibre/db/constants.py
@@ -14,7 +14,7 @@ DATA_DIR_NAME = 'data'
DATA_FILE_PATTERN = f'{DATA_DIR_NAME}/**/*'
BOOK_ID_PATH_TEMPLATE = ' ({})'
RESOURCE_URL_SCHEME = 'calres'
-TEMPLATE_ICON_INDICATOR = ' template ' # Item values cannot start or end with space
+TEMPLATE_ICON_INDICATOR = ' template ' # Item values cannot start or end with space
@dataclass
diff --git a/src/calibre/db/utils.py b/src/calibre/db/utils.py
index 16fbcc45c1..b79fc38bde 100644
--- a/src/calibre/db/utils.py
+++ b/src/calibre/db/utils.py
@@ -115,8 +115,8 @@ class ThumbnailCache:
thumbnail_size=(100, 100), # The size of the thumbnails, can be changed
location=None, # The location for this cache, if None cache_dir() is used
test_mode=False, # Used for testing
- min_disk_cache=0, # If the size is set less than or equal to this value, the cache is disabled.
- version=0 # Increase this if the cache content format might have changed.
+ min_disk_cache=0, # If the size is set less than or equal to this value, the cache is disabled.
+ version=0 # Increase this if the cache content format might have changed.
):
self.version = version
self.location = os.path.join(location or cache_dir(), name)
diff --git a/src/calibre/devices/kobo/driver.py b/src/calibre/devices/kobo/driver.py
index 04ddb8d84e..8f51273b38 100644
--- a/src/calibre/devices/kobo/driver.py
+++ b/src/calibre/devices/kobo/driver.py
@@ -1414,7 +1414,7 @@ class KOBOTOUCH(KOBO):
min_dbversion_keywords = 82
min_dbversion_seriesid = 136
min_dbversion_bookstats = 168
- min_dbversion_real_bools = 188 # newer (tolino) 5.x fw uses 0 and 1 as boolean values
+ min_dbversion_real_bools = 188 # newer (tolino) 5.x fw uses 0 and 1 as boolean values
# Starting with firmware version 3.19.x, the last number appears to be is a
# build number. A number will be recorded here but it can be safely ignored
@@ -1443,9 +1443,9 @@ class KOBOTOUCH(KOBO):
min_clara2e_fwversion = (4, 33, 19759)
min_fwversion_audiobooks = (4, 29, 18730)
min_fwversion_bookstats = (4, 32, 19501)
- min_clarabw_fwversion = (4, 39, 22801) # not sure whether needed
- min_claracolor_fwversion = (4, 39, 22801) # not sure whether needed
- min_libracolor_fwversion = (4, 39, 22801) # not sure whether needed
+ min_clarabw_fwversion = (4, 39, 22801) # not sure whether needed
+ min_claracolor_fwversion = (4, 39, 22801) # not sure whether needed
+ min_libracolor_fwversion = (4, 39, 22801) # not sure whether needed
has_kepubs = True
diff --git a/src/calibre/ebooks/oeb/polish/tts.py b/src/calibre/ebooks/oeb/polish/tts.py
index 60bdef228d..b78ff24596 100644
--- a/src/calibre/ebooks/oeb/polish/tts.py
+++ b/src/calibre/ebooks/oeb/polish/tts.py
@@ -220,7 +220,7 @@ def mark_sentences_in_html(root, lang: str = '', voice: str = '') -> list[Senten
end_offset = len(self.texts[-1].text)
assert start_chunk > -1
s, e = self.texts[start_chunk], self.texts[end_chunk]
- if s.child is None: # start in leading text of parent element
+ if s.child is None: # start in leading text of parent element
if e is s: # end also in leading text of parent element
before, sentence, after = s.text[:start_offset], s.text[start_offset:end_offset], s.text[end_offset:]
self.elem.text = before
diff --git a/src/calibre/ebooks/pdf/reflow.py b/src/calibre/ebooks/pdf/reflow.py
index 4586a0ff74..5080fe997e 100644
--- a/src/calibre/ebooks/pdf/reflow.py
+++ b/src/calibre/ebooks/pdf/reflow.py
@@ -236,7 +236,7 @@ class Text(Element):
# Or assume any gap = a space?
if (self.top <= other.top and self.bottom >= other.bottom) \
and abs(other.left - self.right) < 2.0:
- #and abs(other.left - self.right) < self.average_character_width / 3.0:
+ # and abs(other.left - self.right) < self.average_character_width / 3.0:
has_gap = 0
else: # Insert n spaces to fill gap. Use TAB? Columns?
if other.left < self.right:
@@ -318,7 +318,7 @@ class Text(Element):
and other.right > right_margin - right_margin * RIGHT_FLOAT_FACTOR:
has_float = ''
has_gap = 1
- #else leave has_gap
+ # else leave has_gap
old_float = re.match(r'^(.*)(.*)\s*$', self.raw)
if old_float:
# There is already a float as parts of a line are near the right.
@@ -336,11 +336,11 @@ class Text(Element):
self.text_as_string += ' '
self.raw += ' '
self.width += self.average_character_width
- #self.final_width += self.average_character_width
+ # self.final_width += self.average_character_width
has_gap -= 1
self.text_as_string += other.text_as_string
- #self.width += other.width
+ # self.width += other.width
# Try to merge href where there are 2 for the same place
# Beware multiple hrefs on the same line, but for different places
@@ -372,9 +372,9 @@ class Text(Element):
# Move the