comment formating (auto-fix)

ruff 'E114,E115,E116,E261,E262,E265'
This commit is contained in:
un-pogaz 2025-01-24 11:14:21 +01:00
parent 0b23eaf328
commit 19b9d979ab
76 changed files with 370 additions and 367 deletions

View File

@ -23,36 +23,36 @@ class AdvancedUserRecipe1718384518(BasicNewsRecipe):
auto_cleanup = True auto_cleanup = True
feeds = [ feeds = [
#Phones # Phones
('Phones', 'https://www.androidpolice.com/feed/phones/'), ('Phones', 'https://www.androidpolice.com/feed/phones/'),
('News about Phones', 'https://www.androidpolice.com/feed/phones-news/'), ('News about Phones', 'https://www.androidpolice.com/feed/phones-news/'),
('Guides about Phones', 'https://www.androidpolice.com/feed/phones-guide/'), ('Guides about Phones', 'https://www.androidpolice.com/feed/phones-guide/'),
('Phones Features', 'https://www.androidpolice.com/feed/phones-features/'), ('Phones Features', 'https://www.androidpolice.com/feed/phones-features/'),
('Phones & Accessory Reviews', 'https://www.androidpolice.com/feed/phones-reviews/'), ('Phones & Accessory Reviews', 'https://www.androidpolice.com/feed/phones-reviews/'),
#Google # Google
('Google', 'https://www.androidpolice.com/feed/google/'), ('Google', 'https://www.androidpolice.com/feed/google/'),
('News about Google', 'https://www.androidpolice.com/feed/news-google/'), ('News about Google', 'https://www.androidpolice.com/feed/news-google/'),
('Google Applications', 'https://www.androidpolice.com/feed/tag/google-app/'), ('Google Applications', 'https://www.androidpolice.com/feed/tag/google-app/'),
('Guides about Google', 'https://www.androidpolice.com/feed/guides-google/'), ('Guides about Google', 'https://www.androidpolice.com/feed/guides-google/'),
('Features about Google', 'https://www.androidpolice.com/feed/features-google/'), ('Features about Google', 'https://www.androidpolice.com/feed/features-google/'),
#Operating Systems # Operating Systems
('Operating Systems', 'https://www.androidpolice.com/feed/operating-systems/'), ('Operating Systems', 'https://www.androidpolice.com/feed/operating-systems/'),
('News about Operating Systems', 'https://www.androidpolice.com/feed/news-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/'), ('Guides about Operating Systems', 'https://www.androidpolice.com/feed/guides-operating-systems/'),
('Features on Operating Systems', 'https://www.androidpolice.com/feed/features-operating-systems/'), ('Features on Operating Systems', 'https://www.androidpolice.com/feed/features-operating-systems/'),
#Chromebooks # Chromebooks
('Chromebooks', 'https://www.androidpolice.com/feed/laptops/'), ('Chromebooks', 'https://www.androidpolice.com/feed/laptops/'),
('News about Chromebooks', 'https://www.androidpolice.com/feed/news-chromebooks/'), ('News about Chromebooks', 'https://www.androidpolice.com/feed/news-chromebooks/'),
('Guides about Chromebooks', 'https://www.androidpolice.com/feed/guides-chromebooks/'), ('Guides about Chromebooks', 'https://www.androidpolice.com/feed/guides-chromebooks/'),
('Chromebook & Laptop Reviews', 'https://www.androidpolice.com/feed/reviews-chromebooks/'), ('Chromebook & Laptop Reviews', 'https://www.androidpolice.com/feed/reviews-chromebooks/'),
#Gadgets # Gadgets
('Gadgets', 'https://www.androidpolice.com/feed/gadgets/'), ('Gadgets', 'https://www.androidpolice.com/feed/gadgets/'),
('Smartwatches & Wearables', 'https://www.androidpolice.com/feed/wearables/'), ('Smartwatches & Wearables', 'https://www.androidpolice.com/feed/wearables/'),
('Audio', 'https://www.androidpolice.com/feed/tag/audio/'), ('Audio', 'https://www.androidpolice.com/feed/tag/audio/'),
('Accessories', 'https://www.androidpolice.com/feed/accessories/'), ('Accessories', 'https://www.androidpolice.com/feed/accessories/'),
('Smart Home', 'https://www.androidpolice.com/feed/smart-home/'), ('Smart Home', 'https://www.androidpolice.com/feed/smart-home/'),
('Applications & Games', 'https://www.androidpolice.com/feed/applications-games/'), ('Applications & Games', 'https://www.androidpolice.com/feed/applications-games/'),
#Reviews # Reviews
('Reviews', 'https://www.androidpolice.com/feed/reviews/'), ('Reviews', 'https://www.androidpolice.com/feed/reviews/'),
('Phones & Accessory Reviews', 'https://www.androidpolice.com/feed/phones-reviews/'), ('Phones & Accessory Reviews', 'https://www.androidpolice.com/feed/phones-reviews/'),
('Smartwatch & Wearable Reviews', 'https://www.androidpolice.com/feed/wearable-reviews/'), ('Smartwatch & Wearable Reviews', 'https://www.androidpolice.com/feed/wearable-reviews/'),

View File

@ -22,21 +22,21 @@ class AdvancedUserRecipe1718382046(BasicNewsRecipe):
auto_cleanup = True auto_cleanup = True
feeds = [ feeds = [
#Gardening # Gardening
('Gardening', 'https://www.backyardboss.net/feed/category/gardening/'), ('Gardening', 'https://www.backyardboss.net/feed/category/gardening/'),
('Outdoor Gardening', 'https://www.backyardboss.net/feed/category/gardening/outdoor-gardening/'), ('Outdoor Gardening', 'https://www.backyardboss.net/feed/category/gardening/outdoor-gardening/'),
('Indoor Gardening', 'https://www.backyardboss.net/feed/category/gardening/indoor-gardening/'), ('Indoor Gardening', 'https://www.backyardboss.net/feed/category/gardening/indoor-gardening/'),
('Fruits & Vegetables', 'https://www.backyardboss.net/feed/tag/gardening/fruits-and-vegetables/'), ('Fruits & Vegetables', 'https://www.backyardboss.net/feed/tag/gardening/fruits-and-vegetables/'),
('Houseplants', 'https://www.backyardboss.net/feed/category/gardening/houseplants/'), ('Houseplants', 'https://www.backyardboss.net/feed/category/gardening/houseplants/'),
('Plant Care', 'https://www.backyardboss.net/feed/category/gardening/plant-care/'), ('Plant Care', 'https://www.backyardboss.net/feed/category/gardening/plant-care/'),
#Backyard # Backyard
('Backyard', 'https://www.backyardboss.net/feed/category/backyard/'), ('Backyard', 'https://www.backyardboss.net/feed/category/backyard/'),
('Home Improvement', 'https://www.backyardboss.net/feed/category/backyard/home-improvement/'), ('Home Improvement', 'https://www.backyardboss.net/feed/category/backyard/home-improvement/'),
('Lawn Care', 'https://www.backyardboss.net/feed/category/backyard/lawn-care/'), ('Lawn Care', 'https://www.backyardboss.net/feed/category/backyard/lawn-care/'),
('Landscaping', 'https://www.backyardboss.net/feed/category/backyard/landscape-industry/'), ('Landscaping', 'https://www.backyardboss.net/feed/category/backyard/landscape-industry/'),
('Barbecue', 'https://www.backyardboss.net/feed/category/backyard/bbq/'), ('Barbecue', 'https://www.backyardboss.net/feed/category/backyard/bbq/'),
('Reviews', 'https://www.backyardboss.net/feed/category/backyard/reviews/'), ('Reviews', 'https://www.backyardboss.net/feed/category/backyard/reviews/'),
#DIY & Project # DIY & Project
('DIY & Projects', 'https://www.backyardboss.net/feed/category/diy/'), ('DIY & Projects', 'https://www.backyardboss.net/feed/category/diy/'),
('How-To', 'https://www.backyardboss.net/feed/category/diy/how-to/'), ('How-To', 'https://www.backyardboss.net/feed/category/diy/how-to/'),
('Designs & Ideas', 'https://www.backyardboss.net/feed/category/diy/designs-and-ideas/'), ('Designs & Ideas', 'https://www.backyardboss.net/feed/category/diy/designs-and-ideas/'),

View File

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- 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 from calibre.web.feeds.news import BasicNewsRecipe
__license__ = 'GPL v3' __license__ = 'GPL v3'

View File

@ -14,8 +14,8 @@ class DRNyheder(BasicNewsRecipe):
('Udland', 'https://www.dr.dk/nyheder/service/feeds/udland'), ('Udland', 'https://www.dr.dk/nyheder/service/feeds/udland'),
('Penge', 'https://www.dr.dk/nyheder/service/feeds/penge'), ('Penge', 'https://www.dr.dk/nyheder/service/feeds/penge'),
('Politik', 'https://www.dr.dk/nyheder/service/feeds/politik'), ('Politik', 'https://www.dr.dk/nyheder/service/feeds/politik'),
#('Sporten', 'https://www.dr.dk/nyheder/service/feeds/sporten'), # ('Sporten', 'https://www.dr.dk/nyheder/service/feeds/sporten'),
#('Seneste sport', 'https://www.dr.dk/nyheder/service/feeds/senestesport'), # ('Seneste sport', 'https://www.dr.dk/nyheder/service/feeds/senestesport'),
('Viden', 'https://www.dr.dk/nyheder/service/feeds/viden'), ('Viden', 'https://www.dr.dk/nyheder/service/feeds/viden'),
('Kultur', 'https://www.dr.dk/nyheder/service/feeds/kultur'), ('Kultur', 'https://www.dr.dk/nyheder/service/feeds/kultur'),
('Musik', 'https://www.dr.dk/nyheder/service/feeds/musik'), ('Musik', 'https://www.dr.dk/nyheder/service/feeds/musik'),
@ -111,10 +111,10 @@ class DRNyheder(BasicNewsRecipe):
dict(name='figure', attrs={'class': 'dre-standard-article__figure'}), # Comment out to remove images 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='p', attrs={'class': 'dre-article-body-paragraph'}), # All body text of the article
dict(name='article', attrs={'itemtype': 'http://schema.org/NewsArticle'}), dict(name='article', attrs={'itemtype': 'http://schema.org/NewsArticle'}),
#dict(name="h1", attrs={'class': 'hydra-latest-news-page-short-news__title'}), # 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="p", attrs={'class': 'hydra-latest-news-page-short-news__paragraph'}),
#dict(name="div", attrs={'class': 'dre-speech'}), # dict(name="div", attrs={'class': 'dre-speech'}),
#dict(name="div", attrs={'itemprop': 'author'}) # dict(name="div", attrs={'itemprop': 'author'})
] ]
remove_tags = [ 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__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']}), 'hydra-latest-news-page-short-news__meta', 'hydra-latest-news-page-short-news__image-slider', 'dre-byline__dates']}),
dict(name='source'), dict(name='source'),
#dict(name='menu', attrs={'class': 'share'}), # dict(name='menu', attrs={'class': 'share'}),
#dict(name='menu', attrs={'class': 'dr-site-share-horizontal'}), # dict(name='menu', attrs={'class': 'dr-site-share-horizontal'}),
] ]
# Fixes images having the wrong aspect ratio # Fixes images having the wrong aspect ratio

View File

@ -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'}): 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')) div.insert_before(soup.new_tag('br'))
#format liveblogs # format liveblogs
for tag in soup.findAll('time'): for tag in soup.findAll('time'):
ntag = soup.new_tag('br') ntag = soup.new_tag('br')
tag.insert_before(ntag) tag.insert_before(ntag)
@ -209,7 +209,7 @@ class FazNet(BasicNewsRecipe):
if tag: if tag:
story(soup,tag) story(soup,tag)
#Extract images and text from image galleries # Extract images and text from image galleries
for par in soup.findAll('p'): for par in soup.findAll('p'):
if len(par.contents) == 1: if len(par.contents) == 1:
cont = str(par.contents[0]) cont = str(par.contents[0])
@ -260,7 +260,7 @@ class FazNet(BasicNewsRecipe):
def postprocess_html(self, soup, first_fetch): 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']}): for tag in soup.findAll(attrs={'class':['body-elements__image-figcaption','header-teaser__image-details']}):
if tag.string is None: if tag.string is None:
if tag.contents[0].string: if tag.contents[0].string:

View File

@ -20,13 +20,13 @@ class AdvancedUserRecipe1718373345(BasicNewsRecipe):
auto_cleanup = True auto_cleanup = True
feeds = [ feeds = [
#EURO 2024 # EURO 2024
('EURO 2024', 'https://www.footballfancast.com/feed/tag/euro-2024/'), ('EURO 2024', 'https://www.footballfancast.com/feed/tag/euro-2024/'),
('EURO England', 'https://www.footballfancast.com/feed/tag/england/'), ('EURO England', 'https://www.footballfancast.com/feed/tag/england/'),
('EURO Scotland', 'https://www.footballfancast.com/feed/tag/scotland/'), ('EURO Scotland', 'https://www.footballfancast.com/feed/tag/scotland/'),
('EURO Groups', 'https://www.footballfancast.com/feed/tag/euro-2024-groups/'), ('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/'), ('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/'), ('Transfer Focus', 'https://www.footballfancast.com/feed/tag/transfer-focus/'),
('Saudi Pro League', 'https://www.footballfancast.com/feed/tag/saudi-pro-league/'), ('Saudi Pro League', 'https://www.footballfancast.com/feed/tag/saudi-pro-league/'),
('Marcus Rashford', 'https://www.footballfancast.com/feed/tag/marcus-rashford/'), ('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/'), ('Michael Olise', 'https://www.footballfancast.com/feed/tag/michael-olise/'),
('Bruno Guimarães', 'https://www.footballfancast.com/feed/tag/bruno-guimaraes/'), ('Bruno Guimarães', 'https://www.footballfancast.com/feed/tag/bruno-guimaraes/'),
('Fabrizio Romano', 'https://www.footballfancast.com/feed/tag/fabrizio-romano/'), ('Fabrizio Romano', 'https://www.footballfancast.com/feed/tag/fabrizio-romano/'),
#Premier League # Premier League
('Premier League', 'https://www.footballfancast.com/feed/tag/premier-league/'), ('Premier League', 'https://www.footballfancast.com/feed/tag/premier-league/'),
('Arsenal', 'https://www.footballfancast.com/feed/tag/arsenal/'), ('Arsenal', 'https://www.footballfancast.com/feed/tag/arsenal/'),
('Aston Villa', 'https://www.footballfancast.com/feed/tag/aston-villa/'), ('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/'), ('Manchester United', 'https://www.footballfancast.com/feed/tag/manchester-united/'),
('Tottenham Hotspur', 'https://www.footballfancast.com/feed/tag/tottenham-hotspur/'), ('Tottenham Hotspur', 'https://www.footballfancast.com/feed/tag/tottenham-hotspur/'),
('West Ham United', 'https://www.footballfancast.com/feed/tag/west-ham-united/'), ('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/'), ('La Liga', 'https://www.footballfancast.com/feed/la-liga/'),
('Bundesliga', 'https://www.footballfancast.com/feed/bundesliga/'), ('Bundesliga', 'https://www.footballfancast.com/feed/bundesliga/'),
('Ligue 1', 'https://www.footballfancast.com/feed/ligue-1/'), ('Ligue 1', 'https://www.footballfancast.com/feed/ligue-1/'),
('Serie A', 'https://www.footballfancast.com/feed/serie-a/'), ('Serie A', 'https://www.footballfancast.com/feed/serie-a/'),
#Champions League # Champions League
('Champions League', 'https://www.footballfancast.com/feed/champions-league/'), ('Champions League', 'https://www.footballfancast.com/feed/champions-league/'),
('Real Madrid', 'https://www.footballfancast.com/feed/tag/real-madrid/'), ('Real Madrid', 'https://www.footballfancast.com/feed/tag/real-madrid/'),
('Barcelona', 'https://www.footballfancast.com/feed/tag/barcelona/'), ('Barcelona', 'https://www.footballfancast.com/feed/tag/barcelona/'),
('Bayern Munich', 'https://www.footballfancast.com/feed/tag/bayern-munich/'), ('Bayern Munich', 'https://www.footballfancast.com/feed/tag/bayern-munich/'),
('Paris Saint-Germain', 'https://www.footballfancast.com/feed/tag/psg/'), ('Paris Saint-Germain', 'https://www.footballfancast.com/feed/tag/psg/'),
('Europa League', 'https://www.footballfancast.com/feed/europa-league/'), ('Europa League', 'https://www.footballfancast.com/feed/europa-league/'),
#Europa League # Europa League
('ROMA', 'https://www.footballfancast.com/feed/tag/roma/'), ('ROMA', 'https://www.footballfancast.com/feed/tag/roma/'),
('Villarreal', 'https://www.footballfancast.com/feed/tag/villarreal/'), ('Villarreal', 'https://www.footballfancast.com/feed/tag/villarreal/'),

View File

@ -21,12 +21,12 @@ class AdvancedUserRecipe1718380039(BasicNewsRecipe):
auto_cleanup = True auto_cleanup = True
feeds = [ feeds = [
#Transfer Rumours # Transfer Rumours
('Transfer Rumours', 'https://footballleagueworld.co.uk/feed/transfer-rumours/'), ('Transfer Rumours', 'https://footballleagueworld.co.uk/feed/transfer-rumours/'),
('Alex Scott', 'https://footballleagueworld.co.uk/feed/tag/alex-scott/'), ('Alex Scott', 'https://footballleagueworld.co.uk/feed/tag/alex-scott/'),
('James Ward-Prowse', 'https://footballleagueworld.co.uk/feed/tag/james-ward-prowse/'), ('James Ward-Prowse', 'https://footballleagueworld.co.uk/feed/tag/james-ward-prowse/'),
('Wilfried Gnonto', 'https://footballleagueworld.co.uk/feed/wilfried-gnonto/'), ('Wilfried Gnonto', 'https://footballleagueworld.co.uk/feed/wilfried-gnonto/'),
#Championship # Championship
('Championship', 'https://footballleagueworld.co.uk/feed/championship/'), ('Championship', 'https://footballleagueworld.co.uk/feed/championship/'),
('Leeds United', 'https://footballleagueworld.co.uk/feed/tag/leeds-united/'), ('Leeds United', 'https://footballleagueworld.co.uk/feed/tag/leeds-united/'),
('Leicester City', 'https://footballleagueworld.co.uk/feed/tag/leicester-city/'), ('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/'), ('Southampton', 'https://footballleagueworld.co.uk/feed/tag/southampton/'),
('Sunderland', 'https://footballleagueworld.co.uk/feed/tag/sunderland/'), ('Sunderland', 'https://footballleagueworld.co.uk/feed/tag/sunderland/'),
('West Bromwich Albion', 'https://footballleagueworld.co.uk/feed/tag/west-bromwich-albion/'), ('West Bromwich Albion', 'https://footballleagueworld.co.uk/feed/tag/west-bromwich-albion/'),
#League One # League One
('Barnsley', 'https://footballleagueworld.co.uk/feed/tag/barnsley/'), ('Barnsley', 'https://footballleagueworld.co.uk/feed/tag/barnsley/'),
('Bolton Wanderers', 'https://footballleagueworld.co.uk/feed/tag/bolton-wanderers/'), ('Bolton Wanderers', 'https://footballleagueworld.co.uk/feed/tag/bolton-wanderers/'),
('Charlton Athletic', 'https://footballleagueworld.co.uk/feed/tag/charlton-athletic/'), ('Charlton Athletic', 'https://footballleagueworld.co.uk/feed/tag/charlton-athletic/'),
('Derby County', 'https://footballleagueworld.co.uk/feed/tag/derby-county/'), ('Derby County', 'https://footballleagueworld.co.uk/feed/tag/derby-county/'),
('Portsmouth', 'https://footballleagueworld.co.uk/feed/tag/portsmouth/'), ('Portsmouth', 'https://footballleagueworld.co.uk/feed/tag/portsmouth/'),
('Reading', 'https://footballleagueworld.co.uk/feed/tag/reading/'), ('Reading', 'https://footballleagueworld.co.uk/feed/tag/reading/'),
#League Two # League Two
('Bradford City', 'https://footballleagueworld.co.uk/feed/tag/bradford-city/'), ('Bradford City', 'https://footballleagueworld.co.uk/feed/tag/bradford-city/'),
('Gillingham', 'https://footballleagueworld.co.uk/feed/tag/gillingham/'), ('Gillingham', 'https://footballleagueworld.co.uk/feed/tag/gillingham/'),
('Notts County', 'https://footballleagueworld.co.uk/feed/tag/notts-county/'), ('Notts County', 'https://footballleagueworld.co.uk/feed/tag/notts-county/'),

View File

@ -24,14 +24,14 @@ class AdvancedUserRecipe1718106336(BasicNewsRecipe):
feeds = [ feeds = [
('Game News', 'https://gamerant.com/feed/gaming/'), ('Game News', 'https://gamerant.com/feed/gaming/'),
#Platforms # Platforms
('Platforms', 'https://gamerant.com/feed/platforms/'), ('Platforms', 'https://gamerant.com/feed/platforms/'),
('Playstation', 'https://gamerant.com/feed/tag/playstation/'), ('Playstation', 'https://gamerant.com/feed/tag/playstation/'),
('Xbox', 'https://gamerant.com/feed/tag/xbox/'), ('Xbox', 'https://gamerant.com/feed/tag/xbox/'),
('Nintendo', 'https://gamerant.com/feed/tag/nintendo/'), ('Nintendo', 'https://gamerant.com/feed/tag/nintendo/'),
('PC Gaming', 'https://gamerant.com/feed/tag/pc/'), ('PC Gaming', 'https://gamerant.com/feed/tag/pc/'),
('Mobile Gaming', 'https://gamerant.com/feed/tag/mobile/'), ('Mobile Gaming', 'https://gamerant.com/feed/tag/mobile/'),
#Game Rant Originals # Game Rant Originals
('Game Rant Originals', 'https://gamerant.com/feed/originals/'), ('Game Rant Originals', 'https://gamerant.com/feed/originals/'),
('Editorials', 'https://gamerant.com/feed/editorial/'), ('Editorials', 'https://gamerant.com/feed/editorial/'),
('Game Reviews', 'https://gamerant.com/feed/game-reviews/'), ('Game Reviews', 'https://gamerant.com/feed/game-reviews/'),

View File

@ -47,7 +47,7 @@ class horizons(BasicNewsRecipe):
url = d url = d
else: else:
soup = self.index_to_soup('https://www.cirsd.org/en/horizons') 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'] url = a['href']
if url.startswith('/'): if url.startswith('/'):
url = 'https://www.cirsd.org' + url url = 'https://www.cirsd.org' + url

View File

@ -23,7 +23,7 @@ class AdvancedUserRecipe1718126839(BasicNewsRecipe):
auto_cleanup = True auto_cleanup = True
feeds = [ feeds = [
#Car Types # Car Types
('Fast Cars', 'https://www.hotcars.com/feed/category/fast-cars/'), ('Fast Cars', 'https://www.hotcars.com/feed/category/fast-cars/'),
('Classic Cars', 'https://www.hotcars.com/feed/tag/classic-cars/'), ('Classic Cars', 'https://www.hotcars.com/feed/tag/classic-cars/'),
('Muscle Cars', 'https://www.hotcars.com/feed/category/muscle-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/'), ('Mass Market Cars', 'https://www.hotcars.com/feed/category/mass-market-cars/'),
('Luxury Cars', 'https://www.hotcars.com/feed/tag/luxury-cars/'), ('Luxury Cars', 'https://www.hotcars.com/feed/tag/luxury-cars/'),
('Motorcycles', 'https://www.hotcars.com/feed/category/motorcycles/'), ('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/'), ('Hot Cars Exclusives', 'https://www.hotcars.com/feed/category/hotcars-exclusives/'),
('Car Reviews', 'https://www.hotcars.com/feed/category/car-reviews/'), ('Car Reviews', 'https://www.hotcars.com/feed/category/car-reviews/'),
('Car Guides', 'https://www.hotcars.com/feed/category/car-guides/'), ('Car Guides', 'https://www.hotcars.com/feed/category/car-guides/'),
('Car Renders', 'https://www.hotcars.com/feed/category/car-renders/'), ('Car Renders', 'https://www.hotcars.com/feed/category/car-renders/'),
('Hot Cars Awards', 'https://www.hotcars.com/feed/category/hotcars-awards/'), ('Hot Cars Awards', 'https://www.hotcars.com/feed/category/hotcars-awards/'),
#Car Culture # Car Culture
('News', 'https://www.hotcars.com/feed/category/news/'), ('News', 'https://www.hotcars.com/feed/category/news/'),
('JDM Life', 'https://www.hotcars.com/feed/category/jdm-life/'), ('JDM Life', 'https://www.hotcars.com/feed/category/jdm-life/'),
('Car TV', 'https://www.hotcars.com/feed/category/cars-on-tv/'), ('Car TV', 'https://www.hotcars.com/feed/category/cars-on-tv/'),

View File

@ -20,18 +20,18 @@ class AdvancedUserRecipe1716091656(BasicNewsRecipe):
auto_cleanup = True auto_cleanup = True
feeds = [ feeds = [
#Desktop # Desktop
('Desktop', 'https://www.howtogeek.com/feed/category/desktop/'), ('Desktop', 'https://www.howtogeek.com/feed/category/desktop/'),
('Windows', 'https://www.howtogeek.com/feed/category/windows/'), ('Windows', 'https://www.howtogeek.com/feed/category/windows/'),
('Mac', 'https://www.howtogeek.com/feed/category/mac/'), ('Mac', 'https://www.howtogeek.com/feed/category/mac/'),
('Linux', 'https://www.howtogeek.com/feed/category/linux/'), ('Linux', 'https://www.howtogeek.com/feed/category/linux/'),
('Chromebook', 'https://www.howtogeek.com/feed/category/chromebook-chrome-os/'), ('Chromebook', 'https://www.howtogeek.com/feed/category/chromebook-chrome-os/'),
#Mobile # Mobile
('Mobile', 'https://www.howtogeek.com/feed/category/mobile/'), ('Mobile', 'https://www.howtogeek.com/feed/category/mobile/'),
('Android', 'https://www.howtogeek.com/feed/category/android/'), ('Android', 'https://www.howtogeek.com/feed/category/android/'),
('iOS', 'https://www.howtogeek.com/feed/tag/ios/'), ('iOS', 'https://www.howtogeek.com/feed/tag/ios/'),
('Cellular Carriers', 'https://www.howtogeek.com/feed/category/cellular-carriers/'), ('Cellular Carriers', 'https://www.howtogeek.com/feed/category/cellular-carriers/'),
#Hardware # Hardware
('Hardware', 'https://www.howtogeek.com/feed/category/hardware/'), ('Hardware', 'https://www.howtogeek.com/feed/category/hardware/'),
('Computer 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/'), ('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/'), ('eReaders', 'https://www.howtogeek.com/feed/category/ereaders/'),
('Audio', 'https://www.howtogeek.com/feed/category/audio/'), ('Audio', 'https://www.howtogeek.com/feed/category/audio/'),
('Televisions', 'https://www.howtogeek.com/feed/category/tv/'), ('Televisions', 'https://www.howtogeek.com/feed/category/tv/'),
#Web # Web
('Web', 'https://www.howtogeek.com/feed/category/web/'), ('Web', 'https://www.howtogeek.com/feed/category/web/'),
('Web Apps', 'https://www.howtogeek.com/feed/category/apps-web-apps/'), ('Web Apps', 'https://www.howtogeek.com/feed/category/apps-web-apps/'),
('Social Media', 'https://www.howtogeek.com/feed/category/social-media/'), ('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/'), ('Google', 'https://www.howtogeek.com/feed/category/google/'),
('Microsoft', 'https://www.howtogeek.com/feed/category/microsoft/'), ('Microsoft', 'https://www.howtogeek.com/feed/category/microsoft/'),
('Privacy & Security', 'https://www.howtogeek.com/feed/category/privacy-security/'), ('Privacy & Security', 'https://www.howtogeek.com/feed/category/privacy-security/'),
#Cutting Edge # Cutting Edge
('Cutting Edge', 'https://www.howtogeek.com/feed/category/cutting-edge/'), ('Cutting Edge', 'https://www.howtogeek.com/feed/category/cutting-edge/'),
('Virtual Reality', 'https://www.howtogeek.com/feed/category/virtual-reality/'), ('Virtual Reality', 'https://www.howtogeek.com/feed/category/virtual-reality/'),
('AI & Machine Learning', 'https://www.howtogeek.com/feed/category/ai-machine-learning/'), ('AI & Machine Learning', 'https://www.howtogeek.com/feed/category/ai-machine-learning/'),
#Lifestyle # Lifestyle
('Lifestyle', 'https://www.howtogeek.com/feed/category/lifestyle/'), ('Lifestyle', 'https://www.howtogeek.com/feed/category/lifestyle/'),
('Gaming', 'https://www.howtogeek.com/feed/category/video-games/'), ('Gaming', 'https://www.howtogeek.com/feed/category/video-games/'),
('Streaming', 'https://www.howtogeek.com/feed/category/cord-cutting-streaming/'), ('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/'), ('Buying Guides', 'https://www.howtogeek.com/feed/buying-guides/'),
('Deals', 'https://www.howtogeek.com/feed/tag/deals/'), ('Deals', 'https://www.howtogeek.com/feed/tag/deals/'),
#Discontinued Feeds # Discontinued Feeds
#('Electric Vehicles', 'https://www.howtogeek.com/feed/category/electric-vehicles/'), # ('Electric Vehicles', 'https://www.howtogeek.com/feed/category/electric-vehicles/'),
#('Cryptocurrency', 'https://www.howtogeek.com/feed/category/cryptocurrency/'), # ('Cryptocurrency', 'https://www.howtogeek.com/feed/category/cryptocurrency/'),
] ]

View File

@ -20,28 +20,28 @@ class AdvancedUserRecipe1716102924(BasicNewsRecipe):
auto_cleanup = True auto_cleanup = True
feeds = [ feeds = [
#PC & Mobile # PC & Mobile
('PC & Mobile', 'https://www.makeuseof.com/feed/category/pc-mobile/'), ('PC & Mobile', 'https://www.makeuseof.com/feed/category/pc-mobile/'),
('Windows', 'https://www.makeuseof.com/feed/category/windows/'), ('Windows', 'https://www.makeuseof.com/feed/category/windows/'),
('Mac', 'https://www.makeuseof.com/feed/category/mac/'), ('Mac', 'https://www.makeuseof.com/feed/category/mac/'),
('Linux', 'https://www.makeuseof.com/feed/category/linux/'), ('Linux', 'https://www.makeuseof.com/feed/category/linux/'),
('Android', 'https://www.makeuseof.com/feed/category/google-android/'), ('Android', 'https://www.makeuseof.com/feed/category/google-android/'),
('iOS', 'https://www.makeuseof.com/feed/category/ios/'), ('iOS', 'https://www.makeuseof.com/feed/category/ios/'),
#Internet # Internet
('Internet', 'https://www.makeuseof.com/feed/category/web-based/'), ('Internet', 'https://www.makeuseof.com/feed/category/web-based/'),
('Social Media', 'https://www.makeuseof.com/feed/category/social-media/'), ('Social Media', 'https://www.makeuseof.com/feed/category/social-media/'),
('Security', 'https://www.makeuseof.com/feed/category/security/'), ('Security', 'https://www.makeuseof.com/feed/category/security/'),
('Programming', 'https://www.makeuseof.com/feed/category/programming/'), ('Programming', 'https://www.makeuseof.com/feed/category/programming/'),
#Productivity # Productivity
('Productivity', 'https://www.makeuseof.com/feed/category/productivity/'), ('Productivity', 'https://www.makeuseof.com/feed/category/productivity/'),
('Creative', 'https://www.makeuseof.com/feed/category/creative/'), ('Creative', 'https://www.makeuseof.com/feed/category/creative/'),
('DIY', 'https://www.makeuseof.com/feed/category/diy-projects/'), ('DIY', 'https://www.makeuseof.com/feed/category/diy-projects/'),
#Lifestyle # Lifestyle
('Lifestyle', 'https://www.makeuseof.com/feed/category/lifestyle/'), ('Lifestyle', 'https://www.makeuseof.com/feed/category/lifestyle/'),
('Smart Home', 'https://www.makeuseof.com/feed/category/smart-home/'), ('Smart Home', 'https://www.makeuseof.com/feed/category/smart-home/'),
('Gaming', 'https://www.makeuseof.com/feed/category/games/'), ('Gaming', 'https://www.makeuseof.com/feed/category/games/'),
('Entertainment', 'https://www.makeuseof.com/feed/category/entertainment/'), ('Entertainment', 'https://www.makeuseof.com/feed/category/entertainment/'),
#Technology Explained # Technology Explained
('Technology Explained', 'https://www.makeuseof.com/feed/category/technology-explained/'), ('Technology Explained', 'https://www.makeuseof.com/feed/category/technology-explained/'),
('Artificial Intelligence', 'https://www.makeuseof.com/feed/tag/artificial-intelligence/'), ('Artificial Intelligence', 'https://www.makeuseof.com/feed/tag/artificial-intelligence/'),
('Tech Jargon', 'https://www.makeuseof.com/feed/tag/pc-jargon-terminology/'), ('Tech Jargon', 'https://www.makeuseof.com/feed/tag/pc-jargon-terminology/'),

View File

@ -23,20 +23,20 @@ class AdvancedUserRecipe1716109041(BasicNewsRecipe):
auto_cleanup = True auto_cleanup = True
feeds = [ feeds = [
#News feeds # News feeds
('Trailers', 'https://movieweb.com/feed/trailers/'), ('Trailers', 'https://movieweb.com/feed/trailers/'),
('Movie News', 'https://movieweb.com/feed/movie-news/'), ('Movie News', 'https://movieweb.com/feed/movie-news/'),
('TV News', 'https://movieweb.com/feed/tv-news/'), ('TV News', 'https://movieweb.com/feed/tv-news/'),
('Marvel Cinematic Universe News', 'https://movieweb.com/feed/mcu-news/'), ('Marvel Cinematic Universe News', 'https://movieweb.com/feed/mcu-news/'),
('DC Universe News', 'https://movieweb.com/feed/tag/dcu-news/'), ('DC Universe News', 'https://movieweb.com/feed/tag/dcu-news/'),
#Genre feeds # Genre feeds
('Action', 'https://movieweb.com/feed/tag/action/'), ('Action', 'https://movieweb.com/feed/tag/action/'),
('Comedy', 'https://movieweb.com/feed/tag/comedy/'), ('Comedy', 'https://movieweb.com/feed/tag/comedy/'),
('Fantasy', 'https://movieweb.com/feed/tag/fantasy/'), ('Fantasy', 'https://movieweb.com/feed/tag/fantasy/'),
('Horror', 'https://movieweb.com/feed/tag/horror/'), ('Horror', 'https://movieweb.com/feed/tag/horror/'),
('Sci-Fi', 'https://movieweb.com/feed/tag/sci-fi/'), ('Sci-Fi', 'https://movieweb.com/feed/tag/sci-fi/'),
('Western', 'https://movieweb.com/feed/tag/western/'), ('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/'), ('Apple TV+', 'https://movieweb.com/feed/tag/apple-tv-plus/'),
('Criterion Collection', 'https://movieweb.com/feed/tag/criterion-collection/'), ('Criterion Collection', 'https://movieweb.com/feed/tag/criterion-collection/'),
('Disney+', 'https://movieweb.com/feed/tag/disney-plus/'), ('Disney+', 'https://movieweb.com/feed/tag/disney-plus/'),

View File

@ -20,12 +20,12 @@ class AdvancedUserRecipe1718387215(BasicNewsRecipe):
auto_cleanup = True auto_cleanup = True
feeds = [ feeds = [
#Segments # Segments
('Devices', 'https://www.pocket-lint.com/feed/devices-segment/'), ('Devices', 'https://www.pocket-lint.com/feed/devices-segment/'),
('Entertainment', 'https://www.pocket-lint.com/feed/entertainment-segment/'), ('Entertainment', 'https://www.pocket-lint.com/feed/entertainment-segment/'),
('Lifestyle', 'https://www.pocket-lint.com/feed/lifestyle-segment/'), ('Lifestyle', 'https://www.pocket-lint.com/feed/lifestyle-segment/'),
('Audio Video', 'https://www.pocket-lint.com/feed/audio-video-segment/'), ('Audio Video', 'https://www.pocket-lint.com/feed/audio-video-segment/'),
#Segments # Segments
('News', 'https://www.pocket-lint.com/feed/news/'), ('News', 'https://www.pocket-lint.com/feed/news/'),
('Features', 'https://www.pocket-lint.com/feed/features/'), ('Features', 'https://www.pocket-lint.com/feed/features/'),
('Editorials', 'https://www.pocket-lint.com/feed/editorials/'), ('Editorials', 'https://www.pocket-lint.com/feed/editorials/'),
@ -33,13 +33,13 @@ class AdvancedUserRecipe1718387215(BasicNewsRecipe):
('Lists', 'https://www.pocket-lint.com/feed/lists/'), ('Lists', 'https://www.pocket-lint.com/feed/lists/'),
('Guides', 'https://www.pocket-lint.com/feed/guides/'), ('Guides', 'https://www.pocket-lint.com/feed/guides/'),
('Hubs', 'https://www.pocket-lint.com/feed/hubs/'), ('Hubs', 'https://www.pocket-lint.com/feed/hubs/'),
#Best Products # Best Products
('Reviews', 'https://www.pocket-lint.com/feed/reviews/'), ('Reviews', 'https://www.pocket-lint.com/feed/reviews/'),
('Buyers Guides', 'https://www.pocket-lint.com/feed/buyers-guides/'), ('Buyers Guides', 'https://www.pocket-lint.com/feed/buyers-guides/'),
('Comparisons', 'https://www.pocket-lint.com/feed/comparisons/'), ('Comparisons', 'https://www.pocket-lint.com/feed/comparisons/'),
('Gift Guides', 'https://www.pocket-lint.com/feed/gift-guides/'), ('Gift Guides', 'https://www.pocket-lint.com/feed/gift-guides/'),
('Deals', 'https://www.pocket-lint.com/feed/deals/'), ('Deals', 'https://www.pocket-lint.com/feed/deals/'),
#Topics # Topics
('Apps', 'https://www.pocket-lint.com/feed/apps/'), ('Apps', 'https://www.pocket-lint.com/feed/apps/'),
('Augmented Reality & Virtual Reality', 'https://www.pocket-lint.com/feed/ar-vr/'), ('Augmented Reality & Virtual Reality', 'https://www.pocket-lint.com/feed/ar-vr/'),
('Cameras', 'https://www.pocket-lint.com/feed/cameras/'), ('Cameras', 'https://www.pocket-lint.com/feed/cameras/'),

View File

@ -45,7 +45,7 @@ class AdvancedUserRecipe1303841067(BasicNewsRecipe):
] ]
remove_tags = [ 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 = [ feeds = [

View File

@ -63,20 +63,20 @@ class RND(BasicNewsRecipe):
('Wirtschaft', 'https://www.rnd.de/arc/outboundfeeds/rss/category/wirtschaft/'), ('Wirtschaft', 'https://www.rnd.de/arc/outboundfeeds/rss/category/wirtschaft/'),
('Sport', 'https://www.rnd.de/arc/outboundfeeds/rss/category/sport/'), ('Sport', 'https://www.rnd.de/arc/outboundfeeds/rss/category/sport/'),
('Panorama', 'https://www.rnd.de/arc/outboundfeeds/rss/category/panorama/'), ('Panorama', 'https://www.rnd.de/arc/outboundfeeds/rss/category/panorama/'),
#('Promis', 'https://www.rnd.de/arc/outboundfeeds/rss/category/promis/'), # ('Promis', 'https://www.rnd.de/arc/outboundfeeds/rss/category/promis/'),
#('Reise', 'https://www.rnd.de/arc/outboundfeeds/rss/category/reise/'), # ('Reise', 'https://www.rnd.de/arc/outboundfeeds/rss/category/reise/'),
#('Medien', 'https://www.rnd.de/arc/outboundfeeds/rss/category/medien/'), # ('Medien', 'https://www.rnd.de/arc/outboundfeeds/rss/category/medien/'),
#('Digital', 'https://www.rnd.de/arc/outboundfeeds/rss/category/digital/'), # ('Digital', 'https://www.rnd.de/arc/outboundfeeds/rss/category/digital/'),
#('Kultur', 'https://www.rnd.de/arc/outboundfeeds/rss/category/kultur/'), # ('Kultur', 'https://www.rnd.de/arc/outboundfeeds/rss/category/kultur/'),
#('Wissen', 'https://www.rnd.de/arc/outboundfeeds/rss/category/wissen/'), # ('Wissen', 'https://www.rnd.de/arc/outboundfeeds/rss/category/wissen/'),
#('Familie', 'https://www.rnd.de/arc/outboundfeeds/rss/category/familie/'), # ('Familie', 'https://www.rnd.de/arc/outboundfeeds/rss/category/familie/'),
#('Gesundheit', 'https://www.rnd.de/arc/outboundfeeds/rss/category/gesundheit/'), # ('Gesundheit', 'https://www.rnd.de/arc/outboundfeeds/rss/category/gesundheit/'),
#('Lifestyle', 'https://www.rnd.de/arc/outboundfeeds/rss/category/lifestyle/'), # ('Lifestyle', 'https://www.rnd.de/arc/outboundfeeds/rss/category/lifestyle/'),
#('Bauen & Wohnen', 'https://www.rnd.de/arc/outboundfeeds/rss/category/bauen-und-wohnen/'), # ('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/'), # ('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/'), # ('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/'), # ('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/') # ('E-Mobility', 'https://www.rnd.de/arc/outboundfeeds/rss/category/e-mobility/')
] ]
def parse_feeds(self): def parse_feeds(self):
@ -116,5 +116,5 @@ class RND(BasicNewsRecipe):
for keyword in unwanted_article_keywords: for keyword in unwanted_article_keywords:
if keyword in raw: if keyword in raw:
print('Skipping unwanted article with keyword(s):',keyword) print('Skipping unwanted article with keyword(s):',keyword)
#self.abort_article('Skipping unwanted article') # self.abort_article('Skipping unwanted article')
return raw return raw

View File

@ -60,137 +60,137 @@ class Saechsische(BasicNewsRecipe):
] ]
feeds = [ 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'), ('Stadt Dresden', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden'),
#('Altstadt', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/altstadt'), # ('Altstadt', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/altstadt'),
#('Blasewitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/blasewitz'), # ('Blasewitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/blasewitz'),
#('Cotta', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/cotta'), # ('Cotta', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/cotta'),
#('Klotzsche', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/klotzsche'), # ('Klotzsche', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/klotzsche'),
#('Leuben', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/leuben'), # ('Leuben', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/leuben'),
#('Loschwitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/loschwitz'), # ('Loschwitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/loschwitz'),
#('Neustadt', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/neustadt'), # ('Neustadt', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/neustadt'),
#('Pieschen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/pieschen'), # ('Pieschen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/pieschen'),
#('Plauen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/plauen'), # ('Plauen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/plauen'),
#('Prohlis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/prohlis'), # ('Prohlis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/prohlis'),
#('Cossebaude', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/dresden/cossebaude'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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 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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('Freiberg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/freiberg'),
#('Mittweida', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/mittweida'), # ('Mittweida', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/mittweida'),
#('Leisnig', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/leisnig'), # ('Leisnig', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/leisnig'),
#('Waldheim', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/waldheim'), # ('Waldheim', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/waldheim'),
#('Frankenberg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/frankenberg'), # ('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'), # ('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'), # ('Hainichen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/hainichen'),
#('Augustusburg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/augustusburg'), # ('Augustusburg', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/augustusburg'),
#('Jahnatal', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/mittelsachsen/jahnatal'), # ('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'), # ('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'), # ('Stadt Leipzig', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/leipzig'),
#('Chemnitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/chemnitz'), # ('Chemnitz', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/chemnitz'),
#('Landkreis Nordsachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/nordsachsen'), # ('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'), # ('Landkreis Leipzig', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/leipzig-lk'),
#('Erzgebirgskreis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/erzgebirgskreis'), # ('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'), # ('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'), # ('Seiffen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/erzgebirgskreis/seiffen'),
#('Vogtlandkreis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/vogtland'), # ('Vogtlandkreis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/vogtland'),
#('Plauen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/vogtland/plauen'), # ('Plauen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lokales/vogtland/plauen'),
#('Tschechien', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/tschechien'), # ('Tschechien', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/tschechien'),
('Sachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/sachsen'), ('Sachsen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/sachsen'),
#('Der Osten', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/der-osten'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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'), # ('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 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 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 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)'), # ('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 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 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)'), # ('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'), # ('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 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'), # ('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'), # ('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'), # ('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'), # ('Sachsenkompass', 'https://www.saechsische.de/arc/outboundfeeds/rss/tags_slug/sachsenkompass'),
('Politik', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/politik'), ('Politik', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/politik'),
('Wirtschaft', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/wirtschaft'), ('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'), ('Panorama', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/panorama'),
#('Promis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/promis'), # ('Promis', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/promis'),
#('Reise', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/reise'), # ('Reise', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/reise'),
#('Medien & TV', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/medien'), # ('Medien & TV', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/medien'),
#('Digital', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/digital'), # ('Digital', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/digital'),
#('Kultur', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/kultur'), # ('Kultur', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/kultur'),
#('Wissen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/wissen'), # ('Wissen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/wissen'),
#('Familie', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/familie'), # ('Familie', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/familie'),
#('Gesundheit', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/gesundheit'), # ('Gesundheit', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/gesundheit'),
#('Lifestyle', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lifestyle'), # ('Lifestyle', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/lifestyle'),
#('Mobilität', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/mobilitaet'), # ('Mobilität', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/mobilitaet'),
#('Bauen & Wohnen', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/bauen-und-wohnen'), # ('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'), # ('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'), # ('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'), # ('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') # ('Beruf & Bildung', 'https://www.saechsische.de/arc/outboundfeeds/rss/category/beruf-und-bildung')
] ]
def parse_feeds(self): def parse_feeds(self):
@ -230,5 +230,5 @@ class Saechsische(BasicNewsRecipe):
for keyword in unwanted_article_keywords: for keyword in unwanted_article_keywords:
if keyword in raw: if keyword in raw:
print('Skipping unwanted article with keyword(s):',keyword) print('Skipping unwanted article with keyword(s):',keyword)
#self.abort_article('Skipping unwanted article') # self.abort_article('Skipping unwanted article')
return raw return raw

View File

@ -21,8 +21,8 @@ class Salon_com(BasicNewsRecipe):
oldest_article = 7 oldest_article = 7
max_articles_per_feed = 100 max_articles_per_feed = 100
no_stylesheets = True no_stylesheets = True
#auto_cleanup = True # auto_cleanup = True
#auto_cleanup_keep = '//div[@id="image-id"]' # auto_cleanup_keep = '//div[@id="image-id"]'
ignore_duplicate_articles = {'title', 'url'} ignore_duplicate_articles = {'title', 'url'}
remove_empty_feeds = True remove_empty_feeds = True
@ -40,14 +40,14 @@ class Salon_com(BasicNewsRecipe):
remove_attributes = ['lang', 'style'] remove_attributes = ['lang', 'style']
feeds = [ feeds = [
#('News', 'http://www.salon.com/category/news/feed/rss/'), # ('News', 'http://www.salon.com/category/news/feed/rss/'),
#('Politics', 'http://www.salon.com/category/politics/feed/rss/'), # ('Politics', 'http://www.salon.com/category/politics/feed/rss/'),
#('Business', 'http://www.salon.com/category/business/feed/rss/'), # ('Business', 'http://www.salon.com/category/business/feed/rss/'),
#('Technology', 'http://www.salon.com/category/technology/feed/rss/'), # ('Technology', 'http://www.salon.com/category/technology/feed/rss/'),
#('Innovation', 'http://www.salon.com/category/innovation/feed/rss/'), # ('Innovation', 'http://www.salon.com/category/innovation/feed/rss/'),
#('Sustainability', 'http://www.salon.com/category/sustainability/feed/rss/'), # ('Sustainability', 'http://www.salon.com/category/sustainability/feed/rss/'),
#('Entertainment', 'http://www.salon.com/category/entertainment/feed/rss/'), # ('Entertainment', 'http://www.salon.com/category/entertainment/feed/rss/'),
#('Life', 'http://www.salon.com/category/life/feed/rss/'), # ('Life', 'http://www.salon.com/category/life/feed/rss/'),
# #
('News and Politics', 'https://www.salon.com/category/news-and-politics/feed'), ('News and Politics', 'https://www.salon.com/category/news-and-politics/feed'),
('Culture', 'http://www.salon.com/category/culture/feed/'), ('Culture', 'http://www.salon.com/category/culture/feed/'),

View File

@ -51,8 +51,8 @@ class scix(BasicNewsRecipe):
('Tech Xplore', 'https://techxplore.com/rss-feed/'), ('Tech Xplore', 'https://techxplore.com/rss-feed/'),
('Medical Xpress', 'https://medicalxpress.com/rss-feed/'), ('Medical Xpress', 'https://medicalxpress.com/rss-feed/'),
('Phys.org', 'https://phys.org/rss-feed/') ('Phys.org', 'https://phys.org/rss-feed/')
#https://medicalxpress.com/feeds/ # https://medicalxpress.com/feeds/
#https://techxplore.com/feeds/ # https://techxplore.com/feeds/
] ]
def preprocess_html(self, soup): def preprocess_html(self, soup):

View File

@ -24,17 +24,17 @@ class AdvancedUserRecipe1718370158(BasicNewsRecipe):
auto_cleanup = True auto_cleanup = True
feeds = [ feeds = [
#Features # Features
('Analysis', 'https://simpleflying.com/feed/category/analysis/'), ('Analysis', 'https://simpleflying.com/feed/category/analysis/'),
('History', 'https://simpleflying.com/feed/category/history/'), ('History', 'https://simpleflying.com/feed/category/history/'),
('Exclusives', 'https://simpleflying.com/feed/category/exclusives/'), ('Exclusives', 'https://simpleflying.com/feed/category/exclusives/'),
#By Region # By Region
('Asia', 'https://simpleflying.com/feed/category/asia/'), ('Asia', 'https://simpleflying.com/feed/category/asia/'),
('Europe', 'https://simpleflying.com/feed/category/europe/'), ('Europe', 'https://simpleflying.com/feed/category/europe/'),
('North America', 'https://simpleflying.com/feed/category/north-america/'), ('North America', 'https://simpleflying.com/feed/category/north-america/'),
('Africa', 'https://simpleflying.com/feed/category/africa/'), ('Africa', 'https://simpleflying.com/feed/category/africa/'),
('Rest of World', 'https://simpleflying.com/feed/category/rest-of-world/'), ('Rest of World', 'https://simpleflying.com/feed/category/rest-of-world/'),
#Travel # Travel
('Trip Reports', 'https://simpleflying.com/feed/category/trip-reports/'), ('Trip Reports', 'https://simpleflying.com/feed/category/trip-reports/'),
('Passanger Experience', 'https://simpleflying.com/feed/category/passenger-experience/'), ('Passanger Experience', 'https://simpleflying.com/feed/category/passenger-experience/'),

View File

@ -18,7 +18,7 @@ class AdvancedUserRecipe1718089036(BasicNewsRecipe):
feeds = [ feeds = [
('TechCrunch', 'https://techcrunch.com/feed/'), ('TechCrunch', 'https://techcrunch.com/feed/'),
#Categories # Categories
('Apps', 'https://techcrunch.com/category/apps/feed/'), ('Apps', 'https://techcrunch.com/category/apps/feed/'),
('Artificial Intelligence', 'https://techcrunch.com/category/artificial-intelligence/feed/'), ('Artificial Intelligence', 'https://techcrunch.com/category/artificial-intelligence/feed/'),
('Biotech', 'https://techcrunch.com/category/biotech-health/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/'), ('Tech Policy & Government', 'https://techcrunch.com/category/government-policy/feed/'),
('Transportation', 'https://techcrunch.com/category/transportation/feed/'), ('Transportation', 'https://techcrunch.com/category/transportation/feed/'),
('Venture Capital', 'https://techcrunch.com/category/venture/feed/'), ('Venture Capital', 'https://techcrunch.com/category/venture/feed/'),
#Tags # Tags
('Amazon', 'https://techcrunch.com/tag/amazon/feed/'), ('Amazon', 'https://techcrunch.com/tag/amazon/feed/'),
('Apple', 'https://techcrunch.com/tag/apple/feed/'), ('Apple', 'https://techcrunch.com/tag/apple/feed/'),
('Cloud Computing', 'https://techcrunch.com/tag/cloud-computing/feed/'), ('Cloud Computing', 'https://techcrunch.com/tag/cloud-computing/feed/'),
@ -52,6 +52,6 @@ class AdvancedUserRecipe1718089036(BasicNewsRecipe):
('Meta', 'https://techcrunch.com/tag/meta/feed/'), ('Meta', 'https://techcrunch.com/tag/meta/feed/'),
('Microsoft', 'https://techcrunch.com/tag/microsoft/feed/'), ('Microsoft', 'https://techcrunch.com/tag/microsoft/feed/'),
('TikTok', 'https://techcrunch.com/tag/tiktok/feed/'), ('TikTok', 'https://techcrunch.com/tag/tiktok/feed/'),
#Other # Other
('Events Archive', 'https://techcrunch.com/events/feed/'), ('Events Archive', 'https://techcrunch.com/events/feed/'),
] ]

View File

@ -21,26 +21,26 @@ class AdvancedUserRecipe1718109535(BasicNewsRecipe):
feeds = [ feeds = [
('Game Guides', 'https://www.thegamer.com/feed/category/game-guides/'), ('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', 'https://www.thegamer.com/feed/aaa-games/'),
('AAA Games Features', 'https://www.thegamer.com/feed/aaa-games/features/'), ('AAA Games Features', 'https://www.thegamer.com/feed/aaa-games/features/'),
('AAA Games News', 'https://www.thegamer.com/feed/aaa-games/news/'), ('AAA Games News', 'https://www.thegamer.com/feed/aaa-games/news/'),
('AAA Games Lists', 'https://www.thegamer.com/feed/aaa-games/lists/'), ('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', 'https://www.thegamer.com/feed/live-service-games/'),
('Live-Service Games Features', 'https://www.thegamer.com/feed/live-service-games/features/'), ('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 News', 'https://www.thegamer.com/feed/live-service-games/news/'),
('Live-Service Games Lists', 'https://www.thegamer.com/feed/live-service-games/lists/'), ('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', 'https://www.thegamer.com/feed/indie-games/'),
('Indie Games Features', 'https://www.thegamer.com/feed/indie-games/features/'), ('Indie Games Features', 'https://www.thegamer.com/feed/indie-games/features/'),
('Indie Games News', 'https://www.thegamer.com/feed/indie-games/news/'), ('Indie Games News', 'https://www.thegamer.com/feed/indie-games/news/'),
('Indie Games Lists', 'https://www.thegamer.com/feed/indie-games/lists/'), ('Indie Games Lists', 'https://www.thegamer.com/feed/indie-games/lists/'),
#Streaming # Streaming
('Streaming', 'https://www.thegamer.com/feed/streaming/'), ('Streaming', 'https://www.thegamer.com/feed/streaming/'),
('Streaming Features', 'https://www.thegamer.com/feed/streaming/features/'), ('Streaming Features', 'https://www.thegamer.com/feed/streaming/features/'),
('Streaming News', 'https://www.thegamer.com/feed/streaming/news/'), ('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', 'https://www.thegamer.com/feed/movies-tv-anime/'),
('Movies & Shows Features', 'https://www.thegamer.com/feed/movies-tv-anime/features/'), ('Movies & Shows Features', 'https://www.thegamer.com/feed/movies-tv-anime/features/'),
('Movies & Shows News', 'https://www.thegamer.com/feed/movies-tv-anime/news/'), ('Movies & Shows News', 'https://www.thegamer.com/feed/movies-tv-anime/news/'),

View File

@ -23,14 +23,14 @@ class AdvancedUserRecipe1718381004(BasicNewsRecipe):
auto_cleanup = True auto_cleanup = True
feeds = [ feeds = [
#WWE # WWE
('World Wrestling Entertainment', 'https://www.thesportster.com/feed/category/wwe/'), ('World Wrestling Entertainment', 'https://www.thesportster.com/feed/category/wwe/'),
('WWE News', 'https://www.thesportster.com/feed/category/news/'), ('WWE News', 'https://www.thesportster.com/feed/category/news/'),
('WWE Lists', 'https://www.thesportster.com/feed/category/wrestling/'), ('WWE Lists', 'https://www.thesportster.com/feed/category/wrestling/'),
('WWE Real American Wrestling', 'https://www.thesportster.com/feed/category/wwe-raw/'), ('WWE Real American Wrestling', 'https://www.thesportster.com/feed/category/wwe-raw/'),
('WWE SmackDown', 'https://www.thesportster.com/feed/category/wwe-smackdown/'), ('WWE SmackDown', 'https://www.thesportster.com/feed/category/wwe-smackdown/'),
('WWE NXT', 'https://www.thesportster.com/feed/category/wwe-nxt/'), ('WWE NXT', 'https://www.thesportster.com/feed/category/wwe-nxt/'),
#AEW # AEW
('All Elite Wrestling', 'https://www.thesportster.com/feed/category/aew/'), ('All Elite Wrestling', 'https://www.thesportster.com/feed/category/aew/'),
('AEW News', 'https://www.thesportster.com/feed/category/news/'), ('AEW News', 'https://www.thesportster.com/feed/category/news/'),
('AEW Lists', 'https://www.thesportster.com/feed/category/wrestling/'), ('AEW Lists', 'https://www.thesportster.com/feed/category/wrestling/'),

View File

@ -23,7 +23,7 @@ class AdvancedUserRecipe1718105400(BasicNewsRecipe):
auto_cleanup = True auto_cleanup = True
feeds = [ feeds = [
#Celebrity # Celebrity
('Celebrity', 'https://www.thethings.com/feed/category/celebrity/'), ('Celebrity', 'https://www.thethings.com/feed/category/celebrity/'),
('Celebrity News', 'https://www.thethings.com/feed/category/celebrity-news/'), ('Celebrity News', 'https://www.thethings.com/feed/category/celebrity-news/'),

View File

@ -90,7 +90,7 @@ class PrivateEyeRecipe(BasicNewsRecipe):
# oldie links/headings often contain the author (in one of various formats # oldie links/headings often contain the author (in one of various formats
# 1. Title. By author # 1. Title. By author
#.2. Title by author: subtitle # .2. Title by author: subtitle
# 3. Title: author: subtitle # 3. Title: author: subtitle
title_author_re = re.compile(r'^(.*?)(?:(?: by )|(?:: ))(.*?): (.*?)$') title_author_re = re.compile(r'^(.*?)(?:(?: by )|(?:: ))(.*?): (.*?)$')

View File

@ -22,10 +22,10 @@ class AdvancedUserRecipe1718128185(BasicNewsRecipe):
auto_cleanup = True auto_cleanup = True
feeds = [ feeds = [
#News feeds # News feeds
('Car News', 'https://www.topspeed.com/feed/category/car-news/'), ('Car News', 'https://www.topspeed.com/feed/category/car-news/'),
('Motorcycle News', 'https://www.topspeed.com/feed/category/motorcycle-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/'), ('Car Reviews', 'https://www.topspeed.com/feed/category/car-reviews/'),
('Vehicle Comparisons', 'https://www.topspeed.com/feed/category/vehicle-comparisons/'), ('Vehicle Comparisons', 'https://www.topspeed.com/feed/category/vehicle-comparisons/'),
('Car Guides', 'https://www.topspeed.com/feed/category/car-guides/'), ('Car Guides', 'https://www.topspeed.com/feed/category/car-guides/'),

View File

@ -6,14 +6,14 @@ from calibre.web.feeds.news import BasicNewsRecipe
class UAFootball(BasicNewsRecipe): class UAFootball(BasicNewsRecipe):
#Russian version # Russian version
# title = 'UA-\u0424\u0443\u0442\u0431\u043E\u043B' # title = 'UA-\u0424\u0443\u0442\u0431\u043E\u043B'
# language = 'ru_UK' # language = 'ru_UK'
# feeds = [ # feeds = [
# ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438 \u0444\u0443\u0442\u0431\u043E\u043B\u0430', 'https://www.ua-football.com/rss/all.xml') # ('\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' title = 'UA-\u0424\u0443\u0442\u0431\u043E\u043B'
description = ('\u0410\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u0456 \u0442\u0435\u043C\u0438' 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' ' \u0444\u0443\u0442\u0431\u043E\u043B\u044C\u043D\u043E\u0433\u043E'

View File

@ -22,11 +22,11 @@ class AdvancedUserRecipe1718385916(BasicNewsRecipe):
auto_cleanup = True auto_cleanup = True
feeds = [ feeds = [
#News & Deals # News & Deals
('News', 'https://www.xda-developers.com/feed/news/'), ('News', 'https://www.xda-developers.com/feed/news/'),
('Computing News', 'https://www.xda-developers.com/feed/category/computing-news/'), ('Computing News', 'https://www.xda-developers.com/feed/category/computing-news/'),
('Todays Deals', 'https://www.xda-developers.com/feed/deals/'), ('Todays Deals', 'https://www.xda-developers.com/feed/deals/'),
#Reviews # Reviews
('Reviews', 'https://www.xda-developers.com/feed/reviews/'), ('Reviews', 'https://www.xda-developers.com/feed/reviews/'),
('Laptop Reviews', 'https://www.xda-developers.com/feed/category/computing-reviews/'), ('Laptop Reviews', 'https://www.xda-developers.com/feed/category/computing-reviews/'),
('CPU Reviews', 'https://www.xda-developers.com/feed/cpu-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/'), ('SSD Reviews', 'https://www.xda-developers.com/feed/ssd-reviews/'),
('Phone Reviews', 'https://www.xda-developers.com/feed/phone-reviews/'), ('Phone Reviews', 'https://www.xda-developers.com/feed/phone-reviews/'),
('XDAs Product Review Awards', 'https://www.xda-developers.com/feed/awards/'), ('XDAs 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/'), ("Buyer's Guides", 'https://www.xda-developers.com/feed/buying-guides/'),
#Tutorials # Tutorials
('Tutorials', 'https://www.xda-developers.com/feed/tutorials/'), ('Tutorials', 'https://www.xda-developers.com/feed/tutorials/'),
('Windows Tutorials', 'https://www.xda-developers.com/feed/windows-tutorials/'), ('Windows Tutorials', 'https://www.xda-developers.com/feed/windows-tutorials/'),
('MacOS Tutorials', 'https://www.xda-developers.com/feed/macos-tutorials/'), ('MacOS Tutorials', 'https://www.xda-developers.com/feed/macos-tutorials/'),

View File

@ -38,6 +38,7 @@ select = [
'RUF047', # needless else 'RUF047', # needless else
'E302', 'E303', 'E304', 'E305', 'W391', # blank-line standard 'E302', 'E303', 'E304', 'E305', 'W391', # blank-line standard
'E111', 'E112', 'E113', 'E117', # code indentation 'E111', 'E112', 'E113', 'E117', # code indentation
'E114', 'E115', 'E116', 'E261', 'E262', 'E265', # comment formating
] ]
[lint.per-file-ignores] [lint.per-file-ignores]
@ -45,8 +46,10 @@ select = [
"manual/plugin_examples/*" = ['UP'] "manual/plugin_examples/*" = ['UP']
"setup/commands.py" = ['RUF022'] "setup/commands.py" = ['RUF022']
"src/calibre/*" = ['UP031'] "src/calibre/*" = ['UP031']
"src/calibre/devices/kobo/driver.py" = ['E116']
"src/calibre/ebooks/unihandecode/*codepoints.py" = ['E501'] "src/calibre/ebooks/unihandecode/*codepoints.py" = ['E501']
"src/calibre/ebooks/metadata/sources/*" = ['UP'] "src/calibre/ebooks/metadata/sources/*" = ['UP']
"src/calibre/ebooks/pdf/reflow.py" = ['E114']
"src/calibre/gui2/store/stores/*" = ['UP'] "src/calibre/gui2/store/stores/*" = ['UP']
"src/calibre/gui2/tts/manager.py" = ['UP037'] "src/calibre/gui2/tts/manager.py" = ['UP037']
"src/calibre/utils/copy_files.py" = ['UP037'] "src/calibre/utils/copy_files.py" = ['UP037']

View File

@ -236,7 +236,7 @@ class Text(Element):
# Or assume any gap = a space? # Or assume any gap = a space?
if (self.top <= other.top and self.bottom >= other.bottom) \ if (self.top <= other.top and self.bottom >= other.bottom) \
and abs(other.left - self.right) < 2.0: 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 has_gap = 0
else: # Insert n spaces to fill gap. Use TAB? Columns? else: # Insert n spaces to fill gap. Use TAB? Columns?
if other.left < self.right: if other.left < self.right:
@ -318,7 +318,7 @@ class Text(Element):
and other.right > right_margin - right_margin * RIGHT_FLOAT_FACTOR: and other.right > right_margin - right_margin * RIGHT_FLOAT_FACTOR:
has_float = '<span style="float:right">' has_float = '<span style="float:right">'
has_gap = 1 has_gap = 1
#else leave has_gap # else leave has_gap
old_float = re.match(r'^(.*)(<span style="float:right">.*)</span>\s*$', self.raw) old_float = re.match(r'^(.*)(<span style="float:right">.*)</span>\s*$', self.raw)
if old_float: if old_float:
# There is already a float as parts of a line are near the right. # 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.text_as_string += ' '
self.raw += ' ' self.raw += ' '
self.width += self.average_character_width self.width += self.average_character_width
#self.final_width += self.average_character_width # self.final_width += self.average_character_width
has_gap -= 1 has_gap -= 1
self.text_as_string += other.text_as_string 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 # Try to merge href where there are 2 for the same place
# Beware multiple hrefs on the same line, but for different places # Beware multiple hrefs on the same line, but for different places
@ -372,9 +372,9 @@ class Text(Element):
# Move the <span... after the <a... and remove the </a> # Move the <span... after the <a... and remove the </a>
self.raw = matchObj.group(1)+matchObj.group(3)+m2+matchObj.group(4)+m5+matchObj.group(6) self.raw = matchObj.group(1)+matchObj.group(3)+m2+matchObj.group(4)+m5+matchObj.group(6)
# This needs more work # This needs more work
#if sub_super < 0: # if sub_super < 0:
# other.raw = '<sup>' + other.raw + '</sup>' # other.raw = '<sup>' + other.raw + '</sup>'
#elif sub_super > 0: # elif sub_super > 0:
# other.raw = '<sub>' + other.raw + '</sub>' # other.raw = '<sub>' + other.raw + '</sub>'
if has_float: if has_float:
@ -383,7 +383,7 @@ class Text(Element):
if has_float: if has_float:
self.raw += '</span>' self.raw += '</span>'
self.set_av_char_width() self.set_av_char_width()
#self.last_left = other.left # self.last_left = other.left
def to_html(self): def to_html(self):
return self.raw return self.raw
@ -782,7 +782,7 @@ class Page:
or text.top > self.height \ or text.top > self.height \
or text.left > self.left+self.width \ or text.left > self.left+self.width \
or text.left < self.left: or text.left < self.left:
#and re.match(r'href=', text.raw) is None: # and re.match(r'href=', text.raw) is None:
self.texts.remove(text) self.texts.remove(text)
elif (self.opts.pdf_header_skip <= 0 or text.top >= self.opts.pdf_header_skip) \ elif (self.opts.pdf_header_skip <= 0 or text.top >= self.opts.pdf_header_skip) \
and (self.opts.pdf_footer_skip <= 0 or text.top <= self.opts.pdf_footer_skip): and (self.opts.pdf_footer_skip <= 0 or text.top <= self.opts.pdf_footer_skip):
@ -960,19 +960,19 @@ class Page:
and lmargin >= rmargin - rmargin*CENTER_FACTOR \ and lmargin >= rmargin - rmargin*CENTER_FACTOR \
and lmargin <= rmargin + rmargin*CENTER_FACTOR \ and lmargin <= rmargin + rmargin*CENTER_FACTOR \
and '"float:right"' not in t.raw: and '"float:right"' not in t.raw:
#and t.left + t.width + t.left >= self.width + l_offset - t.average_character_width \ # and t.left + t.width + t.left >= self.width + l_offset - t.average_character_width \
#and t.left + t.width + t.left <= self.width + l_offset + t.average_character_width: # and t.left + t.width + t.left <= self.width + l_offset + t.average_character_width:
t.align = 'C' t.align = 'C'
# Right aligned if left > FACTOR% of right # Right aligned if left > FACTOR% of right
elif lmargin > indent_max \ elif lmargin > indent_max \
and lmargin > rmargin*RIGHT_FACTOR: and lmargin > rmargin*RIGHT_FACTOR:
#and t.right >= self.width - t.average_character_width: # and t.right >= self.width - t.average_character_width:
# What about right-aligned but indented on right? # What about right-aligned but indented on right?
# What about indented rather than right-aligned? # What about indented rather than right-aligned?
t.align = 'R' t.align = 'R'
if not self.contents: if not self.contents:
# We can get <a href=...Chapter... Should this check be done? # We can get <a href=...Chapter... Should this check be done?
#if 'href=' not in t.raw: # if 'href=' not in t.raw:
# Check for Roman numerals as the only thing on a line # Check for Roman numerals as the only thing on a line
if re.match(r'^\s*[iIxXvV]+\s*$', t.text_as_string) is not None: if re.match(r'^\s*[iIxXvV]+\s*$', t.text_as_string) is not None:
t.tag = 'h3' t.tag = 'h3'
@ -1082,7 +1082,7 @@ class Page:
if last_frag is not None \ if last_frag is not None \
and stats.para_space > 0 \ and stats.para_space > 0 \
and frag.bottom - last_frag.bottom > stats.para_space*SECTION_FACTOR: and frag.bottom - last_frag.bottom > stats.para_space*SECTION_FACTOR:
#and frag.top - last_frag.bottom > frag.height + stats.line_space + (stats.line_space*LINE_FACTOR): # and frag.top - last_frag.bottom > frag.height + stats.line_space + (stats.line_space*LINE_FACTOR):
frag.blank_line_before = 1 frag.blank_line_before = 1
last_frag = frag last_frag = frag
tind += 1 tind += 1
@ -1104,8 +1104,8 @@ class Page:
# There could be fragments which are spread out, so join_fragments has not coalesced them # There could be fragments which are spread out, so join_fragments has not coalesced them
# Not sure that this would work as it relies on the first fragment matching regex # Not sure that this would work as it relies on the first fragment matching regex
t = self.texts[0] t = self.texts[0]
#match = self.find_match(t) # match = self.find_match(t)
#while match is not None: # while match is not None:
# self.texts.remove(match) # self.texts.remove(match)
# match = self.find_match(t) # match = self.find_match(t)
self.texts.remove(t) self.texts.remove(t)
@ -1119,8 +1119,8 @@ class Page:
if re.match(opts.pdf_footer_regex, self.texts[-1].text_as_string) is not None : if re.match(opts.pdf_footer_regex, self.texts[-1].text_as_string) is not None :
# There could be fragments which are spread out, so join_fragments has not coalesced them # There could be fragments which are spread out, so join_fragments has not coalesced them
t = self.texts[-1] t = self.texts[-1]
#match = self.find_match(t) # match = self.find_match(t)
#while match is not None: # while match is not None:
# self.texts.remove(match) # self.texts.remove(match)
# match = self.find_match(t) # match = self.find_match(t)
self.texts.remove(t) self.texts.remove(t)
@ -1140,7 +1140,7 @@ class Page:
def find_margins(self, tops, indents, line_spaces, bottoms, rights): def find_margins(self, tops, indents, line_spaces, bottoms, rights):
#from collections import Counter # from collections import Counter
# Should check for left margin and indent for this page # Should check for left margin and indent for this page
# Find the most used top, left margins, and gaps between lines # Find the most used top, left margins, and gaps between lines
@ -1149,7 +1149,7 @@ class Page:
max_right = 0 max_right = 0
max_space = 0 max_space = 0
last_top = 0 last_top = 0
#last_bottom = 0 # last_bottom = 0
first = True first = True
for text in self.texts: for text in self.texts:
top = text.top top = text.top
@ -1341,10 +1341,10 @@ class Page:
self.check_centered(stats) self.check_centered(stats)
#self.elements = list(self.texts) # self.elements = list(self.texts)
#for img in page.xpath('descendant::img'): # for img in page.xpath('descendant::img'):
# self.elements.append(Image(img, self.opts, self.log, idc)) # self.elements.append(Image(img, self.opts, self.log, idc))
#self.elements.sort(cmp=lambda x,y:cmp(x.top, y.top)) # self.elements.sort(cmp=lambda x,y:cmp(x.top, y.top))
return return
# NOT IMPLEMENTED # NOT IMPLEMENTED
@ -1391,7 +1391,7 @@ class Page:
elif text.indented > 0: elif text.indented > 0:
ans[-1] += ' style="text-indent:' ans[-1] += ' style="text-indent:'
ans[-1] += str(text.indented) ans[-1] += str(text.indented)
#ans[-1] += '1' # ans[-1] += '1'
ans[-1] += 'em"' ans[-1] += 'em"'
# The margins need more work. e.g. can have indented + left + right # The margins need more work. e.g. can have indented + left + right
elif text.margin_left > 0: elif text.margin_left > 0:
@ -1427,7 +1427,7 @@ class Page:
class PDFDocument: class PDFDocument:
def __init__(self, xml, opts, log): def __init__(self, xml, opts, log):
#from calibre.rpdb import set_trace; set_trace() # from calibre.rpdb import set_trace; set_trace()
self.opts, self.log = opts, log self.opts, self.log = opts, log
@ -1451,11 +1451,11 @@ class PDFDocument:
self.font_map[self.fonts[-1].id] = self.fonts[-1] self.font_map[self.fonts[-1].id] = self.fonts[-1]
self.pages = [] self.pages = []
#self.page_map = {} # self.page_map = {}
for page in self.root.xpath('//page'): for page in self.root.xpath('//page'):
page = Page(page, self.font_map, opts, log, idc) page = Page(page, self.font_map, opts, log, idc)
#self.page_map[page.id] = page # self.page_map[page.id] = page
self.pages.append(page) self.pages.append(page)
self.tops = {} self.tops = {}
@ -1496,7 +1496,7 @@ class PDFDocument:
# Join paragraphs across page boundaries # Join paragraphs across page boundaries
self.merge_pages(idc) self.merge_pages(idc)
#self.linearize() # self.linearize()
self.render() self.render()
def collect_font_statistics(self): def collect_font_statistics(self):
@ -1752,7 +1752,7 @@ class PDFDocument:
bcount = 0 bcount = 0
for b in self.bottoms: for b in self.bottoms:
if bcount < self.bottoms[b]: if bcount < self.bottoms[b]:
#and b > self.stats.bottom*0.9: # and b > self.stats.bottom*0.9:
bcount = self.bottoms[b] bcount = self.bottoms[b]
if b > self.stats.bottom: if b > self.stats.bottom:
self.stats.bottom = b self.stats.bottom = b
@ -1801,7 +1801,7 @@ class PDFDocument:
or page.texts[head_ind].top > page.height/2: or page.texts[head_ind].top > page.height/2:
break # Short page break # Short page
t = page.texts[head_ind].text_as_string t = page.texts[head_ind].text_as_string
#if len(page.texts) > 1 and page.texts[0].top == page.texts[1].top: # if len(page.texts) > 1 and page.texts[0].top == page.texts[1].top:
# t += ' ' + page.texts[1].text_as_string # t += ' ' + page.texts[1].text_as_string
if len(head_text[head_ind]) == 0: if len(head_text[head_ind]) == 0:
head_text[head_ind] = t head_text[head_ind] = t
@ -1834,7 +1834,7 @@ class PDFDocument:
or page.texts[-foot_ind-1].top < page.height/2: or page.texts[-foot_ind-1].top < page.height/2:
break # Short page break # Short page
t = page.texts[-foot_ind-1].text_as_string t = page.texts[-foot_ind-1].text_as_string
#if len(page.texts) > 1 and page.texts[-1].top == page.texts[-2].top: # if len(page.texts) > 1 and page.texts[-1].top == page.texts[-2].top:
# t += ' ' + page.texts[-2].text_as_string # t += ' ' + page.texts[-2].text_as_string
if len(foot_text[foot_ind]) == 0: if len(foot_text[foot_ind]) == 0:
foot_text[foot_ind] = t foot_text[foot_ind] = t
@ -2040,7 +2040,7 @@ class PDFDocument:
# Have we removed everything from this page (well, all texts and images) # Have we removed everything from this page (well, all texts and images)
if merged_page.is_empty: if merged_page.is_empty:
# Empty page does/may not actually mean blank line # Empty page does/may not actually mean blank line
#candidate.texts[-1].blank_line_before = 1 # candidate.texts[-1].blank_line_before = 1
# If pages are merged, and the merged page gets removed (as here), # If pages are merged, and the merged page gets removed (as here),
# and the next page is short (forced page break), # and the next page is short (forced page break),
# then the merge would fail when this loop restarts. # then the merge would fail when this loop restarts.

View File

@ -130,15 +130,15 @@ class MarkdownHighlighter(QSyntaxHighlighter):
cursor = QTextCursor(self.document()) cursor = QTextCursor(self.document())
bf = cursor.blockFormat() bf = cursor.blockFormat()
#Block quotes can contain all elements so process it first, internally process recursively and return # Block quotes can contain all elements so process it first, internally process recursively and return
if self.highlightBlockQuote(text, cursor, bf): if self.highlightBlockQuote(text, cursor, bf):
return return
#If empty line no need to check for below elements just return # If empty line no need to check for below elements just return
if self.highlightEmptyLine(text, cursor, bf): if self.highlightEmptyLine(text, cursor, bf):
return return
#If horizontal line, look at pevious line to see if its a header, process and return # If horizontal line, look at pevious line to see if its a header, process and return
if self.highlightHorizontalLine(text, cursor, bf): if self.highlightHorizontalLine(text, cursor, bf):
return return
@ -186,9 +186,9 @@ class MarkdownHighlighter(QSyntaxHighlighter):
prev = prevBlock.text() prev = prevBlock.text()
prevAscii = str(prev.replace('\u2029','\n')) prevAscii = str(prev.replace('\u2029','\n'))
if self.offset == 0 and prevAscii.strip(): if self.offset == 0 and prevAscii.strip():
#print('Its a header') # print('Its a header')
prevCursor.select(QTextCursor.SelectionType.LineUnderCursor) prevCursor.select(QTextCursor.SelectionType.LineUnderCursor)
#prevCursor.setCharFormat(self.MARKDOWN_KWS_FORMAT['Header']) # prevCursor.setCharFormat(self.MARKDOWN_KWS_FORMAT['Header'])
formatRange = QTextLayout.FormatRange() formatRange = QTextLayout.FormatRange()
formatRange.format = self.MARKDOWN_KWS_FORMAT['Header'] formatRange.format = self.MARKDOWN_KWS_FORMAT['Header']
formatRange.length = prevCursor.block().length() formatRange.length = prevCursor.block().length()
@ -205,9 +205,9 @@ class MarkdownHighlighter(QSyntaxHighlighter):
def highlightHeader(self, text, cursor, bf): def highlightHeader(self, text, cursor, bf):
found = False found = False
for mo in re.finditer(self.MARKDOWN_KEYS_REGEX['Header'],text): for mo in re.finditer(self.MARKDOWN_KEYS_REGEX['Header'],text):
#bf.setBackground(QBrush(QColor(7,54,65))) # bf.setBackground(QBrush(QColor(7,54,65)))
#cursor.movePosition(QTextCursor.End) # cursor.movePosition(QTextCursor.End)
#cursor.mergeBlockFormat(bf) # cursor.mergeBlockFormat(bf)
self.setFormat(self.offset+ mo.start(), mo.end() - mo.start(), self.MARKDOWN_KWS_FORMAT['Header']) self.setFormat(self.offset+ mo.start(), mo.end() - mo.start(), self.MARKDOWN_KWS_FORMAT['Header'])
found = True found = True
return found return found
@ -257,7 +257,7 @@ class MarkdownHighlighter(QSyntaxHighlighter):
return self._highlightBoldEmphasis(text[offset:], cursor, bf, offset, False, False) return self._highlightBoldEmphasis(text[offset:], cursor, bf, offset, False, False)
def _highlightBoldEmphasis(self, text, cursor, bf, offset, bold, emphasis): def _highlightBoldEmphasis(self, text, cursor, bf, offset, bold, emphasis):
#detect and apply imbricated Bold/Emphasis # detect and apply imbricated Bold/Emphasis
found = False found = False
def apply(match, bold, emphasis): def apply(match, bold, emphasis):