|
Latest Uploads |
Browse Latest Uploads |
Latest Uploads (Feed) |
Kindle Download Guide |
Formats |
Kindle (MOBI) |
Sony BBeB (LRF) |
ePub (EPUB) |
eBookwise (IMP) |
Miscellaneous |
Search Forums |
Advanced Search |
Attachment Search |
Find New Posts |
All New Posts |
- w/o E-Book Uploads |
Last 24 Hours |
Last 2 Days |
Last 5 Days |
Your Posts |
Go to Page... |
View Poll Results: Which type of recipes you'd like to have the most? | |||
Ukrainian sources in Ukrainian | 1 | 33.33% | |
Ukrainian sources in Russian | 0 | 0% | |
Russian sources in Russian | 0 | 0% | |
Russian & Ukrainian sources in English | 2 | 66.67% | |
Multiple Choice Poll. Voters: 3. You may not vote on this poll |
|
Thread Tools | Search this Thread |
07-29-2022, 12:03 AM | #16 |
creator of calibre
Posts: 44,655
Karma: 24966646
Join Date: Oct 2006
Location: Mumbai, India
Device: Various
|
that fix was already done when I added the recipe.
|
07-29-2022, 07:38 AM | #17 |
Connoisseur
Posts: 75
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard + Kindle Voyage WiFi + Kindle PW11 Kids
|
|
08-01-2022, 08:08 AM | #18 |
Connoisseur
Posts: 75
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard + Kindle Voyage WiFi + Kindle PW11 Kids
|
New recipes (part 06 of ??)
NEW MULTI-LANGUAGE RECIPE (OF UKRAINIAN SOURCE) UkrInform: state information and news agency of Ukraine. Favicon replacement. It seems that the values of 'language' variable are overcomplicated as they cause new redundant categories in recipes list; probably should've left single language code. Ukrainain version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class UkrInform(BasicNewsRecipe): title = '\u0423\u043A\u0440\u0456\u043D\u0444\u043E\u0440\u043C' __author__ = 'bugmen00t' description = '\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0435 \u0434\u0435\u0440\u0436\u0430\u0432\u043D\u0435 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0439\u043D\u0435 \u0430\u0433\u0435\u043D\u0442\u0441\u0442\u0432\u043E, \u0434\u0436\u0435\u0440\u0435\u043B\u043E \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0457 \u043F\u0440\u043E \u043F\u043E\u043B\u0456\u0442\u0438\u0447\u043D\u0435, \u0435\u043A\u043E\u043D\u043E\u043C\u0456\u0447\u043D\u0435, \u0441\u043E\u0446\u0456\u0430\u043B\u044C\u043D\u0435, \u043D\u0430\u0443\u043A\u043E\u0432\u0435, \u043A\u0443\u043B\u044C\u0442\u0443\u0440\u043D\u0435, \u0441\u0443\u0441\u043F\u0456\u043B\u044C\u043D\u0435 \u0436\u0438\u0442\u0442\u044F \u0432 \u0423\u043A\u0440\u0430\u0457\u043D\u0456 \u0442\u0430 \u0437\u0430 \u043A\u043E\u0440\u0434\u043E\u043D\u043E\u043C.' publisher = '\u041C\u0456\u043D\u0456\u0441\u0442\u0435\u0440\u0441\u0442\u0432\u043E \u043A\u0443\u043B\u044C\u0442\u0443\u0440\u0438 \u0442\u0430 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0439\u043D\u043E\u0457 \u043F\u043E\u043B\u0456\u0442\u0438\u043A\u0438 \u0423\u043A\u0440\u0430\u0457\u043D\u0438' category = 'newspaper' cover_url = u'https://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/Logo_ukr_%281%29.svg/2560px-Logo_ukr_%281%29.svg.png' language = 'uk' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 2 max_articles_per_feed = 30 remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ dict(name='aside'), dict(name='img', attrs={'class': 'pixel'}), dict(name='section', attrs={'class': 'read'}), dict(name='div', attrs={'data-name': 'int_hidden'}) ] feeds = [ ('\u041E\u0441\u0442\u0430\u043D\u043D\u0456 \u043D\u043E\u0432\u0438\u043D\u0438', 'https://www.ukrinform.ua/rss/block-lastnews'), ('\u0412\u0456\u0439\u043D\u0430', 'https://www.ukrinform.ua/rss/rubric-ato'), ('#UA\u0440\u0430\u0437\u043E\u043C', 'https://www.ukrinform.ua/rss/rubric-uarazom'), ('\u041F\u043E\u043B\u0456\u0442\u0438\u043A\u0430', 'https://www.ukrinform.ua/rss/rubric-polytics'), ('\u0415\u043A\u043E\u043D\u043E\u043C\u0456\u043A\u0430', 'https://www.ukrinform.ua/rss/rubric-economy'), ('\u0421\u0432\u0456\u0442', 'https://www.ukrinform.ua/rss/rubric-world'), ('\u0421\u0443c\u043F\u0456\u043B\u044Cc\u0442\u0432\u043E', 'https://www.ukrinform.ua/rss/rubric-society'), ('\u041A\u0443\u043B\u044C\u0442\u0443\u0440\u0430', 'https://www.ukrinform.ua/rss/rubric-culture'), ('\u0420\u0435\u0433\u0456\u043E\u043D\u0438', 'https://www.ukrinform.ua/rss/rubric-regions'), ('\u041A\u0438\u0457\u0432', 'https://www.ukrinform.ua/rss/rubric-kyiv'), ('\u041A\u0440\u0438\u043C', 'https://www.ukrinform.ua/rss/rubric-crimea'), ('\u0421\u043F\u043E\u0440\u0442', 'https://www.ukrinform.ua/rss/rubric-sports'), ('\u0414\u0456\u0430c\u043F\u043E\u0440\u0430', 'https://www.ukrinform.ua/rss/rubric-diaspora'), ('\u0422\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0456\u0457', 'https://www.ukrinform.ua/rss/rubric-technology'), ] Russian version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class UkrInform(BasicNewsRecipe): title = '\u0423\u043A\u0440\u0438\u043D\u0444\u043E\u0440\u043C' __author__ = 'bugmen00t' description = '\u0423\u043A\u0440\u0430\u0438\u043D\u0441\u043A\u043E\u0435 \u0433\u043E\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0435 \u043D\u0430\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E\u0435 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E\u0435 \u0430\u0433\u0435\u043D\u0442\u0441\u0442\u0432\u043E, \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438 \u043E \u043F\u043E\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0439, \u044D\u043A\u043E\u043D\u043E\u043C\u0438\u0447\u0435\u0441\u043A\u043E\u0439, \u0441\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0439, \u043D\u0430\u0443\u0447\u043D\u043E\u0439, \u043A\u0443\u043B\u044C\u0442\u0443\u0440\u043D\u043E\u0439, \u043E\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0439 \u0436\u0438\u0437\u043D\u0438 \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435 \u0438 \u0437\u0430 \u0440\u0443\u0431\u0435\u0436\u043E\u043C.' publisher = '\u041C\u0438\u043D\u0438\u0441\u0442\u0435\u0440\u0441\u0442\u0432\u043E \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0438 \u0423\u043A\u0440\u0430\u0438\u043D\u044B' category = 'newspaper' cover_url = u'https://www.ukrinform.ru/img/logo_rus.svg' language = 'ru_UK' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 3 max_articles_per_feed = 30 remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ dict(name='aside'), dict(name='img', attrs={'class': 'pixel'}), dict(name='section', attrs={'class': 'read'}), dict(name='div', attrs={'data-name': 'int_hidden'}) ] feeds = [ ('\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435 \u043D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://www.ukrinform.ru/rss/block-lastnews'), ('\u0412\u043E\u0439\u043D\u0430', 'https://www.ukrinform.ru/rss/rubric-ato'), ('#UA\u0440\u0430\u0437\u043E\u043C', 'https://www.ukrinform.ru/rss/rubric-uarazom'), ('\u041F\u043E\u043B\u0438\u0442\u0438\u043A\u0430', 'https://www.ukrinform.ru/rss/rubric-polytics'), ('\u042D\u043A\u043E\u043D\u043E\u043C\u0438\u043A\u0430', 'https://www.ukrinform.ru/rss/rubric-economy'), ('\u041C\u0438\u0440', 'https://www.ukrinform.ru/rss/rubric-world'), ('\u041E\u0431\u0449\u0435c\u0442\u0432\u043E', 'https://www.ukrinform.ru/rss/rubric-society'), ('\u041A\u0443\u043B\u044C\u0442\u0443\u0440\u0430', 'https://www.ukrinform.ru/rss/rubric-culture'), ('\u0420\u0435\u0433\u0438\u043E\u043D\u044B', 'https://www.ukrinform.ru/rss/rubric-regions'), ('\u041A\u0438\u0435\u0432', 'https://www.ukrinform.ru/rss/rubric-kyiv'), ('\u041A\u0440\u044B\u043C', 'https://www.ukrinform.ru/rss/rubric-crimea'), ('\u0421\u043F\u043E\u0440\u0442', 'https://www.ukrinform.ru/rss/rubric-sports'), ('\u0422\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0438', 'https://www.ukrinform.ru/rss/rubric-technology'), ] English version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class UkrInform(BasicNewsRecipe): title = 'UkrInform (English)' __author__ = 'bugmen00t' description = 'State information and news agency of Ukraine.' publisher = 'Ministry of Culture and Information Policy of Ukraine' category = 'newspaper' cover_url = u'https://static.ukrinform.com/photos/2022_05/thumb_files/630_360_1651819943-560.jpg' language = 'en_UK' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 30 remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ dict(name='aside'), dict(name='img', attrs={'class': 'pixel'}), dict(name='section', attrs={'class': 'read'}), dict(name='div', attrs={'data-name': 'int_hidden'}) ] feeds = [ ('Latest news', 'https://www.ukrinform.net/rss/block-lastnews'), ('War', 'https://www.ukrinform.net/rss/rubric-ato'), ('Politics', 'https://www.ukrinform.net/rss/rubric-polytics'), ('Economy', 'https://www.ukrinform.net/rss/rubric-economy'), ('Defense', 'https://www.ukrinform.net/rss/rubric-defense'), ('Society and Culture', 'https://www.ukrinform.net/rss/rubric-society'), ('Sports', 'https://www.ukrinform.net/rss/rubric-sports'), ('Crime', 'https://www.ukrinform.net/rss/rubric-crime'), ('Accidents and Emergencies', 'https://www.ukrinform.net/rss/rubric-emergencies') ] Versión en Español: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class UkrInform(BasicNewsRecipe): title = 'UkrInform (Espa\u00F1ol)' __author__ = 'bugmen00t' description = 'Agencia de noticias nacional de Ucrania, fuente de informaci\u00F3n sobre la vida pol\u00EDtica, econ\u00F3mica, social, cient\u00EDfica, cultural y p\u00FAblica en Ucrania y en el extranjero.' publisher = 'Ministerio de Cultura y Pol\u00EDtica de Informaci\u00F3n de Ucrania' category = 'newspaper' cover_url = u'https://static.ukrinform.com/photos/2022_05/thumb_files/630_360_1651819943-560.jpg' language = 'es_UK' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 30 remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ dict(name='aside'), dict(name='img', attrs={'class': 'pixel'}), dict(name='section', attrs={'class': 'read'}), dict(name='div', attrs={'data-name': 'int_hidden'}) ] feeds = [ ('\u00DAltimas noticias', 'https://www.ukrinform.es/rss/block-lastnews'), ('Guerra', 'https://www.ukrinform.es/rss/rubric-ato'), ('Pol\u00EDtica', 'https://www.ukrinform.es/rss/rubric-polytics'), ('Econom\u00EDa', 'https://www.ukrinform.es/rss/rubric-economy'), ('Defensa', 'https://www.ukrinform.es/rss/rubric-defense'), ('Sociedad y Cultura', 'https://www.ukrinform.es/rss/rubric-society'), ('Deportes', 'https://www.ukrinform.es/rss/rubric-sports'), ('Crimen', 'https://www.ukrinform.es/rss/rubric-crime'), ('Desastres y emergencias', 'https://www.ukrinform.es/rss/rubric-emergencies') ] In deutscher Sprache: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class UkrInform(BasicNewsRecipe): title = 'UkrInform (Deutsch)' __author__ = 'bugmen00t' description = 'Nationale Nachrichtenagentur der Ukraine, eine Informationsquelle \u00FCber das politische, wirtschaftliche, soziale, wissenschaftliche, kulturelle und \u00F6ffentliche Leben in der Ukraine und der Welt.' publisher = 'Ministerium f\u00FCr Kultur und Informationspolitik der Ukraine' category = 'newspaper' cover_url = u'https://static.ukrinform.com/photos/2022_05/thumb_files/630_360_1651819943-560.jpg' language = 'de_UK' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 30 remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ dict(name='aside'), dict(name='img', attrs={'class': 'pixel'}), dict(name='section', attrs={'class': 'read'}), dict(name='div', attrs={'data-name': 'int_hidden'}) ] feeds = [ ('Aktuelle Nachrichten', 'https://www.ukrinform.de/rss/block-lastnews'), ('Krieg', 'https://www.ukrinform.de/rss/rubric-ato'), ('Politik', 'https://www.ukrinform.de/rss/rubric-polytics'), ('Wirtschaft', 'https://www.ukrinform.de/rss/rubric-economy'), ('Milit\u00E4r', 'https://www.ukrinform.de/rss/rubric-defense'), ('Gesellschaft und Kultur', 'https://www.ukrinform.de/rss/rubric-society'), ('Sport', 'https://www.ukrinform.de/rss/rubric-sports'), ('Kriminalit\u00E4t', 'https://www.ukrinform.de/rss/rubric-crime'), ('Notstand und Notf\u00E4lle', 'https://www.ukrinform.de/rss/rubric-emergencies') ] Version en français: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class UkrInform(BasicNewsRecipe): title = 'UkrInform (Fran\u00E7ais)' __author__ = 'bugmen00t' description = 'Agence de presse nationale de l\u0027Ukraine. C\u2019est une source d\u0027informations sur la vie politique, \u00E9conomique, scientifique, culturelle et sociale en Ukraine et \u00E0 l\u0027\u00E9tranger.' publisher = 'Minist\u00E8re de la culture et de la politique d\u0027information de l\u0027Ukraine' category = 'newspaper' cover_url = u'https://static.ukrinform.com/photos/2022_05/thumb_files/630_360_1651819943-560.jpg' language = 'fr_UK' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 30 remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ dict(name='aside'), dict(name='img', attrs={'class': 'pixel'}), dict(name='section', attrs={'class': 'read'}), dict(name='div', attrs={'data-name': 'int_hidden'}) ] feeds = [ ('Derni\u00E8res infos', 'https://www.ukrinform.fr/rss/block-lastnews'), ('Guerre', 'https://www.ukrinform.fr/rss/rubric-ato'), ('Politique', 'https://www.ukrinform.fr/rss/rubric-polytics'), ('\u00C9conomie', 'https://www.ukrinform.fr/rss/rubric-economy'), ('D\u00E9fense', 'https://www.ukrinform.fr/rss/rubric-defense'), ('Soci\u00E9t\u00E9 et culture', 'https://www.ukrinform.fr/rss/rubric-society'), ('Sport', 'https://www.ukrinform.fr/rss/rubric-sports'), ('Criminalit\u00E9', 'https://www.ukrinform.fr/rss/rubric-crime'), ('Accidents', 'https://www.ukrinform.fr/rss/rubric-emergencies') ] 日本語: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class UkrInform(BasicNewsRecipe): title = '\u30A6\u30AF\u30EB\u30A4\u30F3\u30D5\u30A9\u30EB\u30E0\uFF08UkrInform\uFF09' __author__ = 'bugmen00t' description = '\u30A6\u30AF\u30E9\u30A4\u30CA\u3067\u552F\u4E00\u306E\u56FD\u55B6\u901A\u4FE1\u793E\u3067\u3059\u3001\u56FD\u5185\u6700\u5927\u306E\u5730\u65B9\u652F\u90E8\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u3068\u8907\u6570\u306E\u5916\u56FD\u652F\u5C40\u3092\u6709\u3057\u3066\u3044\u307E\u3059\u3002' publisher = '\u30A6\u30AF\u30E9\u30A4\u30CA\u6587\u5316\u30FB\u60C5\u5831\u653F\u7B56\u7701' category = 'newspaper' cover_url = u'https://static.ukrinform.com/photos/2022_05/thumb_files/630_360_1651819943-560.jpg' language = 'ja_UK' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 30 remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ dict(name='aside'), dict(name='img', attrs={'class': 'pixel'}), dict(name='section', attrs={'class': 'read'}), dict(name='div', attrs={'data-name': 'int_hidden'}) ] feeds = [ ('\u65B0\u7740\u30CB\u30E5\u30FC\u30B9', 'https://www.ukrinform.jp/rss/block-lastnews'), ('\u6226\u4E89', 'https://www.ukrinform.jp/rss/rubric-ato'), ('\u653F\u6CBB', 'https://www.ukrinform.jp/rss/rubric-polytics'), ('\u7D4C\u6E08', 'https://www.ukrinform.jp/rss/rubric-economy'), ('\u9632\u885B', 'https://www.ukrinform.jp/rss/rubric-defense'), ('\u793E\u4F1A\u30FB\u6587\u5316', 'https://www.ukrinform.jp/rss/rubric-society'), ('\u30B9\u30DD\u30FC\u30C4', 'https://www.ukrinform.jp/rss/rubric-sports'), ('\u72AF\u7F6A', 'https://www.ukrinform.jp/rss/rubric-crime'), ('\u4E8B\u6545\u30FB\u7DCA\u6025\u4E8B\u614B', 'https://www.ukrinform.jp/rss/rubric-emergencies') ] Wersja polska: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class UkrInform(BasicNewsRecipe): title = 'UkrInform (polska)' __author__ = 'bugmen00t' description = 'Krajowa agencja informacyjna Ukrainy, \u017Ar\u00F3d\u0142o informacji o \u017Cyciu politycznym, gospodarczym, spo\u0142ecznym, naukowym, kulturalnym i spo\u0142ecznym na Ukrainie i za granic\u0105.' publisher = 'Ministerstwo Kultury i Polityki Informacyjnej Ukrainy' category = 'newspaper' cover_url = u'https://static.ukrinform.com/photos/2022_05/thumb_files/630_360_1651819943-560.jpg' language = 'pl_UK' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 30 remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ dict(name='aside'), dict(name='img', attrs={'class': 'pixel'}), dict(name='section', attrs={'class': 'read'}), dict(name='div', attrs={'data-name': 'int_hidden'}) ] feeds = [ ('Najnowsze wiadomo\u015Bci', 'https://www.ukrinform.pl/rss/block-lastnews'), ('Wojna', 'https://www.ukrinform.pl/rss/rubric-ato'), ('Polityka', 'https://www.ukrinform.pl/rss/rubric-polytics'), ('Gospodarka', 'https://www.ukrinform.pl/rss/rubric-economy'), ('Obrona', 'https://www.ukrinform.pl/rss/rubric-defense'), ('Spo\u0142ecze\u0144stwo i kultura', 'https://www.ukrinform.pl/rss/rubric-society'), ('Sport', 'https://www.ukrinform.pl/rss/rubric-sports'), ('Wydarzenia kryminalne', 'https://www.ukrinform.pl/rss/rubric-crime'), ('Zdarzenia i bezpiecze\u0144stwo', 'https://www.ukrinform.pl/rss/rubric-emergencies') ] Last edited by bugmen00t; 08-01-2022 at 08:13 AM. |
08-02-2022, 07:03 AM | #19 |
Connoisseur
Posts: 75
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard + Kindle Voyage WiFi + Kindle PW11 Kids
|
New recipes (part 07 of ??)
Keep on going, this time Ukrainian sources.
NEW MULTI-LANGUAGE RECIPES (OF UKRAINIAN SOURCES) Освіта.ua: education in Ukraine and abroad. Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Osvita(BasicNewsRecipe): title = '\u041E\u0441\u0432\u0456\u0442\u0430.ua' __author__ = 'bugmen00t' description = '\u0423\u0441\u0435 \u043F\u0440\u043E \u043E\u0441\u0432\u0456\u0442\u0443 \u0432 \u0423\u043A\u0440\u0430\u0457\u043D\u0456 \u0442\u0430 \u0437\u0430 \u043A\u043E\u0440\u0434\u043E\u043D\u043E\u043C: \u0442\u0435\u043C\u0430\u0442\u0438\u0447\u043D\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441, \u043F\u0440\u0438\u0441\u0432\u044F\u0447\u0435\u043D\u0438\u0439 \u043E\u0441\u0432\u0456\u0442\u0456 \u0432 \u0423\u043A\u0440\u0430\u0457\u043D\u0456 \u0442\u0430 \u0437\u0430 \u0457\u0457 \u043C\u0435\u0436\u0430\u043C\u0438, \u0454 \u0430\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u0438\u043C \u0434\u0436\u0435\u0440\u0435\u043B\u043E\u043C \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0457 \u0443 \u0446\u0456\u0439 \u0441\u0444\u0435\u0440\u0456.' publisher = '\u041E\u0441\u0432\u0456\u0442\u0430.ua' category = 'blog' cover_url = u'http://osvita.ua/doc/i/Contacts-logo.jpg' language = 'uk' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 30 remove_tags_before = dict(name='div', attrs={'id': 'body'}) remove_tags_after = dict(name='div', attrs={'id': 'body'}) remove_tags = [ # Unable to fetch images, removing them completely dict(name='img'), dict(name='p', attrs={'class': 'info'}) ] feeds = [ ('\u041D\u043E\u0432\u0438\u043D\u0438', 'https://osvita.ua/rss/') ] def print_version(self, url): return url + 'print' Russian version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Osvita(BasicNewsRecipe): title = '\u041E\u0441\u0432\u0456\u0442\u0430.ua' __author__ = 'bugmen00t' description = '\u0422\u0435\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441, \u043F\u043E\u0441\u0432\u044F\u0449\u0451\u043D\u043D\u044B\u0439 \u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u044E \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435 \u0438 \u0437\u0430 \u0440\u0443\u0431\u0435\u0436\u043E\u043C.' publisher = '\u041E\u0441\u0432\u0456\u0442\u0430.ua' category = 'blog' cover_url = u'http://osvita.ua/doc/i/Contacts-logo.jpg' language = 'ru_uk' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 30 remove_tags_before = dict(name='div', attrs={'id': 'body'}) remove_tags_after = dict(name='div', attrs={'id': 'body'}) remove_tags = [ # Unable to fetch images, removing them completely dict(name='img'), dict(name='p', attrs={'class': 'info'}) ] feeds = [ ('\u041D\u043E\u0432\u0438\u043D\u0438', 'https://ru.osvita.ua/rss/') ] def print_version(self, url): return url + 'print' ЛІГА.net: business news from Ukraine. Favicon. Ukrainian version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class LigaNet(BasicNewsRecipe): title = '\u041B\u0406\u0413\u0410.net (UA)' __author__ = 'bugmen00t' description = '\u0414\u0456\u043B\u043E\u0432\u0438\u0439 \u043D\u043E\u0432\u0438\u043D\u043D\u0438\u0439 \u043F\u043E\u0440\u0442\u0430\u043B' publisher = 'Ligamedia' category = 'blog' cover_url = u'https://www.liga.net/design/images/logo_liga.png' language = 'uk' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 30 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'id': 'news-text'}) remove_tags = [ dict(name='footer'), dict(name='div', attrs={'class': 'more-link red'}), dict(name='div', attrs={'class': 'read-too'}), dict(name='div', attrs={'class': 'to-send-row'}), dict(name='div', attrs={'class': 'hint-row'}), dict(name='div', attrs={'class': 'chronicle-top-eye'}), dict(name='div', attrs={'class': 'chronicle-top-comm comm-btns'}), dict(name='div', attrs={'class': 'chronicle-news m-t-30'}), dict(name='div', attrs={'class': 'right-inner-content'}), dict(name='div', attrs={'class': 'right-part'}), dict(name='div', attrs={'class': 'hreflang-link'}), dict(name='div', attrs={'class': 'vakansii-block-article'}), dict(name='div', attrs={'class': 'col-12 col-md p-side-10 sp-card-paddings'}), dict(name='div', attrs={'class': 'social-shares d-flex justify-content-center'}), dict(name='div', attrs={'class': 'social-shares d-block'}), dict(name='div', attrs={'class': 'social-likes clearfix hidden-1280 '}), dict(name='div', attrs={'class': 'soc-item comm-btns'}), dict(name='div', attrs={'class': 'soc-buttons'}), dict(name='div', attrs={'class': 'warning m-t-20 d-none d-md-none d-lg-block'}), dict(name='div', attrs={'id': 'news-list-right'}), dict(name='div', attrs={'id': 'premium_mobile'}), dict(name='div', attrs={'id': 'premium2_mobile'}), dict(name='div', attrs={'class': 'marketing-block'}), dict(name='span', attrs={'class': 'social-likes__button'}), dict(name='div', attrs={'class': 'marketing-block'}) ] feeds = [ ('\u041D\u043E\u0432\u0438\u043D\u0438: \u0433\u043E\u043B\u043E\u0432\u043D\u0456 \u043C\u0430\u0442\u0435\u0440\u0456\u0430\u043B\u0438', 'https://www.liga.net/newsua/top/rss.xml'), ('\u041D\u043E\u0432\u0438\u043D\u0438: \u0432\u0441\u0456 \u043C\u0430\u0442\u0435\u0440\u0456\u0430\u043B\u0438', 'https://www.liga.net/newsua/all/rss.xml') ] Russian version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class LigaNet(BasicNewsRecipe): title = '\u041B\u0406\u0413\u0410.net' __author__ = 'bugmen00t' description = '\u0414\u0456\u043B\u043E\u0432\u0438\u0439 \u043D\u043E\u0432\u0438\u043D\u043D\u0438\u0439 \u043F\u043E\u0440\u0442\u0430\u043B' publisher = 'Ligamedia' category = 'blog' cover_url = u'https://www.liga.net/design/images/logo_liga.png' language = 'ru_UK' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 30 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'id': 'news-text'}) remove_tags = [ dict(name='footer'), dict(name='div', attrs={'class': 'more-link red'}), dict(name='div', attrs={'class': 'read-too'}), dict(name='div', attrs={'class': 'to-send-row'}), dict(name='div', attrs={'class': 'hint-row'}), dict(name='div', attrs={'class': 'chronicle-top-eye'}), dict(name='div', attrs={'class': 'chronicle-top-comm comm-btns'}), dict(name='div', attrs={'class': 'chronicle-news m-t-30'}), dict(name='div', attrs={'class': 'right-inner-content'}), dict(name='div', attrs={'class': 'right-part'}), dict(name='div', attrs={'class': 'hreflang-link'}), dict(name='div', attrs={'class': 'vakansii-block-article'}), dict(name='div', attrs={'class': 'col-12 col-md p-side-10 sp-card-paddings'}), dict(name='div', attrs={'class': 'social-shares d-flex justify-content-center'}), dict(name='div', attrs={'class': 'social-shares d-block'}), dict(name='div', attrs={'class': 'social-likes clearfix hidden-1280 '}), dict(name='div', attrs={'class': 'soc-item comm-btns'}), dict(name='div', attrs={'class': 'soc-buttons'}), dict(name='div', attrs={'class': 'warning m-t-20 d-none d-md-none d-lg-block'}), dict(name='div', attrs={'id': 'news-list-right'}), dict(name='div', attrs={'id': 'premium_mobile'}), dict(name='div', attrs={'id': 'premium2_mobile'}), dict(name='div', attrs={'class': 'marketing-block'}), dict(name='span', attrs={'class': 'social-likes__button'}), dict(name='div', attrs={'class': 'marketing-block'}) ] feeds = [ ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438: \u0433\u043B\u0430\u0432\u043D\u044B\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://www.liga.net/news/top/rss.xml'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438: \u043D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://www.liga.net/news/rss.xml'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438: \u0441\u0442\u0430\u0442\u044C\u0438', 'https://www.liga.net/news/articles/rss.xml'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438: \u0438\u043D\u0442\u0435\u0440\u0432\u044C\u044E', 'https://www.liga.net/news/interview/rss.xml'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438: \u043C\u043D\u0435\u043D\u0438\u044F', 'https://www.liga.net/news/opinion/rss.xml'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438: \u0444\u043E\u0442\u043E\u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://www.liga.net/news/photo/rss.xml'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438: \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0430', 'https://www.liga.net/news/politics/rss.xml'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438: \u044D\u043A\u043E\u043D\u043E\u043C\u0438\u043A\u0430', 'https://www.liga.net/news/economics/rss.xml'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438: \u043E\u0431\u0449\u0435\u0441\u0442\u0432\u043E', 'https://www.liga.net/news/society/rss.xml'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438: \u043C\u0438\u0440', 'https://www.liga.net/news/world/rss.xml'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438: \u0441\u0442\u043E\u043B\u0438\u0446\u0430', 'https://www.liga.net/news/capital/rss.xml'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438: \u0441\u043F\u043E\u0440\u0442', 'https://www.liga.net/news/sport/rss.xml'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438: \u0437\u0434\u043E\u0440\u043E\u0432\u044C\u0435', 'https://www.liga.net/news/health/rss.xml'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438: \u043A\u0443\u043B\u044C\u0442\u0443\u0440\u0430', 'https://www.liga.net/news/culture/rss.xml'), ('\u0412\u0441\u0435 \u043C\u043D\u0435\u043D\u0438\u044F', 'https://www.liga.net/opinion/rss.xml'), ('\u0411\u0438\u0437\u043D\u0435\u0441: \u0433\u043B\u0430\u0432\u043D\u044B\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://www.liga.net/biz/top/rss.xml'), ('\u0411\u0438\u0437\u043D\u0435\u0441: \u043D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://www.liga.net/biz/news/rss.xml'), ('\u0411\u0438\u0437\u043D\u0435\u0441: \u0441\u0442\u0430\u0442\u044C\u0438', 'https://www.liga.net/biz/articles/rss.xml'), ('\u0411\u0438\u0437\u043D\u0435\u0441: \u0438\u043D\u0442\u0435\u0440\u0432\u044C\u044E', 'https://www.liga.net/biz/interview/rss.xml'), ('\u0411\u0438\u0437\u043D\u0435\u0441: \u043C\u043D\u0435\u043D\u0438\u044F', 'https://www.liga.net/biz/opinion/rss.xml'), ('\u0411\u0438\u0437\u043D\u0435\u0441: \u0444\u043E\u0442\u043E\u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://www.liga.net/biz/photo/rss.xml'), ('\u0424\u0438\u043D\u0430\u043D\u0441\u044B: \u0433\u043B\u0430\u0432\u043D\u044B\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://www.liga.net/fin/export/top.xml'), ('\u0424\u0438\u043D\u0430\u043D\u0441\u044B: \u043C\u043D\u0435\u043D\u0438\u044F', 'https://www.liga.net/fin/opinion/rss.xml'), ('\u0424\u0438\u043D\u0430\u043D\u0441\u044B: \u0431\u0430\u043D\u043A\u0438', 'https://www.liga.net/fin/export/bank.xml'), ('\u0424\u0438\u043D\u0430\u043D\u0441\u044B: \u0441\u0442\u0440\u0430\u0445\u043E\u0432\u0430\u043D\u0438\u0435', 'https://www.liga.net/fin/export/insurance.xml'), ('\u0424\u0438\u043D\u0430\u043D\u0441\u044B: \u043A\u0440\u0438\u043F\u0442\u043E\u044D\u043A\u043E\u043D\u043E\u043C\u0438\u043A\u0430', 'https://www.liga.net/fin/crypto/rss.xml'), ('\u0424\u0438\u043D\u0430\u043D\u0441\u044B: \u0444\u043E\u043D\u0434\u044B', 'https://www.liga.net/fin/export/funds.xml'), ('Tech: \u0433\u043B\u0430\u0432\u043D\u044B\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://www.liga.net/tech/top/rss.xml'), ('Tech: \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0438', 'https://www.liga.net/tech/technology/rss.xml'), ('Tech: \u0442\u0435\u043B\u0435\u043A\u043E\u043C', 'https://www.liga.net/tech/telecom/rss.xml'), ('Tech: \u0433\u0430\u0434\u0436\u0435\u0442\u044B', 'https://www.liga.net/tech/gadgets/rss.xml'), ('Tech: \u0441\u0432\u043E\u0439 \u0431\u0438\u0437\u043D\u0435\u0441', 'https://www.liga.net/tech/own-business/rss.xml'), ('Tech: \u0431\u0430\u0442\u0442\u043B\u044B', 'https://www.liga.net/tech/battles/rss.xml'), ('\u0411\u043B\u043E\u0433\u0438: \u0432\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://www.liga.net/rss/blog.xml') ] UNN: Ukrainian news agency, with emphasis on politics, social problems and economics. Favicon. Ukrainian version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class UNN(BasicNewsRecipe): title = '\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0456 \u041D\u0430\u0446\u0456\u043E\u043D\u0430\u043B\u044C\u043D\u0456 \u041D\u043E\u0432\u0438\u043D\u0438' __author__ = 'bugmen00t' description = '\u0423\u041D\u041D: \u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0456 \u041D\u0430\u0446\u0456\u043E\u043D\u0430\u043B\u044C\u043D\u0456 \u041D\u043E\u0432\u0438\u043D\u0438' publisher = '\u0406\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0439\u043D\u0435 \u0430\u0433\u0435\u043D\u0442\u0441\u0442\u0432\u043E \u00AB\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0456 \u041D\u0430\u0446\u0456\u043E\u043D\u0430\u043B\u044C\u043D\u0456 \u041D\u043E\u0432\u0438\u043D\u0438\u00BB' category = 'newspaper' cover_url = u'https://pechersk.kyivcity.gov.ua/done_img/b/11289.jpg' language = 'uk' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 50 remove_tags_before = dict(name='span', attrs={'itemprop': 'datePublished'}) remove_tags_after = dict(name='div', attrs={'class': 'b-news-full'}) remove_tags = [ dict(name='span', attrs={'class': 'view'}), dict(name='div', attrs={'class': 'b-news-tags'}), dict(name='div', attrs={'class': 'b-news-source'}), dict(name='div', attrs={'class': 'b-news-footer'}), dict(name='div', attrs={'class': 'b-notice-msg'}) ] feeds = [ ('\u041E\u043F\u0435\u0440\u0430\u0442\u0438\u0432\u043D\u0456 \u043D\u043E\u0432\u0438\u043D\u0438', 'https://www.unn.com.ua/rss/news_uk.xml'), ('\u041F\u0443\u0431\u043B\u0456\u043A\u0430\u0446\u0456\u0457', 'https://www.unn.com.ua/rss/publication_uk.xml'), ('\u0415\u043A\u0441\u043A\u043B\u044E\u0437\u0438\u0432\u043D\u0456 \u043D\u043E\u0432\u0438\u043D\u0438', 'https://www.unn.com.ua/rss/exclusive_uk.xml'), ('\u041F\u043E\u043B\u0456\u0442\u0438\u043A\u0430', 'https://www.unn.com.ua/rss/news_politics_uk.xml'), ('\u0415\u043A\u043E\u043D\u043E\u043C\u0456\u043A\u0430', 'https://www.unn.com.ua/rss/news_economics_uk.xml'), ('\u0410\u0433\u0440\u043E\u043D\u043E\u0432\u0438\u043D\u0438', 'https://www.unn.com.ua/rss/news_agronews_uk.xml'), ('\u041E\u0434\u0435\u0441\u0430', 'https://www.unn.com.ua/rss/news_odesa_uk.xml'), ('\u041A\u0438\u0457\u0432', 'https://www.unn.com.ua/rss/news_kiev_uk.xml'), ('COVID-19', 'https://www.unn.com.ua/rss/news_covid19_uk.xml'), ('\u0421\u0443\u0441\u043F\u0456\u043B\u044C\u0441\u0442\u0432\u043E', 'https://www.unn.com.ua/rss/news_society_uk.xml'), ('\u0417\u0434\u043E\u0440\u043E\u0432\u0027\u044F', 'https://www.unn.com.ua/rss/news_health_uk.xml'), ('\u0412\u0456\u0439\u043D\u0430', 'https://www.unn.com.ua/rss/news_war_uk.xml'), ('\u041A\u0440\u0438\u043C\u0456\u043D\u0430\u043B \u0442\u0430 \u041D\u041F', 'https://www.unn.com.ua/rss/news_criminal_uk.xml'), ('\u0423\u041D\u041D Lite', 'https://www.unn.com.ua/rss/news_lite_uk.xml'), ('\u041D\u043E\u0432\u0438\u043D\u0438 \u0421\u0432\u0456\u0442\u0443', 'https://www.unn.com.ua/rss/news_world_uk.xml'), ('\u0422\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0456\u0457', 'https://www.unn.com.ua/rss/news_tech_uk.xml'), ('\u0421\u043F\u043E\u0440\u0442', 'https://www.unn.com.ua/rss/news_sport_uk.xml'), ('\u041A\u0443\u043B\u044C\u0442\u0443\u0440\u0430', 'https://www.unn.com.ua/rss/news_culture_uk.xml'), ('\u041C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0456\u0430', 'https://www.unn.com.ua/rss/news_media_uk.xml') ] def print_version(self, url): return url + '?_part=main&_print=1' Russian version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class UNN(BasicNewsRecipe): title = '\u0423\u043A\u0440\u0430\u0438\u043D\u0441\u043A\u0438\u0435 \u041D\u0430\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0435 \u041D\u043E\u0432\u043E\u0441\u0442\u0438' __author__ = 'bugmen00t' description = '\u0423\u041D\u041D: \u0423\u043A\u0440\u0430\u0438\u043D\u0441\u043A\u0438\u0435 \u041D\u0430\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0435 \u041D\u043E\u0432\u043E\u0441\u0442\u0438' publisher = '\u0406\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0439\u043D\u0435 \u0430\u0433\u0435\u043D\u0442\u0441\u0442\u0432\u043E \u00AB\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0456 \u041D\u0430\u0446\u0456\u043E\u043D\u0430\u043B\u044C\u043D\u0456 \u041D\u043E\u0432\u0438\u043D\u0438\u00BB' category = 'newspaper' cover_url = u'https://argentum.ua/uploads/portfolio/2012/c043e0e18fd9f89df5fb421ab28cf609197011c2.png' language = 'ru_UK' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 50 remove_tags_before = dict(name='span', attrs={'itemprop': 'datePublished'}) remove_tags_after = dict(name='div', attrs={'class': 'b-news-full'}) remove_tags = [ dict(name='span', attrs={'class': 'view'}), dict(name='div', attrs={'class': 'b-news-tags'}), dict(name='div', attrs={'class': 'b-news-source'}), dict(name='div', attrs={'class': 'b-news-footer'}), dict(name='div', attrs={'class': 'b-notice-msg'}) ] feeds = [ ('\u041E\u043F\u0435\u0440\u0430\u0442\u0438\u0432\u043D\u044B\u0435 \u043D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://www.unn.com.ua/rss/news_ru.xml'), ('\u041F\u0443\u0431\u043B\u0438\u043A\u0430\u0446\u0438\u0438', 'https://www.unn.com.ua/rss/publication_ru.xml'), ('\u042D\u043A\u0441\u043A\u043B\u044E\u0437\u0438\u0432\u043D\u044B\u0435 \u043D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://www.unn.com.ua/rss/exclusive_ru.xml'), ('\u041F\u043E\u043B\u0438\u0442\u0438\u043A\u0430', 'https://www.unn.com.ua/rss/news_politics_ru.xml'), ('\u042D\u043A\u043E\u043D\u043E\u043C\u0438\u043A\u0430', 'https://www.unn.com.ua/rss/news_economics_ru.xml'), ('\u0410\u0433\u0440\u043E\u043D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://www.unn.com.ua/rss/news_agronews_ru.xml'), ('\u041E\u0434\u0435\u0441\u0441\u0430', 'https://www.unn.com.ua/rss/news_odesa_ru.xml'), ('\u041A\u0438\u0435\u0432', 'https://www.unn.com.ua/rss/news_kiev_ru.xml'), ('COVID-19', 'https://www.unn.com.ua/rss/news_covid19_ru.xml'), ('\u041E\u0431\u0449\u0435\u0441\u0442\u0432\u043E', 'https://www.unn.com.ua/rss/news_society_ru.xml'), ('\u0417\u0434\u043E\u0440\u043E\u0432\u044C\u0435', 'https://www.unn.com.ua/rss/news_health_ru.xml'), ('\u0412\u043E\u0439\u043D\u0430', 'https://www.unn.com.ua/rss/news_war_ru.xml'), ('\u041A\u0440\u0438\u043C\u0438\u043D\u0430\u043B \u0438 \u0427\u041F', 'https://www.unn.com.ua/rss/news_criminal_ru.xml'), ('\u0423\u041D\u041D Lite', 'https://www.unn.com.ua/rss/news_lite_ru.xml'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438 \u041C\u0438\u0440\u0430', 'https://www.unn.com.ua/rss/news_world_ru.xml'), ('\u0422\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0438', 'https://www.unn.com.ua/rss/news_tech_ru.xml'), ('\u0421\u043F\u043E\u0440\u0442', 'https://www.unn.com.ua/rss/news_sport_ru.xml'), ('\u041A\u0443\u043B\u044C\u0442\u0443\u0440\u0430', 'https://www.unn.com.ua/rss/news_culture_ru.xml'), ('\u041C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0438\u0430', 'https://www.unn.com.ua/rss/news_media_ru.xml') ] def print_version(self, url): return url + '?_part=main&_print=1' |
08-04-2022, 07:24 AM | #20 |
Connoisseur
Posts: 75
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard + Kindle Voyage WiFi + Kindle PW11 Kids
|
New recipes (part 08 of ??)
NEW RUSSIAN SOURCES Тайга.инфо: Siberian regional news portal. Favicon. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Tayga(BasicNewsRecipe): title = '\u0422\u0430\u0439\u0433\u0430.\u0438\u043D\u0444\u043E' __author__ = 'bugmen00t' description = '\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u0430\u043D\u0430\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442-\u0438\u0437\u0434\u0430\u043D\u0438\u0435 \u043E \u043F\u043E\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u0438 \u044D\u043A\u043E\u043D\u043E\u043C\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\u0445 \u0421\u0438\u0431\u0438\u0440\u0441\u043A\u043E\u0433\u043E \u0444\u0435\u0434\u0435\u0440\u0430\u043B\u044C\u043D\u043E\u0433\u043E \u043E\u043A\u0440\u0443\u0433\u0430.' publisher = '\u0422\u0430\u0439\u0433\u0430.\u0438\u043D\u0444\u043E' category = 'blog' cover_url = u'https://tayga.info/design/logo.svg' language = 'ru' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 60 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'class': 'news_content'}) remove_tags = [ dict(name='p', attrs={'class': 't_left'}) ] feeds = [ ('\u0422\u0430\u0439\u0433\u0430.\u0438\u043D\u0444\u043E', 'https://tayga.info/rss') ] Новая вкладка: blog about life in Russian regions. Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class NewTab(BasicNewsRecipe): title = '\u041D\u043E\u0432\u0430\u044F \u0432\u043A\u043B\u0430\u0434\u043A\u0430' __author__ = 'bugmen00t' description = '\u041F\u043B\u043E\u0449\u0430\u0434\u043A\u0430 \u0434\u043B\u044F \u043F\u0443\u0431\u043B\u0438\u043A\u0430\u0446\u0438\u0438 \u0440\u0435\u043F\u043E\u0440\u0442\u0430\u0436\u0435\u0439 \u0438 \u0437\u0430\u043C\u0435\u0442\u043E\u043A \u043E \u0442\u043E\u043C, \u043A\u0430\u043A \u043C\u0435\u043D\u044F\u044E\u0442\u0441\u044F \u0440\u0435\u0433\u0438\u043E\u043D\u044B \u0420\u043E\u0441\u0441\u0438\u0438 \u043F\u043E\u0441\u043B\u0435 24 \u0444\u0435\u0432\u0440\u0430\u043B\u044F 2022 \u0433\u043E\u0434\u0430.' publisher = '\u041C\u0438\u0445\u0430\u0438\u043B \u0414\u0430\u043D\u0438\u043B\u043E\u0432\u0438\u0447' category = 'blog' cover_url = u'https://static.tildacdn.com/tild3765-3961-4337-b366-323437626331/thenewtab-sn.jpg' language = 'ru' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 30 max_articles_per_feed = 20 remove_tags_before = dict(name='h1') remove_tags = [ dict(name='div', attrs={'class': 't-popup'}), dict(name='div', attrs={'class': 't185'}), dict(name='div', attrs={'class': 't403'}), dict(name='div', attrs={'class': 't404'}), dict(name='div', attrs={'class': 't134'}), ] feeds = [ ('\u041D\u043E\u0432\u0430\u044F \u0432\u043A\u043B\u0430\u0434\u043A\u0430', 'https://thenewtab.io/rss.xml') ] def preprocess_html(self, soup): for img in soup.findAll('img', attrs={'data-original': True}): img['src'] = img['data-original'] return soup Сноб: bimonthly magazine about art, culture, science and society. Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Snob(BasicNewsRecipe): title = '\u0421\u043D\u043E\u0431' __author__ = 'bugmen00t' description = '\u0414\u0438\u0441\u043A\u0443\u0441\u0441\u0438\u043E\u043D\u043D\u043E\u0435, \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E\u0435 \u0438 \u043E\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u043E \u0434\u043B\u044F \u043B\u044E\u0434\u0435\u0439, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0436\u0438\u0432\u0443\u0442 \u0432 \u0440\u0430\u0437\u043D\u044B\u0445 \u0441\u0442\u0440\u0430\u043D\u0430\u0445, \u0433\u043E\u0432\u043E\u0440\u044F\u0442 \u043D\u0430 \u0440\u0430\u0437\u043D\u044B\u0445 \u044F\u0437\u044B\u043A\u0430\u0445, \u043D\u043E \u0434\u0443\u043C\u0430\u044E\u0442 \u043F\u043E-\u0440\u0443\u0441\u0441\u043A\u0438.' publisher = '\u041E\u041E\u041E \u00AB\u0421\u043D\u043E\u0431 \u041C\u0435\u0434\u0438\u0430\u00BB' category = 'magazine' cover_url = u'https://snob.ru/indoc/tilda/995317/images/tild3233-6631-4664-b663-353636373235__e3057a5fee932ada1aaf.png' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 5 max_articles_per_feed = 50 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'entry__tags'}), dict(name='div', attrs={'class': 'entry__likes'}) ] feeds = [ ('\u0421\u043D\u043E\u0431', 'https://snob.ru/rss/') ] def get_article_url(self, article): link = article.get('link', None) return link.split('?utm')[0] Новый Калининград: regional news of Kaliningrad city and Kaliningrad district. Favicon. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class NewKaliningrad(BasicNewsRecipe): title = '\u041D\u043E\u0432\u044B\u0439 \u041A\u0430\u043B\u0438\u043D\u0438\u043D\u0433\u0440\u0430\u0434' __author__ = 'bugmen00t' description = '\u0420\u0435\u0433\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0439 \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442-\u043F\u043E\u0440\u0442\u0430\u043B \u041A\u0430\u043B\u0438\u043D\u0438\u043D\u0433\u0440\u0430\u0434\u0441\u043A\u043E\u0439 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u0438 \u0433\u043E\u0440\u043E\u0434\u0430 \u041A\u0430\u043B\u0438\u043D\u0438\u043D\u0433\u0440\u0430\u0434\u0430.' publisher = '\u0417\u0410\u041E "\u0422\u0432\u0438\u043A \u041C\u0430\u0440\u043A\u0435\u0442\u0438\u043D\u0433"' category = 'news' cover_url = u'https://www.newkaliningrad.ru/images/logo.gif' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 3 max_articles_per_feed = 100 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'class': 'content'}) remove_tags = [ dict(name='div', attrs={'class': 'continue-box'}) ] feeds = [ ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://www.newkaliningrad.ru/news/rss.xml') ] NEW UKRAINIAN SOURCES РБК-Украина: business and finances news agency. Favicon replacemet. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class RBCUA(BasicNewsRecipe): title = '\u0420\u0411\u041A-\u0423\u043A\u0440\u0430\u0457\u043D\u0430' __author__ = 'bugmen00t' description = '\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0435 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0439\u043D\u0435 \u0430\u0433\u0435\u043D\u0442\u0441\u0442\u0432\u043E.' publisher = '\u0422\u041E\u0412 \u00AB\u042E\u0431\u0456\u0442\u0456 \u041C\u0435\u0434\u0456\u0430\u00BB' category = 'news' cover_url = u'https://www.rbc.ua/static/img/r/b/rbc_pic_best_news_650x410_2_650x410_1_650x410_1_480x270.jpg' language = 'uk' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 3 max_articles_per_feed = 20 remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ dict(name='span', attrs={'class': 'lang-publication'}), dict(name='div', attrs={'class': 'share'}), dict(name='ins'), dict(name='div', attrs={'class': 'read-in-google'}), dict(name='div', attrs={'class': 'intext-tags'}) ] feeds = [ ('\u0420\u0411\u041A', 'https://www.rbc.ua/static/rss/all.ukr.rss.xml') ] Russian version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class RBCUA(BasicNewsRecipe): title = '\u0420\u0411\u041A-\u0423\u043A\u0440\u0430\u0438\u043D\u0430' __author__ = 'bugmen00t' description = '\u0423\u043A\u0440\u0430\u0438\u043D\u0441\u043A\u043E\u0435 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E\u0435 \u0430\u0433\u0435\u043D\u0442\u0441\u0442\u0432\u043E, \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u0443\u044E\u0449\u0435\u0435\u0441\u044F \u043D\u0430 \u0444\u0438\u043D\u0430\u043D\u0441\u043E\u0432\u044B\u0445, \u044D\u043A\u043E\u043D\u043E\u043C\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u0438 \u043F\u043E\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u0423\u043A\u0440\u0430\u0438\u043D\u044B.' publisher = '\u041E\u041E\u041E \u00AB\u042E\u0431\u0438\u0442\u0438 \u041C\u0435\u0434\u0438\u0430\u00BB' category = 'news' cover_url = u'https://www.rbc.ua/static/common/imgs/logo650.jpg' language = 'ru_UK' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 3 max_articles_per_feed = 20 remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ dict(name='span', attrs={'class': 'lang-publication'}), dict(name='div', attrs={'class': 'share'}), dict(name='ins'), dict(name='div', attrs={'class': 'read-in-google'}), dict(name='div', attrs={'class': 'intext-tags'}) ] feeds = [ ('\u0420\u0411\u041A', 'https://www.rbc.ua/static/rss/all.rus.rss.xml') ] НВ: information and news resource Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class NV(BasicNewsRecipe): title = '\u041D\u0412 (\u00AB\u041D\u043E\u0432\u0438\u0439 \u0427\u0430\u0441\u00BB)' __author__ = 'bugmen00t' description = '\u0429\u043E\u0442\u0438\u0436\u043D\u0435\u0432\u0438\u0439 \u0441\u0443\u0441\u043F\u0456\u043B\u044C\u043D\u043E-\u043F\u043E\u043B\u0456\u0442\u0438\u0447\u043D\u0438\u0439 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0439\u043D\u043E-\u043D\u043E\u0432\u0438\u043D\u043D\u0438\u0439 \u0441\u0430\u0439\u0442.' publisher = '\u0422\u041E\u0412 \u00AB\u0412\u0438\u0434\u0430\u0432\u043D\u0438\u0447\u0438\u0439 \u0434\u0456\u043C \u00AB\u041C\u0435\u0434\u0456\u0430-\u0414\u041A\u00BB' category = 'magazine' cover_url = u'https://static.nv.ua/shared/system/Article/posters/002/467/576/600x300/272ab80cd01e4022dcb4c691c9073e97.jpg' language = 'uk' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 40 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'article__content__footer'}), dict(name='div', attrs={'class': 'article__head__additional_views'}), dict(name='div', attrs={'class': 'show_two_positions '}), dict(name='div', attrs={'class': 'media__also__news'}), dict(name='div', attrs={'class': 'media__also__news_link'}), dict(name='blockquote', attrs={'class': 'code'}), dict(name='section', attrs={'class': 'article-share'}), dict(name='div', attrs={'class': 'nts-video-wrapper'}), dict(name='footer'), dict(name='div', attrs={'class': 'longread_tags'}), dict(name='div', attrs={'class': 'col-md-6 col-lg-3'}), dict(name='div', attrs={'class': 'copyright'}), dict(name='div', attrs={'class': 'media__video'}), dict(name='div', attrs={'class': 'media__embed'}) ] feeds = [ ('\u0412\u0441\u0456 \u043D\u043E\u0432\u0438\u043D\u0438', 'https://nv.ua/ukr/rss/all.xml'), ('\u0423\u043A\u0440\u0430\u0457\u043D\u0430', 'https://nv.ua/ukr/rss/2283.xml'), ('\u0421\u0432\u0456\u0442', 'https://nv.ua/ukr/rss/2318.xml'), ('\u041F\u043E\u0433\u043B\u044F\u0434\u0438', 'https://nv.ua/ukr/rss/2671.xml'), ('\u041A\u0438\u0457\u0432', 'https://nv.ua/ukr/rss/108.xml'), ('\u0410\u0440\u0442', 'https://nv.ua/ukr/rss/52.xml'), ('\u0414\u043E\u0441\u044C\u0454', 'https://nv.ua/ukr/rss/230.xml'), ('\u0411\u0456\u0437\u043D\u0435\u0441', 'https://nv.ua/ukr/rss/2292.xml'), ('\u041B\u043E\u043D\u0433\u0440\u0456\u0434\u0438', 'https://nv.ua/ukr/rss/2790.xml'), ('\u041A\u0430\u0440\u0442\u043A\u0438', 'https://nv.ua/ukr/rss/48.xml'), ('\u0422\u0435\u0445\u043D\u043E', 'https://nv.ua/ukr/rss/2346.xml'), ('\u0420\u0435\u0433\u0456\u043E\u043D\u0438', 'https://nv.ua/ukr/rss/231.xml'), ('\u0410\u0432\u0442\u043E', 'https://nv.ua/ukr/rss/154.xml'), ('Life', 'https://nv.ua/ukr/rss/2325.xml'), ('\u0417\u0434\u043E\u0440\u043E\u0432\u0027\u044F', 'https://nv.ua/ukr/rss/90.xml'), ('\u0421\u043F\u043E\u0440\u0442', 'https://nv.ua/ukr/rss/2371.xml'), ('\u0410\u0437\u0430\u0440\u0442', 'https://nv.ua/ukr/rss/178.xml'), ('\u0428\u043E\u043F\u0456\u043D\u0433', 'https://nv.ua/ukr/rss/131.xml'), ('LOL', 'https://nv.ua/ukr/rss/2365.xml'), ('\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u043D\u0438\u0439 \u0440\u043E\u0437\u0434\u0456\u043B', 'https://nv.ua/ukr/rss/118.xml'), ('\u0424\u041E\u0422\u041E', 'https://nv.ua/ukr/rss/2384.xml'), ('\u0420\u0430\u0434\u0456\u043E \u041D\u0412', 'https://nv.ua/ukr/rss/3050.xml'), ('BBC', 'https://nv.ua/ukr/rss/2836.xml'), ('\u0426\u0438\u0442\u0430\u0442\u0430 \u0434\u043D\u044F', 'https://nv.ua/ukr/rss/2672.xml'), ('\u0414\u043D\u0456\u043F\u0440\u043E', 'https://nv.ua/ukr/rss/232.xml'), ('\u041A\u0440\u0443\u043F\u043D\u0438\u043C \u043F\u043B\u0430\u043D\u043E\u043C', 'https://nv.ua/ukr/rss/2383.xml'), ('\u0411\u043B\u043E\u0433 \u041D\u0412', 'https://nv.ua/ukr/rss/225.xml'), ('\u041B\u044C\u0432\u0456\u0432', 'https://nv.ua/ukr/rss/233.xml'), ('\u041E\u0434\u0435\u0441\u0430', 'https://nv.ua/ukr/rss/234.xml'), ('\u0425\u0430\u0440\u043A\u0456\u0432', 'https://nv.ua/ukr/rss/235.xml'), ('\u0410\u043D\u0435\u043A\u0434\u043E\u0442\u0438', 'https://nv.ua/ukr/rss/2765.xml'), ('\u0415\u043A\u0441\u043A\u043B\u044E\u0437\u0438\u0432\u0438 \u041D\u0412', 'https://nv.ua/ukr/rss/119.xml') ] Russian version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class NV(BasicNewsRecipe): title = '\u041D\u0412 (\u00AB\u041D\u043E\u0432\u043E\u0435 \u0432\u0440\u0435\u043C\u044F\u00BB)' __author__ = 'bugmen00t' description = '\u0415\u0436\u0435\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u044B\u0439 \u043E\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E-\u043F\u043E\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0438 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043D\u043E\u0432\u043E\u0441\u0442\u043D\u043E\u0439 \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442-\u0440\u0435\u0441\u0443\u0440\u0441.' publisher = '\u041E\u041E\u041E \u00AB\u0418\u0437\u0434\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0434\u043E\u043C \u00AB\u041C\u0435\u0434\u0438\u0430-\u0414\u041A\u00BB' category = 'magazine' cover_url = u'https://yes-ukraine.org/imglib/_newimage/Yalta-annual-meeting/11th-yalta-annual-meeting/partners/media-partneri/nv_logo.png' language = 'ru_UK' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 40 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'article__content__footer'}), dict(name='div', attrs={'class': 'article__head__additional_views'}), dict(name='div', attrs={'class': 'show_two_positions '}), dict(name='div', attrs={'class': 'media__also__news'}), dict(name='div', attrs={'class': 'media__also__news_link'}), dict(name='blockquote', attrs={'class': 'code'}), dict(name='section', attrs={'class': 'article-share'}), dict(name='div', attrs={'class': 'nts-video-wrapper'}), dict(name='footer'), dict(name='div', attrs={'class': 'longread_tags'}), dict(name='div', attrs={'class': 'col-md-6 col-lg-3'}), dict(name='div', attrs={'class': 'copyright'}), dict(name='div', attrs={'class': 'media__video'}), dict(name='div', attrs={'class': 'media__embed'}) ] feeds = [ ('\u0412\u0441\u0435 \u043D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://nv.ua/rss/all.xml'), ('\u0423\u043A\u0440\u0430\u0438\u043D\u0430', 'https://nv.ua/rss/2283.xml'), ('\u041C\u0438\u0440', 'https://nv.ua/rss/2318.xml'), ('\u041C\u043D\u0435\u043D\u0438\u044F', 'https://nv.ua/rss/2671.xml'), ('\u041A\u0438\u0435\u0432', 'https://nv.ua/rss/108.xml'), ('\u0410\u0440\u0442', 'https://nv.ua/rss/52.xml'), ('\u0414\u043E\u0441\u044C\u0435', 'https://nv.ua/rss/230.xml'), ('\u0411\u0438\u0437\u043D\u0435\u0441', 'https://nv.ua/rss/2292.xml'), ('\u041B\u043E\u043D\u0433\u0440\u0438\u0434\u044B', 'https://nv.ua/rss/2790.xml'), ('\u041A\u0430\u0440\u0442\u043E\u0447\u043A\u0438', 'https://nv.ua/rss/48.xml'), ('\u0422\u0435\u0445\u043D\u043E', 'https://nv.ua/rss/2346.xml'), ('\u0420\u0435\u0433\u0438\u043E\u043D\u044B', 'https://nv.ua/rss/231.xml'), ('\u0410\u0432\u0442\u043E', 'https://nv.ua/rss/154.xml'), ('Life', 'https://nv.ua/rss/2325.xml'), ('\u0417\u0434\u043E\u0440\u043E\u0432\u044C\u0435', 'https://nv.ua/rss/90.xml'), ('\u0421\u043F\u043E\u0440\u0442', 'https://nv.ua/rss/2371.xml'), ('\u0410\u0437\u0430\u0440\u0442', 'https://nv.ua/rss/178.xml'), ('\u0428\u043E\u043F\u043F\u0438\u043D\u0433', 'https://nv.ua/rss/131.xml'), ('LOL', 'https://nv.ua/rss/2365.xml'), ('\u0421\u043A\u0440\u044B\u0442\u044B\u0439 \u0440\u0430\u0437\u0434\u0435\u043B', 'https://nv.ua/rss/118.xml'), ('\u0424\u041E\u0422\u041E', 'https://nv.ua/rss/2384.xml'), ('\u0420\u0430\u0434\u0438\u043E \u041D\u0412', 'https://nv.ua/rss/3050.xml'), ('BBC', 'https://nv.ua/rss/2836.xml'), ('\u0426\u0438\u0442\u0430\u0442\u0430 \u0434\u043D\u044F', 'https://nv.ua/rss/2672.xml'), ('\u0414\u043D\u0435\u043F\u0440', 'https://nv.ua/rss/232.xml'), ('\u041A\u0440\u0443\u043F\u043D\u044B\u043C \u043F\u043B\u0430\u043D\u043E\u043C', 'https://nv.ua/rss/2383.xml'), ('\u0411\u043B\u043E\u0433 \u041D\u0412', 'https://nv.ua/rss/225.xml'), ('\u041B\u044C\u0432\u043E\u0432', 'https://nv.ua/rss/233.xml'), ('\u041E\u0434\u0435\u0441\u0441\u0430', 'https://nv.ua/rss/234.xml'), ('\u0425\u0430\u0440\u044C\u043A\u043E\u0432', 'https://nv.ua/rss/235.xml'), ('\u0410\u043D\u0435\u043A\u0434\u043E\u0442\u044B', 'https://nv.ua/rss/2765.xml'), ('\u042D\u043A\u0441\u043A\u043B\u044E\u0437\u0438\u0432\u044B \u041D\u0412', 'https://nv.ua/rss/119.xml') ] English version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class NV(BasicNewsRecipe): title = 'NV (The New Voice of Ukraine)' __author__ = 'bugmen00t' description = 'Independent Ukrainian socio-political magazine and news resource.' publisher = 'Vydavnychyy Dim Media-DK LLC' category = 'magazine' cover_url = u'https://static.nv.ua/shared/system/Article/posters/002/439/752/600x300/65730a3918ebad6c86167b53f2b3e98a.jpg' language = 'en' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 30 max_articles_per_feed = 40 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'article__content__footer'}), dict(name='div', attrs={'class': 'article__head__additional_views'}), dict(name='div', attrs={'class': 'show_two_positions '}), dict(name='div', attrs={'class': 'media__also__news'}), dict(name='div', attrs={'class': 'media__also__news_link'}), dict(name='blockquote', attrs={'class': 'code'}), dict(name='section', attrs={'class': 'article-share'}), dict(name='div', attrs={'class': 'nts-video-wrapper'}), dict(name='footer'), dict(name='div', attrs={'class': 'longread_tags'}), dict(name='div', attrs={'class': 'top_donate'}), dict(name='div', attrs={'class': 'col-md-6 col-lg-3'}), dict(name='div', attrs={'class': 'copyright'}), dict(name='div', attrs={'class': 'media__video'}), dict(name='div', attrs={'class': 'media__embed'}) ] feeds = [ ('All News', 'https://english.nv.ua/rss/all_english.xml'), ('Life', 'https://english.nv.ua/rss/239.xml'), ('Business', 'https://english.nv.ua/rss/238.xml'), ('Nation', 'https://english.nv.ua/rss/237.xml'), ('Opinion', 'https://english.nv.ua/rss/240.xml') ] |
08-09-2022, 02:41 PM | #21 |
Connoisseur
Posts: 75
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard + Kindle Voyage WiFi + Kindle PW11 Kids
|
New recipes (part 09 of ??)
More Russian recipes
Люди Байкала: blog about life in rural Siberia. Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class BaikalJournal(BasicNewsRecipe): title = '\u041B\u044E\u0434\u0438 \u0411\u0430\u0439\u043A\u0430\u043B\u0430' __author__ = 'bugmen00t' description = '\u041D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u044B\u0439 \u0430\u0432\u0442\u043E\u0440\u0441\u043A\u0438\u0439 \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442-\u0436\u0443\u0440\u043D\u0430\u043B \u043E \u0436\u0438\u0437\u043D\u0438 \u0432 \u0421\u0438\u0431\u0438\u0440\u0438 \u0438 \u0432\u043E\u043A\u0440\u0443\u0433 \u0411\u0430\u0439\u043A\u0430\u043B\u0430, \u043E\u043F\u0438\u0441\u044B\u0432\u0430\u044E\u0449\u0438\u0439 \u0436\u0438\u0437\u043D\u044C \u0432 \u0441\u0438\u0431\u0438\u0440\u0441\u043A\u043E\u0439 \u0433\u043B\u0443\u0431\u0438\u043D\u043A\u0435.' publisher = '\u041E\u043B\u044C\u0433\u0430 \u041C\u0443\u0442\u043E\u0432\u0438\u043D\u0430, \u0415\u043B\u0435\u043D\u0430 \u0422\u0440\u0438\u0444\u043E\u043D\u043E\u0432\u0430' category = 'blog' cover_url = u'https://baikal-journal.ru/wp-content/themes/baikal/assets/img/logo-full.svg' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 30 max_articles_per_feed = 10 remove_tags = [ dict(name='div', attrs={'class': 'distance-badge'}), dict(name='div', attrs={'class': 'lead-footer__sharing'}), dict(name='div', attrs={'class': 'm-block-ctaline'}), dict(name='div', attrs={'class': 'm-block-readmore format-inline'}), dict(name='footer'), dict(name='div', attrs={'class': 'related-block'}), dict(name='div', attrs={'class': 'selection-block'}), dict(name='div', attrs={'class': 'last-cta'}) ] feeds = [ ('\u041B\u044E\u0434\u0438 \u0411\u0430\u0439\u043A\u0430\u043B\u0430', 'https://baikal-journal.ru/feed/') ] Настоящее время: Prague-based Russian-language TV channel founded by RFE/RL & VoA. Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class CurrentTime(BasicNewsRecipe): title = '\u041D\u0430\u0441\u0442\u043E\u044F\u0449\u0435\u0435 \u0432\u0440\u0435\u043C\u044F' __author__ = 'bugmen00t' description = '\u0422\u0435\u043B\u0435\u043A\u0430\u043D\u0430\u043B "\u041D\u0430\u0441\u0442\u043E\u044F\u0449\u0435\u0435 \u0412\u0440\u0435\u043C\u044F" \u0440\u0430\u0441\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u043E \u0432\u0430\u0436\u043D\u044B\u0445 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u0438 \u0437\u043B\u043E\u0431\u043E\u0434\u043D\u0435\u0432\u043D\u044B\u0445 \u0442\u0435\u043C\u0430\u0445, \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044F \u0430\u0443\u0434\u0438\u0442\u043E\u0440\u0438\u0438 \u0442\u043E, \u0447\u0442\u043E \u043D\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043C\u043E\u0433\u0443\u0442 \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0442\u044C \u043C\u0435\u0441\u0442\u043D\u044B\u0435 \u0421\u041C\u0418: \u043D\u043E\u0432\u043E\u0441\u0442\u0438 \u0431\u0435\u0437 \u0446\u0435\u043D\u0437\u0443\u0440\u044B, \u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0439 \u043E\u0431\u043C\u0435\u043D \u043C\u043D\u0435\u043D\u0438\u044F\u043C\u0438, \u043E\u0442\u043A\u0440\u044B\u0442\u043E\u0435 \u043E\u0431\u0441\u0443\u0436\u0434\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0431\u043B\u0435\u043C.' publisher = 'RFE/RL ("\u0420\u0430\u0434\u0438\u043E \u0421\u0432\u043E\u0431\u043E\u0434\u043D\u0430\u044F \u0415\u0432\u0440\u043E\u043F\u0430"/"\u0420\u0430\u0434\u0438\u043E \u0421\u0432\u043E\u0431\u043E\u0434\u0430") \u043F\u0440\u0438 \u0443\u0447\u0430\u0441\u0442\u0438\u0438 VoA ("\u0413\u043E\u043B\u043E\u0441 \u0410\u043C\u0435\u0440\u0438\u043A\u0438")' category = 'newspaper' cover_url = u'https://www.currenttime.tv/Content/responsive/RFE/ru-RU-TV/img/top_logo_news.png' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False remove_empty_feeds = True oldest_article = 14 max_articles_per_feed = 20 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'class': 'body-container'}) remove_tags = [ dict(name='div', attrs={'class': 'publishing-details '}), dict(name='div', attrs={'class': 'separator'}), dict(name='div', attrs={'class': 'links'}), dict(name='div', attrs={'class': 'share--box'}), dict(name='aside'), dict(name='div', attrs={'class': 'media-block also-read'}), dict(name='div', attrs={'class': 'media-block-wrap'}), dict(name='div', attrs={'class': 'media-download'}), dict(name='div', attrs={'class': 'wsw__embed'}), dict(name='div', attrs={'class': 'share--box'}), dict(name='div', attrs={'class': 'prog-hdr'}), dict(name='div', attrs={'class': 'dropdown__holder'}), dict(name='div', attrs={'id': 'ymla-section'}), dict(name='div', attrs={'id': 'comments'}), dict(name='a', attrs={'class': 'back-to-top-link'}), dict(name='footer'), dict(name='li', attrs={'class': 'socials block-socials'}), dict(name='div', attrs={'data-sp_api': 'pangea-video'}) ] feeds = [ ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://www.currenttime.tv/api/zgbip_e_tpp_'), ('\u0421\u0435\u043C\u044C \u0441\u043E\u0440\u043E\u043A', 'https://www.currenttime.tv/api/ztktpyeimupt'), ('\u042D\u043A\u0441\u043A\u043B\u044E\u0437\u0438\u0432', 'https://www.currenttime.tv/api/zpyomoe-rimi'), ('\u0412\u044B\u0431\u043E\u0440 \u0440\u0435\u0434\u0430\u043A\u0446\u0438\u0438', 'https://www.currenttime.tv/api/zqk-poekpbpo'), ('\u0420\u043E\u0441\u0441\u0438\u044F', 'https://www.currenttime.tv/api/zuvmpvepo_pv'), ('\u0423\u043A\u0440\u0430\u0438\u043D\u0430', 'https://www.currenttime.tv/api/zkvmptemo_pt'), ('\u0411\u0435\u043B\u0430\u0440\u0443\u0441\u044C', 'https://www.currenttime.tv/api/zvvmm_eoo_mt'), ('\u0410\u0437\u0438\u044F', 'https://www.currenttime.tv/api/zbvtpqetoupq'), ('\u0415\u0432\u0440\u043E\u043F\u0430', 'https://www.currenttime.tv/api/z-vmpoevo_pi'), ('\u0410\u043C\u0435\u0440\u0438\u043A\u0430', 'https://www.currenttime.tv/api/zbvmpieto_pp'), ('\u0411\u043B\u0438\u0436\u043D\u0438\u0439 \u0412\u043E\u0441\u0442\u043E\u043A', 'https://www.currenttime.tv/api/zrvtppeuqupm'), ('\u041B\u043E\u043D\u0433\u0440\u0438\u0434\u044B', 'https://www.currenttime.tv/api/zibmmyejv_my'), ('\u0420\u0435\u043F\u043E\u0440\u0442\u0430\u0436', 'https://www.currenttime.tv/api/zrpppqeujppo'), ('\u0420\u0435\u043F\u043E\u0440\u0442\u0430\u0436\u0438 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B \u0412\u0435\u0447\u0435\u0440', 'https://www.currenttime.tv/api/zvrrmoeourmp'), ('\u0418\u043D\u0442\u0435\u0440\u0432\u044C\u044E', 'https://www.currenttime.tv/api/zqpppoekjppi'), ('\u0418\u043D\u0444\u043E\u0433\u0440\u0430\u0444\u0438\u043A\u0430', 'https://www.currenttime.tv/api/zmqmpyebumpv') ] Фонтанка: Saint Petersburg news portal. Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Fontanka(BasicNewsRecipe): title = '\u0424\u043E\u043D\u0442\u0430\u043D\u043A\u0430' __author__ = 'bugmen00t' description = '\u0415\u0436\u0435\u0434\u043D\u0435\u0432\u043D\u043E\u0435 \u043F\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0441\u043A\u043E\u0435 \u043E\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E-\u043F\u043E\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0441\u0435\u0442\u0435\u0432\u043E\u0435 \u0438\u0437\u0434\u0430\u043D\u0438\u0435.' publisher = '\u0410\u041E "\u0410\u0416\u0423\u0420-\u041C\u0415\u0414\u0418\u0410"' category = 'blog' cover_url = u'https://www.fontanka.ru/longreads/69505589/2015/images/tild3834-3362-4166-b239-366134363733____-01.png' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 30 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='section', attrs={'itemprop': 'articleBody'}) remove_tags = [ dict(name='div', attrs={'class': 'ADdj ADc5'}), dict(name='div', attrs={'class': 'DLj1'}), dict(name='div', attrs={'class': 'DTrp'}), dict(name='div', attrs={'class': 'EHed'}), dict(name='div', attrs={'class': 'FHwp'}), dict(name='div', attrs={'class': 'ENr-'}), dict(name='div', attrs={'class': 'ENt7'}), dict(name='div', attrs={'class': 't004'}), dict(name='div', attrs={'class': 't120'}), dict(name='div', attrs={'class': 't123'}), dict(name='div', attrs={'class': 't405'}), dict(name='div', attrs={'class': 't463'}), # For articles from https://doctorpiter.ru dict(name='div', attrs={'class': 'article__block article__block_type-links'}), dict(name='div', attrs={'class': 'feedback-request-form__before'}), dict(name='div', attrs={'class': 'related-entities-container'}), dict(name='div', attrs={'class': 'tags article-footer__tags'}), dict(name='hr', attrs={'class': 'article-footer-divider'}) ] feeds = [ ('Fontanka.ru', 'https://www.fontanka.ru/fontanka.rss') ] The Bell: business news Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class TheBell(BasicNewsRecipe): title = 'The Bell' __author__ = 'bugmen00t' description = '\u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442-\u0438\u0437\u0434\u0430\u043D\u0438\u0435 \u0438 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u0431\u044E\u043B\u043B\u0435\u0442\u0435\u043D\u044C, \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u0443\u044E\u0449\u0435\u0435\u0441\u044F \u043D\u0430 \u0431\u0438\u0437\u043D\u0435\u0441-\u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445.' publisher = '\u0415\u043B\u0438\u0437\u0430\u0432\u0435\u0442\u0430 \u041E\u0441\u0435\u0442\u0438\u043D\u0441\u043A\u0430\u044F, \u0418\u0440\u0438\u043D\u0430 \u041C\u0430\u043B\u043A\u043E\u0432\u0430' category = 'newspaper' cover_url = u'https://thebell.io/wp-content/uploads/2018/03/thebell-cover.png' language = 'ru' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 20 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'class': 'post'}) remove_tags = [ dict(name='div', attrs={'class': 'post_bottom ng-tns-c84-1 ng-star-inserted'}), dict(name='div', attrs={'class': 'post_tags ng-tns-c84-1 ng-star-inserted'}), dict(name='div', attrs={'class': 'post_subscribe ng-tns-c84-1 ng-star-inserted'}), dict(name='div', attrs={'class': 'author__content_image author__content_image_small ng-star-inserted'}), dict(name='div', attrs={'class': 'email email_small ng-star-inserted'}), dict(name='div', attrs={'class': 'post_share ng-tns-c84-1'}), dict(name='div', attrs={'class': 'social_media'}) ] feeds = [ ('The Bell', 'https://thebell.io/feed') ] Fixed recipe for Сноб (snob.recipe): URL transformation subroutine lacked the last line Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Snob(BasicNewsRecipe): title = '\u0421\u043D\u043E\u0431' __author__ = 'bugmen00t' description = '\u0414\u0438\u0441\u043A\u0443\u0441\u0441\u0438\u043E\u043D\u043D\u043E\u0435, \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E\u0435 \u0438 \u043E\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0435 \u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u043E \u0434\u043B\u044F \u043B\u044E\u0434\u0435\u0439, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0436\u0438\u0432\u0443\u0442 \u0432 \u0440\u0430\u0437\u043D\u044B\u0445 \u0441\u0442\u0440\u0430\u043D\u0430\u0445, \u0433\u043E\u0432\u043E\u0440\u044F\u0442 \u043D\u0430 \u0440\u0430\u0437\u043D\u044B\u0445 \u044F\u0437\u044B\u043A\u0430\u0445, \u043D\u043E \u0434\u0443\u043C\u0430\u044E\u0442 \u043F\u043E-\u0440\u0443\u0441\u0441\u043A\u0438.' publisher = '\u041E\u041E\u041E \u00AB\u0421\u043D\u043E\u0431 \u041C\u0435\u0434\u0438\u0430\u00BB' category = 'magazine' cover_url = u'https://snob.ru/indoc/tilda/995317/images/tild3233-6631-4664-b663-353636373235__e3057a5fee932ada1aaf.png' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 5 max_articles_per_feed = 50 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'entry__tags'}), dict(name='div', attrs={'class': 'entry__likes'}) ] feeds = [ ('\u0421\u043D\u043E\u0431', 'https://snob.ru/rss/') ] def get_article_url(self, article): link = article.get('link', None) if 'utm_source' in link: return link.split('?utm')[0] |
08-10-2022, 09:15 AM | #22 |
Connoisseur
Posts: 75
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard + Kindle Voyage WiFi + Kindle PW11 Kids
|
New recipes (part 10 of ??)
Another bunch of Russian recipes, and a few unrelated ones.
Wonderzine: style, beauty, fashion and lifestyle blog. Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Wonderzine(BasicNewsRecipe): title = 'Wonderzine' __author__ = 'bugmen00t' description = '\u041E\u043D\u043B\u0430\u0439\u043D-\u0438\u0437\u0434\u0430\u043D\u0438\u0435 \u0434\u043B\u044F \u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0445 \u0436\u0435\u043D\u0449\u0438\u043D \u0438 \u0438\u0445 \u0434\u0440\u0443\u0437\u0435\u0439. \u041C\u044B \u043F\u0438\u0448\u0435\u043C \u043E \u043C\u043E\u0434\u0435 \u0438 \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0435, \u043E\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0445 \u0442\u0435\u043D\u0434\u0435\u043D\u0446\u0438\u044F\u0445 \u0438 \u0440\u0430\u0437\u0432\u043B\u0435\u0447\u0435\u043D\u0438\u044F\u0445, \u0437\u0434\u043E\u0440\u043E\u0432\u044C\u0435 \u0438 \u0441\u0435\u043A\u0441\u0435, \u044D\u0442\u0438\u043A\u0435 \u0438 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044F\u0445, \u043E\u0441\u043E\u0437\u043D\u0430\u043D\u043D\u044B\u0445 \u0442\u0440\u0430\u0442\u0430\u0445 \u0438 \u0440\u0430\u0437\u043D\u043E\u043E\u0431\u0440\u0430\u0437\u0438\u0438 \u043A\u0440\u0430\u0441\u043E\u0442\u044B.' publisher = 'Redefine Media holding' category = 'blog' cover_url = u'https://lamcdn.net/wonderzine.com/post-og_image/WQRiRGqLlcKyEHsnOS-sUw.png' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 14 max_articles_per_feed = 20 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'class': 'is_article_end'}) remove_tags = [ dict(name='ul', attrs={'class': 'post-meta'}), dict(name='a', attrs={'class': 'flow'}), dict(name='a', attrs={'class': 'banner-ad-link'}), dict(name='div', attrs={'class': 'share-buttons-bar'}), dict(name='div', attrs={'class': 'pseudosidebar'}) ] feeds = [ ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://www.wonderzine.com/feeds/posts.atom'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://www.wonderzine.com/feeds/posts.atom?news=only'), ('\u0416\u0438\u0437\u043D\u044C', 'https://www.wonderzine.com/feeds/posts.atom?topic=life'), ('\u0417\u0434\u043E\u0440\u043E\u0432\u044C\u0435', 'https://www.wonderzine.com/feeds/posts.atom?topic=health'), ('\u041A\u0440\u0430\u0441\u043E\u0442\u0430', 'https://www.wonderzine.com/feeds/posts.atom?topic=beauty'), ('\u0420\u0430\u0437\u0432\u043B\u0435\u0447\u0435\u043D\u0438\u044F', 'https://www.wonderzine.com/feeds/posts.atom?topic=entertainment'), ('\u0421\u0442\u0438\u043B\u044C', 'https://www.wonderzine.com/feeds/posts.atom?topic=style'), ('\u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438', 'https://www.wonderzine.com/feeds/posts.atom?topic=opportunities') ] Vedomosit: daily newspaper; non-paywlled content only. Favicon. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Vedomosti(BasicNewsRecipe): title = '\u0412\u0435\u0434\u043E\u043C\u043E\u0441\u0442\u0438' __author__ = 'bugmen00t' description = '\u0415\u0436\u0435\u0434\u043D\u0435\u0432\u043D\u0430\u044F \u0434\u0435\u043B\u043E\u0432\u0430\u044F \u0433\u0430\u0437\u0435\u0442\u0430.' publisher = '\u0410\u041E \u00AB\u0411\u0438\u0437\u043D\u0435\u0441 \u041D\u044C\u044E\u0441 \u041C\u0435\u0434\u0438\u0430\u00BB' category = 'newspaper' cover_url = u'https://id.vedomosti.ru/assets/chopick-13077eee55066e639f3a037834ecf11279d3f402e9f5cac7162d13183dfd9d20.jpg' language = 'ru' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 200 remove_tags_before = dict(name='header', attrs={'class': 'article__header'}) remove_tags_after = dict(name='div', attrs={'class': 'article__main'}) remove_tags = [ dict(name='div', attrs={'class': 'article__tools'}), dict(name='div', attrs={'class': 'box-inset-link box-inset-link--card'}), dict(name='div', attrs={'class': 'box-inset-link box-inset-link--card box-inset-link--link'}) ] feeds = [ ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://www.vedomosti.ru/rss/news') ] Bellingcat: OSINT investigaton and citizen journalism blog. Favicon. English version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Bellingcat(BasicNewsRecipe): title = 'Bellingcat' __author__ = 'bugmen00t' description = 'Bellingcat is an independent international collective of researchers, investigators and citizen journalists using open source and social media investigation to probe a variety of subjects – from Mexican drug lords and crimes against humanity, to tracking the use of chemical weapons and conflicts worldwide. With staff and contributors in more than 20 countries around the world, we operate in a unique field where advanced technology, forensic research, journalism, investigations, transparency and accountability come together.' publisher = 'Stichting Bellingcat' category = 'blog' cover_url = u'https://www.bellingcat.com/app/uploads/2018/04/bellingcat_HP_logo_black.jpg' language = 'en' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 60 max_articles_per_feed = 10 remove_tags_before = dict(name='div', attrs={'class': 'container'}) remove_tags_after = dict(name='div', attrs={'class': 'container'}) remove_tags = [ dict(name='div', attrs={'class': 'social social--share'}), dict(name='div', attrs={'class': 'singular__related'}) ] feeds = [ ('Bellingcat', 'https://www.bellingcat.com/feed/') ] Russian version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Bellingcat(BasicNewsRecipe): title = '\u0411\u0435\u043B\u043B\u0438\u043D\u0433\u043A\u044D\u0442 (bell\u00BFngcat)' __author__ = 'bugmen00t' description = 'Bellingcat \u2014 \u044D\u0442\u043E \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u0430\u044F \u043C\u0435\u0436\u0434\u0443\u043D\u0430\u0440\u043E\u0434\u043D\u0430\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u0430 \u0440\u0430\u0441\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u0438 \u0433\u0440\u0430\u0436\u0434\u0430\u043D\u0441\u043A\u0438\u0445 \u0436\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u043E\u0432, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0438 \u0438 \u0441\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0435 \u0441\u0435\u0442\u0438 \u0434\u043B\u044F \u0440\u0430\u0441\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u0439 \u043D\u0430 \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0435 \u0442\u0435\u043C\u044B \u2014 \u043E\u0442 \u043C\u0435\u043A\u0441\u0438\u043A\u0430\u043D\u0441\u043A\u0438\u0445 \u043D\u0430\u0440\u043A\u043E\u043A\u0430\u0440\u0442\u0435\u043B\u0435\u0439 \u0438 \u043F\u0440\u0435\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u0439 \u043F\u0440\u043E\u0442\u0438\u0432 \u0447\u0435\u043B\u043E\u0432\u0435\u0447\u0435\u0441\u0442\u0432\u0430 \u0434\u043E \u043E\u0442\u0441\u043B\u0435\u0436\u0438\u0432\u0430\u043D\u0438\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0445\u0438\u043C\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043E\u0440\u0443\u0436\u0438\u044F \u0438 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u043E\u0432 \u043F\u043E \u0432\u0441\u0435\u043C\u0443 \u043C\u0438\u0440\u0443 \u2014 \u0441\u043E\u0447\u0435\u0442\u0430\u044F \u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435 \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0438, \u043A\u0440\u0438\u043C\u0438\u043D\u0430\u043B\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0435 \u044D\u043A\u0441\u043F\u0435\u0440\u0442\u0438\u0437\u044B, \u0436\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u0438\u043A\u0443, \u0440\u0430\u0441\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F \u0438 \u0431\u043E\u0440\u044C\u0431\u0443 \u0437\u0430 \u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u043E\u0441\u0442\u044C \u0438 \u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0441\u0442\u044C.' publisher = 'Stichting Bellingcat' category = 'blog' cover_url = u'https://www.bellingcat.com/app/uploads/2018/04/bellingcat_HP_logo_black.jpg' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 60 max_articles_per_feed = 10 remove_tags_before = dict(name='div', attrs={'class': 'container'}) remove_tags_after = dict(name='div', attrs={'class': 'container'}) remove_tags = [ dict(name='div', attrs={'class': 'social social--share'}), dict(name='div', attrs={'class': 'singular__related'}) ] feeds = [ ('Bellingcat', 'https://ru.bellingcat.com/feed/') ] Ukrainian version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Bellingcat(BasicNewsRecipe): title = '\u0411\u0435\u043B\u043B\u0456\u043D\u0433\u043A\u0435\u0442 (bell\u00BFngcat)' __author__ = 'bugmen00t' description = '\u0411\u0435\u043B\u043B\u0456\u043D\u0433\u043A\u0435\u0442 \u2014 \u043D\u0435\u0437\u0430\u043B\u0435\u0436\u043D\u0438\u0439 \u043C\u0456\u0436\u043D\u0430\u0440\u043E\u0434\u043D\u0438\u0439 \u043A\u043E\u043B\u0435\u043A\u0442\u0438\u0432 \u0434\u043E\u0441\u043B\u0456\u0434\u043D\u0438\u043A\u0456\u0432, \u0441\u043B\u0456\u0434\u0447\u0438\u0445 \u0456 \u0433\u0440\u043E\u043C\u0430\u0434\u044F\u043D\u0441\u044C\u043A\u0438\u0445 \u0436\u0443\u0440\u043D\u0430\u043B\u0456\u0441\u0442\u0456\u0432, \u044F\u043A\u0456 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u044E\u0442\u044C \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0456 \u0434\u0436\u0435\u0440\u0435\u043B\u0430 \u0442\u0430 \u0441\u043E\u0446\u0456\u0430\u043B\u044C\u043D\u0456 \u043C\u0435\u0440\u0435\u0436\u0456 \u0434\u043B\u044F \u0440\u043E\u0437\u0441\u043B\u0456\u0434\u0443\u0432\u0430\u043D\u043D\u044F \u0440\u0456\u0437\u043D\u043E\u043C\u0430\u043D\u0456\u0442\u043D\u0438\u0445 \u0442\u0435\u043C \u2014 \u0432\u0456\u0434 \u043C\u0435\u043A\u0441\u0438\u043A\u0430\u043D\u0441\u044C\u043A\u0438\u0445 \u043D\u0430\u0440\u043A\u043E\u0431\u0430\u0440\u043E\u043D\u0456\u0432 \u0456 \u0437\u043B\u043E\u0447\u0438\u043D\u0456\u0432 \u043F\u0440\u043E\u0442\u0438 \u043B\u044E\u0434\u0441\u0442\u0432\u0430, \u0434\u043E \u0432\u0456\u0434\u0441\u0442\u0435\u0436\u0435\u043D\u043D\u044F \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F \u0445\u0456\u043C\u0456\u0447\u043D\u043E\u0457 \u0437\u0431\u0440\u043E\u0457 \u0442\u0430 \u043A\u043E\u043D\u0444\u043B\u0456\u043A\u0442\u0456\u0432 \u0443 \u0432\u0441\u044C\u043E\u043C\u0443 \u0441\u0432\u0456\u0442\u0456. \u041C\u0438 \u043F\u0440\u0430\u0446\u044E\u0454\u043C\u043E \u0432 \u0443\u043D\u0456\u043A\u0430\u043B\u044C\u043D\u0456\u0439 \u0441\u0444\u0435\u0440\u0456, \u0434\u0435 \u043F\u0435\u0440\u0435\u0434\u043E\u0432\u0456 \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0456\u0457, \u0441\u0443\u0434\u043E\u0432\u043E-\u043C\u0435\u0434\u0438\u0447\u043D\u0456 \u0434\u043E\u0441\u043B\u0456\u0434\u0436\u0435\u043D\u043D\u044F, \u0436\u0443\u0440\u043D\u0430\u043B\u0456\u0441\u0442\u0438\u043A\u0430, \u0440\u043E\u0437\u0441\u043B\u0456\u0434\u0443\u0432\u0430\u043D\u043D\u044F, \u043F\u0440\u043E\u0437\u043E\u0440\u0456\u0441\u0442\u044C \u0456 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u043B\u044C\u043D\u0456\u0441\u0442\u044C \u043E\u0431\u2019\u0454\u0434\u043D\u0443\u044E\u0442\u044C\u0441\u044F.' publisher = 'Stichting Bellingcat' category = 'blog' cover_url = u'https://www.bellingcat.com/app/uploads/2018/04/bellingcat_HP_logo_black.jpg' language = 'uk' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 60 max_articles_per_feed = 10 remove_tags_before = dict(name='div', attrs={'class': 'container'}) remove_tags_after = dict(name='div', attrs={'class': 'container'}) remove_tags = [ dict(name='div', attrs={'class': 'social social--share'}), dict(name='div', attrs={'class': 'singular__related'}) ] feeds = [ ('Bellingcat', 'https://uk.bellingcat.com/feed/') ] Version en français (no updates since 2021): Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Bellingcat(BasicNewsRecipe): title = 'Bellingcat' __author__ = 'bugmen00t' description = 'Bellingcat est un groupe international ind\u00E9pendant de chercheurs, d\u0027enqu\u00EAteurs et de journalistes citoyens utilisant \u00E0 la fois: enqu\u00EAtes \u0027open source\u0027 et r\u00E9seaux sociaux, pour sonder une vari\u00E9t\u00E9 de sujets - trafiquants de drogue mexicains, crimes contre l\u0027humanit\u00E9, suivi de l\u0027utilisation d\u0027armes chimiques et conflits dans le monde entier. Nous op\u00E9rons dans un domaine unique dans lequel technologie de pointe, recherche m\u00E9dico-l\u00E9gale, journalisme, enqu\u00EAtes, transparence et responsabilit\u00E9 se rencontrent.' publisher = 'Stichting Bellingcat' category = 'blog' cover_url = u'https://www.bellingcat.com/app/uploads/2018/04/bellingcat_HP_logo_black.jpg' language = 'fr' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 300 max_articles_per_feed = 10 remove_tags_before = dict(name='div', attrs={'class': 'container'}) remove_tags_after = dict(name='div', attrs={'class': 'container'}) remove_tags = [ dict(name='div', attrs={'class': 'social social--share'}), dict(name='div', attrs={'class': 'singular__related'}) ] feeds = [ ('Bellingcat', 'https://fr.bellingcat.com/feed/') ] Versión en Español (no updates since 2021): Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Bellingcat(BasicNewsRecipe): title = 'Bellingcat' __author__ = 'bugmen00t' description = 'Bellingcat es un colectivo internacional independiente de investigadores y periodistas ciudadanos que usan informaci\u00F3n de fuente abierta y redes sociales para investigar una gran variedad de temas, desde carteles de droga en M\u00E9xico y cr\u00EDmenes de lesa humanidad hasta el rastreo de armas qu\u00EDmicas en zonas de conflicto alrededor del mundo. Nosotros operamos en un campo \u00FAnico donde la tecnolog\u00EDa avanzada, las investigaciones forenses, el periodismo, y la transparencia y responsabilidad se unen.' publisher = 'Stichting Bellingcat' category = 'blog' cover_url = u'https://www.bellingcat.com/app/uploads/2018/04/bellingcat_HP_logo_black.jpg' language = 'es' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 300 max_articles_per_feed = 10 remove_tags_before = dict(name='div', attrs={'class': 'container'}) remove_tags_after = dict(name='div', attrs={'class': 'container'}) remove_tags = [ dict(name='div', attrs={'class': 'social social--share'}), dict(name='div', attrs={'class': 'singular__related'}) ] feeds = [ ('Bellingcat', 'https://es.bellingcat.com/feed/') ] Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Rosbalt(BasicNewsRecipe): title = '\u0420\u043E\u0441\u0431\u0430\u043B\u0442' __author__ = 'bugmen00t' description = '\u0424\u0435\u0434\u0435\u0440\u0430\u043B\u044C\u043D\u043E\u0435 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u0430\u043D\u0430\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0430\u0433\u0435\u043D\u0442\u0441\u0442\u0432\u043E. \u041A\u0440\u0443\u0433\u043B\u043E\u0441\u0443\u0442\u043E\u0447\u043D\u043E \u0441\u043B\u0435\u0434\u0438\u043C \u0437\u0430 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\u043C\u0438 \u0432 \u0441\u0442\u0440\u0430\u043D\u0435 \u0438 \u043C\u0438\u0440\u0435, \u043F\u0443\u0431\u043B\u0438\u043A\u0443\u0435\u043C \u0441\u0430\u043C\u044B\u0435 \u0441\u0432\u0435\u0436\u0438\u0435 \u043D\u043E\u0432\u043E\u0441\u0442\u0438, \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0438 \u0432\u0435\u0434\u0443\u0449\u0438\u0445 \u044D\u043A\u0441\u043F\u0435\u0440\u0442\u043E\u0432, \u0430\u043D\u0430\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0435 \u0441\u0442\u0430\u0442\u044C\u0438, \u0438\u043D\u0442\u0435\u0440\u0432\u044C\u044E \u0441 \u0432\u0435\u0434\u0443\u0449\u0438\u043C\u0438 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043B\u044F\u043C\u0438 \u0440\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u043E\u0433\u043E \u0431\u0438\u0437\u043D\u0435\u0441\u0430 \u0438 \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0438.' publisher = '\u0410\u041E \u00AB\u0420\u0421-\u0411\u0430\u043B\u0442\u00BB' category = 'newspaper' cover_url = u'https://i.ytimg.com/vi/eeMqJGbjuY0/maxresdefault.jpg' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 100 remove_tags_before = dict(name='div', attrs={'class': 'main-content'}) remove_tags_after = dict(name='div', attrs={'class': 'newstext'}) remove_tags = [ dict(name='nav'), dict(name='aside'), dict(name='div', attrs={'class': 'news-left'}), dict(name='div', attrs={'class': 'rkngov'}), dict(name='div', attrs={'class': 'eye'}) ] feeds = [ ('\u0420\u043E\u0441\u0431\u0430\u043B\u0442', 'https://www.rosbalt.ru/feed/') ] Debunking Denialism: blog about pseudoscience in everyday life. Favicon. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Bellingcat(BasicNewsRecipe): title = 'Debunking Denialism' __author__ = 'bugmen00t' description = 'Debunking Denialism is a website dedicated to the refutation of pseudoscience and denialism by applying scientific skepticism and defending evidence-based science. Fighting pseudoscience and quackery with reason and evidence.' publisher = 'Debunking Denialism' category = 'blog' cover_url = u'https://i0.wp.com/debunkingdenialism.com/wp-content/uploads/2017/06/cropped-newestblavatar.jpg' language = 'en' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 60 max_articles_per_feed = 10 remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'above-entry-meta'}), dict(name='time', attrs={'class': 'updated'}), dict(name='p', attrs={'class': 'ddtag'}), dict(name='div', attrs={'class': 'sharedaddy sd-sharing-enabled'}), dict(name='div', attrs={'class': 'sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded'}) ] feeds = [ ('Debunking Denialism', 'https://debunkingdenialism.com/feed/') ] def preprocess_html(self, soup): for img in soup.findAll('img', attrs={'data-orig-file': True}): img['src'] = img['data-orig-file'] return soup Last edited by bugmen00t; 08-10-2022 at 09:18 AM. |
08-15-2022, 03:20 PM | #23 |
Connoisseur
Posts: 75
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard + Kindle Voyage WiFi + Kindle PW11 Kids
|
New recipes (part 11 of ??)
More Russian and Ukrainian sources.
Cвободное пространство: news aggregator from "Novaya Gazeta" editors team. Favicon replacemet. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class NovayaGazeta(BasicNewsRecipe): title = '\u0421\u0432\u043E\u0431\u043E\u0434\u043D\u043E\u0435 \u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u043E' __author__ = 'bugmen00t' description = '\u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0439 \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430, \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0439 \u0440\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u043E\u0439 \u0440\u0435\u0434\u0430\u043A\u0446\u0438\u0435\u0439 \u00AB\u041D\u043E\u0432\u043E\u0439 \u0433\u0430\u0437\u0435\u0442\u044B\u00BB, \u0434\u0435\u0442\u0430\u043B\u0438 \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E \u043A\u0430\u0436\u0434\u044B\u0439 \u0438\u0437 \u0447\u0438\u0442\u0430\u0442\u0435\u043B\u0435\u0439 \u0441\u043E\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u043B\u044F \u0441\u0435\u0431\u044F \u0441\u0430\u043C. \u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440 \u2014 \u044D\u0442\u043E \u043D\u043E\u0432\u044B\u0439 \u0441\u043F\u043E\u0441\u043E\u0431 \u0447\u0438\u0442\u0430\u0442\u044C \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B \u0436\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u043E\u0432 \u00AB\u041D\u043E\u0432\u043E\u0439 \u0433\u0430\u0437\u0435\u0442\u044B\u00BB \u0438 \u0432\u0441\u0435 \u043E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 \u043F\u043E\u0442\u043E\u043A\u0438 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430: \u043B\u044E\u0431\u044B\u0435 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u044B, Telegram-\u043A\u0430\u043D\u0430\u043B\u044B, Youtube-\u043A\u0430\u043D\u0430\u043B\u044B.' publisher = '\u0420\u0435\u0434\u0430\u043A\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043A\u043E\u043B\u043B\u0435\u043A\u0442\u0438\u0432 \u00AB\u041D\u043E\u0432\u043E\u0439 \u0433\u0430\u0437\u0435\u0442\u044B\u00BB' category = 'newspaper' cover_url = u'https://novaya.media/ic_puzzle_footer.svg' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 30 remove_tags_before = dict(name='h1', attrs={'class': 'Header_title__2zxwH'}) remove_tags_after = dict(name='div', attrs={'class': 'Post_contentInnerWrapper__3GWHl'}) feeds = [ ('\u0421\u0432\u043E\u0431\u043E\u0434\u043D\u043E\u0435 \u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u043E', 'https://novaya.media/feed/rss') ] def print_version(self, url): return url + '?print=true' KyivPost: Ukraine’s English-language newspaper. Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class KyivPost(BasicNewsRecipe): title = 'Kyiv Post' __author__ = 'bugmen00t' description = 'The Kyiv Post is Ukraine\u2019s English-language newspaper. The newspaper\u2019s first print edition came out on Oct. 18, 1995, and went online in 1997. The newspaper\u2019s motto is \u201CUkraine\u2019s Global Voice,\u201D which in 2018 replaced the previous motto of \u201CIndependence. Community. Trust.\u201D Both slogans reflect the newspaper\u2019s commitment to the highest journalistic and ethical standards.' publisher = 'BIZNESGRUPP TOV' category = 'newspaper' cover_url = u'https://www.kyivpost.com/wp-content/themes/kyivpost/assets/img/svg/logo-foot.svg' language = 'en_UK' no_stylesheets = False remove_javascript = True auto_cleanup = False oldest_article = 7 max_articles_per_feed = 10 remove_tags_before = dict(name='article', attrs={'class': 'article'}) remove_tags_after = dict(name='article', attrs={'class': 'article'}) remove_tags = [ dict(name='div', attrs={'class': 'entry-footer hide_post_header'}) ] feeds = [ ('News', 'https://www.kyivpost.com/feed') ] Ukrainian version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class KyivPost(BasicNewsRecipe): title = 'Kyiv Post' __author__ = 'bugmen00t' description = '\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430 \u0430\u043D\u0433\u043B\u043E\u043C\u043E\u0432\u043D\u0430 \u0433\u0430\u0437\u0435\u0442\u0430, \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0436\u0435\u043D\u0430 \u0443 2014 \u0440\u043E\u043A\u0443. \u041F\u0435\u0440\u0448\u0438\u0439 \u0434\u0440\u0443\u043A\u043E\u0432\u0430\u043D\u0438\u0439 \u043F\u0440\u0438\u043C\u0456\u0440\u043D\u0438\u043A \u0433\u0430\u0437\u0435\u0442\u0438 \u0432\u0438\u0439\u0448\u043E\u0432 18 \u0436\u043E\u0432\u0442\u043D\u044F 1995 \u0440\u043E\u043A\u0443, \u0430 \u0432 \u0406\u043D\u0442\u0435\u0440\u043D\u0435\u0442-\u0432\u0430\u0440\u0456\u0430\u043D\u0442\u0456 Kyiv Post \u0437\u2019\u044F\u0432\u0438\u043B\u0430\u0441\u044C \u0432 1997 \u0440\u043E\u0446\u0456. \u0414\u0435\u0432\u0456\u0437 \u0433\u0430\u0437\u0435\u0442\u0438: \u00AB\u0413\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u0438\u0439 \u0433\u043E\u043B\u043E\u0441 \u0423\u043A\u0440\u0430\u0457\u043D\u0438\u00BB, \u044F\u043A\u0438\u0439 \u0443 2018 \u0440\u043E\u0446\u0456 \u0437\u0430\u043C\u0456\u043D\u0438\u0432 \u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456\u0439 \u0434\u0435\u0432\u0456\u0437 \u00AB\u041D\u0435\u0437\u0430\u043B\u0435\u0436\u043D\u0456\u0441\u0442\u044C. \u0421\u043F\u0456\u043B\u044C\u043D\u043E\u0442\u0430. \u0414\u043E\u0432\u0456\u0440\u0430.\u00BB \u041E\u0431\u0438\u0434\u0432\u0430 \u0433\u0430\u0441\u043B\u0430 \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u044E\u0442\u044C \u0442\u0435, \u0449\u043E \u0443 \u0432\u0438\u0434\u0430\u043D\u043D\u0456 \u0434\u043E\u0442\u0440\u0438\u043C\u0443\u044E\u0442\u044C\u0441\u044F \u043D\u0430\u0439\u0432\u0438\u0449\u0438\u0445 \u0436\u0443\u0440\u043D\u0430\u043B\u0456\u0441\u0442\u0441\u044C\u043A\u0438\u0445 \u0442\u0430 \u0435\u0442\u0438\u0447\u043D\u0438\u0445 \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u0456\u0432.' publisher = 'BIZNESGRUPP TOV' category = 'newspaper' cover_url = u'https://www.kyivpost.com/wp-content/themes/kyivpost/assets/img/svg/logo-foot.svg' language = 'uk' no_stylesheets = False remove_javascript = True auto_cleanup = False oldest_article = 7 max_articles_per_feed = 10 remove_tags_before = dict(name='article', attrs={'class': 'article'}) remove_tags_after = dict(name='article', attrs={'class': 'article'}) remove_tags = [ dict(name='div', attrs={'class': 'entry-footer hide_post_header'}) ] feeds = [ ('\u041D\u043E\u0432\u0438\u043D\u0438', 'https://www.kyivpost.com/uk/feed') ] Arabic version (not sure if output is correct as the text is not RTL): Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class KyivPost(BasicNewsRecipe): title = '\u0643\u064A\u064A\u0641 \u0628\u0648\u0633\u062A (Kyiv Post)' __author__ = 'bugmen00t' description = '\u0643\u064A\u064A\u0641 \u0628\u0648\u0633\u062A \u0647\u064A \u0635\u062D\u064A\u0641\u0629 \u0623\u0648\u0643\u0631\u0627\u0646\u064A\u0629 \u062A\u0635\u062F\u0631 \u0628\u0627\u0644\u0644\u063A\u0629 \u0627\u0644\u0625\u0646\u062C\u0644\u064A\u0632\u064A\u0629 \u0648\u0647\u064A \u0641\u0627\u0626\u0632\u0629 \u0628\u0645\u064A\u062F\u0627\u0644\u064A\u0629 Missouri Honor 2014 \u0644\u0644\u062E\u062F\u0645\u0629 \u0627\u0644\u0645\u062A\u0645\u064A\u0632\u0629 \u0641\u064A \u0627\u0644\u0635\u062D\u0627\u0641\u0629. \u0635\u062F\u0631\u062A \u0627\u0644\u0646\u0633\u062E\u0629 \u0627\u0644\u0645\u0637\u0628\u0648\u0639\u0629 \u0627\u0644\u0623\u0648\u0644\u0649 \u0645\u0646 \u0627\u0644\u0635\u062D\u064A\u0641\u0629 \u0641\u064A 18 \u0623\u0643\u062A\u0648\u0628\u0631 1995\u060C \u0648\u062A\u0645 \u0646\u0634\u0631\u0647\u0627 \u0639\u0644\u0649 \u0627\u0644\u0625\u0646\u062A\u0631\u0646\u062A \u0641\u064A \u0639\u0627\u0645 1997. \u0648\u0643\u0627\u0646 \u062C\u0645\u0647\u0648\u0631\u0647\u0627 \u0627\u0644\u0639\u0627\u0644\u0645\u064A \u064A\u0646\u0645\u0648 \u0628\u0627\u0637\u0631\u0627\u062F \u0645\u0646\u0630 \u0630\u0644\u0643 \u0627\u0644\u062D\u064A\u0646 \u060C \u0648\u0628\u0644\u063A \u0630\u0631\u0648\u062A\u0647 \u0628\u0623\u0643\u062B\u0631 \u0645\u0646 65 \u0645\u0644\u064A\u0648\u0646 \u0645\u0634\u0627\u0647\u062F\u0629 \u0644\u0644\u0635\u0641\u062D\u0629 \u0641\u064A \u0639\u0627\u0645 2014. \u0634\u0639\u0627\u0631 \u0627\u0644\u0635\u062D\u064A\u0641\u0629 \u0647\u0648 \u201C\u0635\u0648\u062A \u0623\u0648\u0643\u0631\u0627\u0646\u064A\u0627 \u0644\u0644\u0639\u0627\u0644\u0645\u201D\u060C \u0648\u0627\u0644\u0630\u064A \u062D\u0644 \u0641\u064A \u0639\u0627\u0645 2018 \u0645\u062D\u0644 \u0627\u0644\u0634\u0639\u0627\u0631 \u0627\u0644\u0633\u0627\u0628\u0642 \u201C\u0627\u0644\u0627\u0633\u062A\u0642\u0644\u0627\u0644. \u062A\u0648\u0627\u0635\u0644 \u0627\u062C\u062A\u0645\u0627\u0639\u064A. \u0627\u0644\u062B\u0642\u0629\u201D. \u0643\u0644\u0627 \u0627\u0644\u0634\u0639\u0627\u0631\u064A\u0646 \u064A\u0639\u0643\u0633\u0627\u0646 \u0627\u0644\u062A\u0632\u0627\u0645 \u0627\u0644\u0635\u062D\u064A\u0641\u0629 \u0628\u0623\u0639\u0644\u0649 \u0627\u0644\u0645\u0639\u0627\u064A\u064A\u0631 \u0627\u0644\u0635\u062D\u0641\u064A\u0629 \u0648\u0627\u0644\u0623\u062E\u0644\u0627\u0642\u064A\u0629.' publisher = 'BIZNESGRUPP TOV' category = 'newspaper' cover_url = u'https://www.kyivpost.com/wp-content/themes/kyivpost/assets/img/svg/logo-foot.svg' language = 'ar' no_stylesheets = False remove_javascript = True auto_cleanup = False oldest_article = 7 max_articles_per_feed = 10 remove_tags_before = dict(name='article', attrs={'class': 'article'}) remove_tags_after = dict(name='article', attrs={'class': 'article'}) remove_tags = [ dict(name='div', attrs={'class': 'entry-footer hide_post_header'}) ] feeds = [ ('\u0627\u0644\u0625\u062E\u0628\u0627\u0631\u064A\u0629', 'https://www.kyivpost.com/ar/feed') ] The Moscow Times: English- and Russian-language online newspaper. Favicon. Russain version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class MoscowTimes(BasicNewsRecipe): title = 'The Moscow Times' __author__ = 'bugmen00t' description = '\u0410\u043D\u0433\u043B\u043E\u044F\u0437\u044B\u0447\u043D\u043E\u0435 \u0438\u0437\u0434\u0430\u043D\u0438\u0435 \u043E \u0420\u043E\u0441\u0441\u0438\u0438. \u041D\u0430\u0448\u0430 \u0440\u0435\u0434\u0430\u043A\u0446\u0438\u044F \u0434\u0435\u043B\u0438\u0442\u0441\u044F \u0441 \u0447\u0438\u0442\u0430\u0442\u0435\u043B\u044F\u043C\u0438 \u043F\u043E \u0432\u0441\u0435\u043C\u0443 \u043C\u0438\u0440\u0443 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u043C\u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u043C\u0438 \u0438 \u0441\u0430\u043C\u044B\u043C\u0438 \u0438\u043D\u0442\u0435\u0440\u0435\u0441\u043D\u044B\u043C\u0438 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\u043C\u0438 \u0441\u0430\u043C\u043E\u0439 \u0431\u043E\u043B\u044C\u0448\u043E\u0439 \u0441\u0442\u0440\u0430\u043D\u044B \u043D\u0430 \u0417\u0435\u043C\u043B\u0435.' publisher = '\u041E\u041E\u041E \u0422\u0438\u044D\u043C\u0442\u0438' category = 'newspaper' cover_url = u'https://static.themoscowtimes.com/img/share_default.jpg' language = 'ru' no_stylesheets = False remove_javascript = True auto_cleanup = False oldest_article = 7 max_articles_per_feed = 50 remove_tags_before = dict(name='article') remove_tags_after = dict(name='div', attrs={'class': 'article__bottom'}) remove_tags = [ dict(name='div', attrs={'class': 'social'}), dict(name='div', attrs={'class': 'related-article__content'}) ] feeds = [ ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://www.moscowtimes.ru/rss/news'), ('\u041C\u043D\u0435\u043D\u0438\u044F', 'https://www.moscowtimes.ru/rss/opinion'), ('\u041F\u0435\u0440\u0435\u0432\u043E\u0434\u044B Financial Times', 'https://www.moscowtimes.ru/rss/ft') ] def preprocess_html(self, soup): for img in soup.findAll('img', attrs={'data-src': True}): img['src'] = img['data-src'] return soup English version: Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class MoscowTimes(BasicNewsRecipe): title = 'The Moscow Times' __author__ = 'bugmen00t' description = 'The Moscow Times is Russia’s leading, independent English-language media outlet. Our team of Russian and English journalists provide readers across the world with breaking news, engaging stories and balanced reporting about the largest country on Earth.' publisher = 'Tiamti LLC' category = 'newspaper' cover_url = u'https://static.themoscowtimes.com/img/share_default.jpg' language = 'en_RU' no_stylesheets = False remove_javascript = True auto_cleanup = False oldest_article = 14 max_articles_per_feed = 50 remove_tags_before = dict(name='article') remove_tags_after = dict(name='div', attrs={'class': 'article__tags'}) remove_tags = [ dict(name='aside'), dict(name='footer'), dict(name='section', attrs={'class': 'cluster'}), dict(name='div', attrs={'class': 'article__tags'}), dict(name='div', attrs={'class': 'social'}), dict(name='div', attrs={'class': 'related-article__content'}) ] feeds = [ ('News', 'https://www.themoscowtimes.com/rss/news'), ('Opinion', 'https://www.themoscowtimes.com/rss/opinion'), ('Arts and Life', 'https://www.themoscowtimes.com/rss/city'), ('Meanwhile', 'https://www.themoscowtimes.com/rss/meanwhile') ] Довод: local news from Vladimir city & local regions. Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Dovod(BasicNewsRecipe): title = '\u0414\u043E\u0432\u043E\u0434' __author__ = 'bugmen00t' description = '\u0421\u0430\u0439\u0442 \u00AB\u0414\u043E\u0432\u043E\u0434\u00BB \u043F\u043E\u043B\u0443\u0447\u0438\u043B \u0441\u0432\u043E\u0451 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0432 \u0447\u0435\u0441\u0442\u044C \u0440\u0430\u043D\u0435\u0435 \u0441\u043E\u0437\u0434\u0430\u043D\u043D\u043E\u0433\u043E \u043F\u0440\u043E\u0435\u043A\u0442\u0430 \u00AB\u0414\u043E\u0432\u043E\u0434 \u2014 \u0412\u043B\u0430\u0434\u0438\u043C\u0438\u0440\u0441\u043A\u0438\u0435 \u043E\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0435 \u0434\u0438\u0441\u043A\u0443\u0441\u0441\u0438\u0438\u00BB. \u041D\u0430\u0448\u0430 \u0446\u0435\u043B\u044C \u2014 \u043E\u0441\u0432\u0435\u0449\u0435\u043D\u0438\u0435 \u0430\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u044B\u0445 \u043E\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E-\u043F\u043E\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u0432\u043E\u043F\u0440\u043E\u0441\u043E\u0432 \u0438 \u0438\u0445 \u043E\u0442\u043A\u0440\u043E\u0432\u0435\u043D\u043D\u043E\u0435 \u0438 \u043E\u0441\u043C\u044B\u0441\u043B\u0435\u043D\u043D\u043E\u0435 \u043E\u0431\u0441\u0443\u0436\u0434\u0435\u043D\u0438\u0435.' publisher = '\u0418\u043B\u044C\u044F \u041A\u043E\u0441\u044B\u0433\u0438\u043D, \u041A\u0438\u0440\u0438\u043B\u043B \u0418\u0448\u0443\u0442\u0438\u043D' category = 'blog' cover_url = u'https://pbs.twimg.com/profile_images/1498229545505284099/l9V1l59Z_400x400.jpg' language = 'ru' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 10 remove_tags_before = dict(name='article') remove_tags_after = dict(name='div', attrs={'class': 'entry-content'}) feeds = [ ('\u0414\u043E\u0432\u043E\u0434', 'https://www.dovod.online/feed/') ] Last edited by bugmen00t; 08-17-2022 at 10:16 AM. |
08-17-2022, 09:02 AM | #24 |
Connoisseur
Posts: 75
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard + Kindle Voyage WiFi + Kindle PW11 Kids
|
New recipes (part 12 of ??)
Another bunch of Russian and Ukrainian sources.
Теплица социальных технологий: IT- & tech building project for non-government organisations. Favicon. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Teplitsa(BasicNewsRecipe): title = '\u0422\u0435\u043F\u043B\u0438\u0446\u0430 \u0441\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0439' __author__ = 'bugmen00t' description = '\u0422\u0435\u043F\u043B\u0438\u0446\u0430 \u0441\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0439 \u2014 \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u044B\u0439 \u043F\u0440\u043E\u0441\u0432\u0435\u0442\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044E\u0449\u0438\u0439 \u043F\u0440\u043E\u0435\u043A\u0442, \u043C\u0438\u0441\u0441\u0438\u044F \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E \u2014 \u0443\u0441\u0438\u043B\u0438\u0442\u044C \u0440\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u043E\u0435 \u0433\u0440\u0430\u0436\u0434\u0430\u043D\u0441\u043A\u043E\u0435 \u043E\u0431\u0449\u0435\u0441\u0442\u0432\u043E \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0445 \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0439.' publisher = '\u0410\u041D\u041E \u00AB\u0410\u0433\u0435\u043D\u0442\u0441\u0442\u0432\u043E \u0441\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438\u00BB' category = 'blog' cover_url = u'https://te-st.ru/wp-content/uploads/2014/05/logo_test.png' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False remove_empty_feeds = True oldest_article = 30 max_articles_per_feed = 15 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'post-reading-time'}), dict(name='div', attrs={'class': 'read-more'}), dict(name='p', attrs={'class': 'author-name'}), dict(name='p', attrs={'class': 'author-about'}), dict(name='footer') ] feeds = [ ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://te-st.ru/feed'), ('\u0416\u0443\u0440\u043D\u0430\u043B', 'https://te-st.ru/section/journal/feed/'), ('\u041F\u0440\u0430\u043A\u0442\u0438\u043A\u0430', 'https://te-st.ru/section/practice/feed/'), ('\u0412\u0441\u0442\u0440\u0435\u0447\u0438', 'https://te-st.ru/section/events/feed/'), ('\u0410\u0440\u0445\u0438\u0432', 'https://te-st.ru/section/archive/feed/'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u044C', 'https://te-st.ru/format/news-2/feed/'), ('\u0421\u0442\u0430\u0442\u044C\u0438', 'https://te-st.ru/format/article/feed/'), ('\u0418\u043D\u0442\u0435\u0440\u0432\u044C\u044E', 'https://te-st.ru/format/interview/feed/'), ('\u041A\u0435\u0439\u0441\u044B', 'https://te-st.ru/format/case/feed/'), ('\u0421\u043F\u0438\u0441\u043A\u0438', 'https://te-st.ru/format/list/feed/'), ('\u0418\u0441\u0442\u043E\u0440\u0438\u0438', 'https://te-st.ru/format/story/feed/'), ('\u0418\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0438', 'https://te-st.ru/format/guide/feed/'), ('\u041E\u0431\u0437\u043E\u0440\u044B', 'https://te-st.ru/format/overview/feed/'), ('\u0410\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430', 'https://te-st.ru/tag/analytics/feed'), ('\u0410\u043D\u0442\u0438\u0432\u043E\u0435\u043D\u043D\u044B\u0435 \u043A\u0430\u043C\u043F\u0430\u043D\u0438\u0438', 'https://te-st.ru/tag/antivoennye-kampanii/feed'), ('\u0411\u043B\u043E\u043A\u0447\u0435\u0439\u043D', 'https://te-st.ru/tag/blockchain/feed'), ('\u0411\u043E\u0440\u044C\u0431\u0430 \u0441 \u0431\u0435\u0434\u043D\u043E\u0441\u0442\u044C\u044E', 'https://te-st.ru/tag/poverty/feed'), ('\u0412\u0430\u043A\u0430\u043D\u0441\u0438\u0438 \u0432 \u041D\u041A\u041E', 'https://te-st.ru/tag/vacancies/feed'), ('\u0412\u0438\u0437\u0443\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F', 'https://te-st.ru/tag/visualization/feed'), ('\u0413\u0435\u043D\u0434\u0435\u0440\u043D\u043E\u0435 \u043D\u0430\u0441\u0438\u043B\u0438\u0435', 'https://te-st.ru/tag/gender-violence/feed'), ('\u0413\u0440\u0430\u0436\u0434\u0430\u043D\u0441\u043A\u0438\u0435 \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0438', 'https://te-st.ru/tag/civictech/feed'), ('\u0418\u043C\u043F\u0430\u043A\u0442-\u0438\u043D\u0432\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435', 'https://te-st.ru/tag/impact-investing/feed'), ('\u0418\u043D\u043A\u043B\u044E\u0437\u0438\u0432\u043D\u044B\u0439 \u0434\u0438\u0437\u0430\u0439\u043D', 'https://te-st.ru/tag/inclusive-design/feed'), ('\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0438 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F', 'https://te-st.ru/tag/tools/feed'), ('\u0418\u043D\u0444\u043E\u0431\u0438\u0437\u043D\u0435\u0441', 'https://te-st.ru/tag/infobusiness/feed'), ('\u0418\u0441\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F \u0432 \u041D\u041A\u041E', 'https://te-st.ru/tag/research/feed'), ('\u0418\u0442\u043E\u0433\u0438 \u0433\u043E\u0434\u0430', 'https://te-st.ru/tag/results-of-the-year/feed'), ('\u041A\u0430\u043D\u0434\u0438\u043D\u0441\u043A\u0438\u0439', 'https://te-st.ru/tag/kandinsky/feed'), ('\u041A\u0430\u0440\u0442\u044B \u0438 \u043A\u0430\u0440\u0442\u043E\u0433\u0440\u0430\u0444\u0438\u044F', 'https://te-st.ru/tag/maps/feed'), ('\u041A\u043E\u043C\u043C\u0443\u043D\u0438\u043A\u0430\u0446\u0438\u044F', 'https://te-st.ru/tag/discussion/feed'), ('\u041A\u043E\u0440\u043E\u043D\u0430\u0432\u0438\u0440\u0443\u0441', 'https://te-st.ru/tag/coronavirus/feed'), ('\u041A\u0440\u0430\u0443\u0434\u0441\u043E\u0440\u0441\u0438\u043D\u0433', 'https://te-st.ru/tag/crowdsourcing/feed'), ('\u041A\u0440\u0430\u0443\u0434\u0444\u0430\u043D\u0434\u0438\u043D\u0433', 'https://te-st.ru/tag/crowdfunding/feed'), ('\u041A\u0443\u043B\u044C\u0442\u0443\u0440\u0430 \u0438 \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0438', 'https://te-st.ru/tag/tech-culture/feed'), ('\u041B\u0430\u0431\u043E\u0440\u0430\u0442\u043E\u0440\u0438\u044F', 'https://te-st.ru/tag/laboratory/feed'), ('\u041B\u0438\u0434\u0435\u0440\u0441\u0442\u0432\u043E', 'https://te-st.ru/tag/leadership/feed'), ('\u041C\u0430\u0440\u043A\u0435\u0442\u0438\u043D\u0433', 'https://te-st.ru/tag/marketing/feed'), ('\u041C\u0430\u0448\u0438\u043D\u043D\u043E\u0435 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u0435', 'https://te-st.ru/tag/machine-learning/feed'), ('\u041C\u0435\u0434\u0438\u0446\u0438\u043D\u0441\u043A\u0438\u0435 \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0438', 'https://te-st.ru/tag/medtech/feed'), ('\u041C\u0435\u043D\u0435\u0434\u0436\u043C\u0435\u043D\u0442', 'https://te-st.ru/tag/management/feed'), ('\u041C\u0435\u0441\u0441\u0435\u043D\u0434\u0436\u0435\u0440\u044B', 'https://te-st.ru/tag/messengers/feed'), ('\u041C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u0435 \u0440\u0435\u0448\u0435\u043D\u0438\u044F', 'https://te-st.ru/tag/mobile/feed'), ('\u041E\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0435 \u043A\u0430\u043C\u043F\u0430\u043D\u0438\u0438', 'https://te-st.ru/tag/campaigning/feed'), ('\u041E\u043D\u043B\u0430\u0439\u043D-\u041B\u0435\u0439\u043A\u0430', 'https://te-st.ru/tag/online-leyka/feed'), ('\u041E\u043D\u043B\u0430\u0439\u043D-\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u0435', 'https://te-st.ru/tag/education-online/feed'), ('\u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435', 'https://te-st.ru/tag/open-data/feed'), ('\u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0439 \u043A\u043E\u0434', 'https://te-st.ru/tag/opensource/feed'), ('\u041F\u0430\u0441\u0435\u043A\u0430', 'https://te-st.ru/tag/paseka/feed'), ('\u041F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0431\u0430\u0437\u0430', 'https://te-st.ru/tag/regulations/feed'), ('\u041F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435', 'https://te-st.ru/tag/programming/feed'), ('\u0420\u0435\u043B\u0438\u0437\u044B \u00AB\u041B\u0435\u0439\u043A\u0438\u00BB', 'https://te-st.ru/tag/leyka-release/feed'), ('\u0421\u0435\u043D\u0441\u043E\u0440\u044B', 'https://te-st.ru/tag/sensors/feed'), ('\u0421\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0432\u0438\u0434\u0435\u043E', 'https://te-st.ru/tag/video/feed'), ('\u0421\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u043E-\u043E\u0440\u0438\u0435\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u0434\u0438\u0437\u0430\u0439\u043D', 'https://te-st.ru/tag/responsible-design/feed'), ('\u0421\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0442\u0435\u043B\u044C\u0441\u0442\u0432\u043E', 'https://te-st.ru/tag/social-entrepreneurship/feed'), ('\u0421\u0442\u0430\u0440\u0442\u0430\u043F\u044B', 'https://te-st.ru/tag/startups/feed'), ('\u0422\u0435\u043F\u043B\u0438\u0446\u0430.\u041A\u0443\u0440\u0441\u044B', 'https://te-st.ru/tag/teplitsa-kursy/feed'), ('\u0422\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0438 \u0432 \u0431\u043E\u0440\u044C\u0431\u0435 \u0441 \u0440\u0430\u043A\u043E\u043C', 'https://te-st.ru/tag/cancer/feed'), ('\u0422\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0438 \u0434\u043B\u044F \u043F\u043E\u0436\u0438\u043B\u044B\u0445', 'https://te-st.ru/tag/itforelderly/feed'), ('\u0422\u043E\u043A\u0438\u043E', 'https://te-st.ru/tag/tokio/feed'), ('\u0423\u0434\u0430\u043B\u0435\u043D\u043D\u0430\u044F \u0440\u0430\u0431\u043E\u0442\u0430', 'https://te-st.ru/tag/remote-work/feed'), ('\u0424\u0430\u043D\u0434\u0440\u0430\u0439\u0437\u0438\u043D\u0433', 'https://te-st.ru/tag/fundraising/feed'), ('\u0424\u043E\u0442\u043E\u0433\u0440\u0430\u0444\u0438\u0438', 'https://te-st.ru/tag/photo/feed'), ('\u0426\u0438\u0444\u0440\u043E\u0432\u0430\u044F \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u044C', 'https://te-st.ru/tag/digital-security/feed'), ('\u0426\u0438\u0444\u0440\u043E\u0432\u0430\u044F \u0442\u0440\u0430\u043D\u0441\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F', 'https://te-st.ru/tag/digital-transformation/feed'), ('\u0426\u0438\u0444\u0440\u043E\u0432\u044B\u0435 \u043F\u0440\u0430\u0432\u0430', 'https://te-st.ru/tag/digital-rights/feed'), ('\u0427\u0430\u0442-\u0431\u043E\u0442\u044B', 'https://te-st.ru/tag/chatbots/feed'), ('\u042D\u043A\u043E\u043B\u043E\u0433\u0438\u044F', 'https://te-st.ru/tag/ecology/feed'), ('\u042D\u0442\u0438\u043A\u0430 \u0432 \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u044F\u0445', 'https://te-st.ru/tag/ethics/feed'), ('IT-\u0432\u043E\u043B\u043E\u043D\u0442\u0435\u0440', 'https://te-st.ru/tag/itv/feed'), ('Meet and code', 'https://te-st.ru/tag/meet-and-code/feed'), ('PhilTech', 'https://te-st.ru/tag/philtech/feed'), ('Scrum', 'https://te-st.ru/tag/scrum/feed'), ('TeploDigital', 'https://te-st.ru/tag/teplodigital/feed'), ('UX/UI \u0434\u0438\u0437\u0430\u0439\u043D', 'https://te-st.ru/tag/uxui/feed'), ('VR/AR \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0438', 'https://te-st.ru/tag/arvr/feed'), ('WordPress', 'https://te-st.ru/tag/wordpress/feed') ] Такие дела: social journalism & fundraising platform for charitable projects. Favicon. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class TakieDela(BasicNewsRecipe): title = '\u0422\u0430\u043A\u0438\u0435 \u0434\u0435\u043B\u0430' __author__ = 'bugmen00t' description = '\u0418\u0437\u0434\u0430\u043D\u0438\u0435 \u00AB\u0422\u0430\u043A\u0438\u0435 \u0434\u0435\u043B\u0430\u00BB \u043E\u0441\u0432\u0435\u0449\u0430\u0435\u0442 \u0441\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0435 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u044B, \u043F\u0438\u0448\u0435\u0442 \u043E \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430\u0445 \u043B\u044E\u0434\u0435\u0439 \u0441 \u0440\u0435\u0434\u043A\u0438\u043C\u0438 \u0437\u0430\u0431\u043E\u043B\u0435\u0432\u0430\u043D\u0438\u044F\u043C\u0438 \u0438 \u0438\u043D\u0432\u0430\u043B\u0438\u0434\u043D\u043E\u0441\u0442\u044C\u044E, \u043E \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0438 \u0440\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u043E\u0439 \u043C\u0435\u0434\u0438\u0446\u0438\u043D\u044B, \u0430 \u0442\u0430\u043A\u0436\u0435 \u043E \u0431\u043B\u0430\u0433\u043E\u0442\u0432\u043E\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438 \u0438 \u0441\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0439 \u043E\u0431\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0435 \u0432 \u0420\u043E\u0441\u0441\u0438\u0438. \u0422\u0430\u043A\u0436\u0435 \u0438\u0437\u0434\u0430\u043D\u0438\u0435 \u0432\u0437\u0430\u0438\u043C\u043E\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u043D\u0435\u043A\u043E\u043C\u043C\u0435\u0440\u0447\u0435\u0441\u043A\u0438\u043C\u0438 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u044F\u043C\u0438, \u0441\u043E\u0431\u0438\u0440\u0430\u044F \u0438\u0441\u0442\u043E\u0440\u0438\u0438 \u043E \u0431\u043B\u0430\u0433\u043E\u0442\u0432\u043E\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u0445, \u0438 \u0437\u0430\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u0441\u0431\u043E\u0440\u043E\u043C \u0441\u0440\u0435\u0434\u0441\u0442\u0432 (\u043A\u0440\u0430\u0443\u0434\u0444\u0430\u043D\u0434\u0438\u043D\u0433\u043E\u043C) \u0434\u043B\u044F \u0444\u043E\u043D\u0434\u0430 \u00AB\u041D\u0443\u0436\u043D\u0430 \u043F\u043E\u043C\u043E\u0449\u044C\u00BB.' publisher = '\u0411\u043B\u0430\u0433\u043E\u0442\u0432\u043E\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u0444\u043E\u043D\u0434 \u00AB\u041D\u0443\u0436\u043D\u0430 \u041F\u043E\u043C\u043E\u0449\u044C\u00BB' category = 'blog' cover_url = u'https://takiedela.ru/wp-content/themes/takiedela/assets/image/share/td.jpg' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False remove_empty_feeds = True oldest_article = 30 max_articles_per_feed = 10 remove_tags_before = dict(name='header') remove_tags_after = dict(name='article') remove_tags = [ dict(name='section', attrs={'class': 'b-post__materials b-line b-line_p-60 b-line_grey b-line_nomb'}), dict(name='section', attrs={'class': 'b-post-material__other b-line b-line_p-60 b-line_bg b-line_nomb'}), dict(name='div', attrs={'class': 'b-single__case-closed'}), dict(name='div', attrs={'class': 'b-line b-total-sum'}), dict(name='section', attrs={'class': 'b-post-material__help b-line b-line_p-60 b-line_grey b-line_nomb'}), dict(name='section', attrs={'class': 'b-line b-line_p-60 b-line_bg b-line_nopb b-line_nomb '}), dict(name='header', attrs={'class': 'np-header js-np-header'}), dict(name='div', attrs={'class': 'b-post__head-info__block b-post__head-info__block_views in-tablet'}), dict(name='div', attrs={'class': 'np-donate-form__bg np-donate-form__bg_border'}), dict(name='div', attrs={'class': 'b-photostory-help i-photostory-help'}), dict(name='div', attrs={'class': 'mistape_caption'}), dict(name='div', attrs={'class': 'b-photostory__inner'}), dict(name='div', attrs={'class': 'b-single__extra i-single__extra'}), dict(name='div', attrs={'class': 'b-post__help'}), dict(name='div', attrs={'class': 'b-post__other b-post__other_right'}), dict(name='div', attrs={'class': 'b-soc i-soc b-soc_blog b-soc_noscroll'}), dict(name='div', attrs={'class': 'np-socials np-socials_grid js-np-socials'}), dict(name='ul', attrs={'class': 'b-post__head-tags in-tablet-sm'}), dict(name='ul', attrs={'class': 'b-single__text__categories'}), dict(name='div', attrs={'class': 'b-donate-info js-donate-info'}), dict(name='div', attrs={'class': 'b-404__materials b-line b-line_grey'}), dict(name='div', attrs={'class': 'b-404__funds b-line'}), dict(name='div', attrs={'class': 'overlay'}), dict(name='div', attrs={'class': 'b-help-info-sticky'}), dict(name='div', attrs={'id': 'mistape_dialog'}), dict(name='footer'), dict(name='form', attrs={'id': 'help'}), dict(name='form', attrs={'id': 'form-3dsecure'}) ] feeds = [ ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://takiedela.ru/feed/'), ('\u041F\u043E\u043C\u043E\u0433\u0430\u0435\u043C', 'https://takiedela.ru/topics/feed/'), ('\u041A\u043E\u043B\u043E\u043D\u043A\u0438', 'https://takiedela.ru/rubrics/columns/feed/'), ('\u041E\u0431\u044A\u044F\u0441\u043D\u0435\u043D\u0438\u044F', 'https://takiedela.ru/rubrics/explanations/feed/'), ('\u0424\u043E\u0442\u043E\u0438\u0441\u0442\u043E\u0440\u0438\u0438', 'https://takiedela.ru/rubrics/photo/feed/'), ('\u041F\u043E\u0440\u0442\u0440\u0435\u0442\u044B', 'https://takiedela.ru/rubrics/portret/feed/'), ('\u0420\u0430\u0441\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F', 'https://takiedela.ru/rubrics/rassledovaniya/feed/'), ('\u0421\u043B\u0443\u0447\u0430\u0438', 'https://takiedela.ru/genre/cases/feed/'), ('\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442', 'https://takiedela.ru/genre/context/feed/'), ('\u0414\u0440\u0430\u043C\u044B', 'https://takiedela.ru/genre/drama/feed/'), ('\u0413\u0435\u0440\u043E\u0438', 'https://takiedela.ru/genre/heroes/feed/'), ('\u0421\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435 \u043D\u0430\u0441\u043B\u0435\u0434\u0438\u044F \u0438 \u0438\u0441\u0442\u043E\u0440\u0438\u0447\u0435\u0441\u043A\u043E\u0439 \u043F\u0430\u043C\u044F\u0442\u0438', 'https://takiedela.ru/category/cultural/feed/'), ('\u0414\u0435\u0442\u0441\u0442\u0432\u043E', 'https://takiedela.ru/category/deti/feed/'), ('\u0414\u0435\u0442\u0438 \u0441 \u043E\u0441\u043E\u0431\u0435\u043D\u043D\u043E\u0441\u0442\u044F\u043C\u0438 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044F', 'https://takiedela.ru/category/deti-s-osobennostyami-razvitiya/feed/'), ('\u0414\u0435\u0442\u0441\u043A\u0438\u0439 \u0434\u043E\u043C', 'https://takiedela.ru/category/detskiy-dom/feed/'), ('\u041A\u0430\u0442\u0430\u0441\u0442\u0440\u043E\u0444\u044B \u0438 \u0441\u0442\u0438\u0445\u0438\u0439\u043D\u044B\u0435 \u0431\u0435\u0434\u0441\u0442\u0432\u0438\u044F', 'https://takiedela.ru/category/disaster/feed/'), ('\u0425\u0440\u043E\u043D\u0438\u0447\u0435\u0441\u043A\u0438\u0435 \u0438 \u043D\u0435\u0438\u0437\u043B\u0435\u0447\u0438\u043C\u044B\u0435 \u0437\u0430\u0431\u043E\u043B\u0435\u0432\u0430\u043D\u0438\u044F', 'https://takiedela.ru/category/illness/feed/'), ('\u0420\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u043A\u0443\u043B\u044C\u0442\u0443\u0440\u044B \u0438 \u0438\u0441\u043A\u0443\u0441\u0441\u0442\u0432\u0430', 'https://takiedela.ru/category/kultura/feed/'), ('\u041C\u0430\u0442\u0435\u0440\u0438 \u0438 \u0434\u0435\u0442\u0438', 'https://takiedela.ru/category/materi-i-deti/feed/'), ('\u041C\u0435\u0434\u0438\u0446\u0438\u043D\u0441\u043A\u0430\u044F \u043F\u043E\u043C\u043E\u0449\u044C', 'https://takiedela.ru/category/medical/feed/'), ('\u041C\u0435\u0434\u0438\u0446\u0438\u043D\u0430', 'https://takiedela.ru/category/medicina/feed/'), ('\u041B\u0413\u0411\u0422+', 'https://takiedela.ru/category/minorities/feed/'), ('\u041E\u0431\u0449\u0435\u0441\u0442\u0432\u043E', 'https://takiedela.ru/category/obshhestvo/feed/'), ('\u041E\u043D\u043A\u043E\u043B\u043E\u0433\u0438\u044F', 'https://takiedela.ru/category/onkologiya/feed/'), ('\u0421\u0438\u0440\u043E\u0442\u0441\u0442\u0432\u043E', 'https://takiedela.ru/category/orphan/feed/'), ('\u0414\u0440\u0443\u0433\u043E\u0435', 'https://takiedela.ru/category/other/feed/'), ('\u041F\u043E\u043B\u0438\u0446\u0438\u044F', 'https://takiedela.ru/category/policiya/feed/'), ('\u041F\u0440\u0430\u0432\u043E\u0437\u0430\u0449\u0438\u0442\u0430', 'https://takiedela.ru/category/pravozashhita/feed/'), ('\u041F\u0441\u0438\u0445\u043E\u043B\u043E\u0433\u0438\u044F', 'https://takiedela.ru/category/psikhologiya/feed/'), ('\u0416\u0435\u0440\u0442\u0432\u044B \u043D\u0430\u0441\u0438\u043B\u0438\u044F', 'https://takiedela.ru/category/rape/feed/'), ('\u0416\u0435\u0440\u0442\u0432\u044B \u0432\u043E\u0435\u043D\u043D\u044B\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439', 'https://takiedela.ru/category/victims-of-war/feed/'), ('\u042D\u043A\u043E\u043B\u043E\u0433\u0438\u044F', 'https://takiedela.ru/category/yekologiya/feed/'), ('\u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0430\u044F \u043F\u043E\u043C\u043E\u0449\u044C', 'https://takiedela.ru/category/yuridicheskaya-pomoshh/feed/'), ('\u0416\u0435\u043D\u0449\u0438\u043D\u044B', 'https://takiedela.ru/category/zhenshhiny/feed/'), ('\u0416\u0438\u0432\u043E\u0442\u043D\u044B\u0435', 'https://takiedela.ru/category/zhivotnye/feed/') ] Грани.Ру: daily internet newspaper. Favicon. The website is blocked in Russia, so content is being downloaded from mirror site. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Grani(BasicNewsRecipe): title = '\u0413\u0440\u0430\u043D\u0438.\u0420\u0443' __author__ = 'bugmen00t' description = '\u0415\u0436\u0435\u0434\u043D\u0435\u0432\u043D\u0430\u044F \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442-\u0433\u0430\u0437\u0435\u0442\u0430. \u041E\u0431\u0437\u043E\u0440\u044B \u0438 \u0430\u043D\u0430\u043B\u0438\u0437 \u0440\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u0438\u0445 \u0438 \u043C\u0438\u0440\u043E\u0432\u044B\u0445 \u043F\u043E\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u0441\u043E\u0431\u044B\u0442\u0438\u0439, \u0441\u0442\u0430\u0442\u044C\u0438 \u0438 \u0432\u0438\u0434\u0435\u043E \u043E \u043F\u043E\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u0437\u0430\u043A\u043B\u044E\u0447\u0451\u043D\u043D\u044B\u0445.' publisher = '\u041E\u041E\u041E "\u0424\u043B\u0430\u0432\u0443\u0441"' category = 'newspaper' cover_url = u'https://graniru.org/files/96172.png' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False remove_empty_feeds = True oldest_article = 30 max_articles_per_feed = 50 remove_tags_before = dict(name='h3') remove_tags_after = dict(name='div', attrs={'class': 'main-text clearfix'}), # Original feeds # feeds = [ # ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://graniru.org/export/all-atom.xml'), # ('\u0421\u0442\u0430\u0442\u044C\u0438', 'https://graniru.org/export/articles-atom.xml') # ] # Feeds from mirror site feeds = [ ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://grani2.appspot.com/export/all-atom.xml'), ('\u0421\u0442\u0430\u0442\u044C\u0438', 'https://grani2.appspot.com/export/articles-atom.xml'), ] # Mirror site feeds transformation def print_version(self, url): return url.replace('https://graniru.org/', 'https://grani2.appspot.com/') ] Зеркало недели: online Ukrainian analytical newspaper and news website. Favicon. Russian version Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Zerkalo(BasicNewsRecipe): title = '\u0417\u0435\u0440\u043A\u0430\u043B\u043E \u043D\u0435\u0434\u0435\u043B\u0438. \u0423\u043A\u0440\u0430\u0438\u043D\u0430' __author__ = 'bugmen00t' description = '\u041E\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E-\u043F\u043E\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u0430\u043D\u0430\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0435\u0436\u0435\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A.' publisher = '\u00AB\u0417\u0435\u0440\u043A\u0430\u043B\u043E \u043D\u0435\u0434\u0435\u043B\u0438. \u0423\u043A\u0440\u0430\u0438\u043D\u0430\u00BB' category = 'newspaper' cover_url = u'https://zn.ua/user/img/zn_no_photo_amp.png' language = 'ru_UK' no_stylesheets = False remove_javascript = False auto_cleanup = False remove_empty_feeds = True oldest_article = 7 max_articles_per_feed = 200 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'class': 'article_body'}), remove_tags = [ dict(name='span', attrs={'class': 'print print-art-js'}), dict(name='div', attrs={'class': 'questionnaire '}), dict(name='div', attrs={'class': 'nts-video-wrapper'}), dict(name='div', attrs={'class': 'telegram'}), dict(name='div', attrs={'class': 'mist_block'}), dict(name='div', attrs={'class': 'auth_articles_block'}), dict(name='div', attrs={'class': 'special_theme_news_block'}), dict(name='div', attrs={'class': 'article_attached acenter'}), dict(name='div', attrs={'class': 'article_left'}), dict(name='div', attrs={'class': 'top_social_holder'}) ] feeds = [ ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://zn.ua/rus/rss/full.rss'), # ('\u0421\u0442\u0430\u0442\u044C\u0438', 'https://zn.ua/rus/rss/articles.rss') ] def preprocess_html(self, soup): for img in soup.findAll('img', attrs={'data-src': True}): img['src'] = img['data-src'] return soup Ukrainian version Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Zerkalo(BasicNewsRecipe): title = '\u0414\u0437\u0435\u0440\u043A\u0430\u043B\u043E \u0442\u0438\u0436\u043D\u044F. \u0423\u043A\u0440\u0430\u0457\u043D\u0430' __author__ = 'bugmen00t' description = '\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0435 \u0456\u043D\u0442\u0435\u0440\u043D\u0435\u0442-\u0432\u0438\u0434\u0430\u043D\u043D\u044F, \u0441\u0443\u0441\u043F\u0456\u043B\u044C\u043D\u043E-\u043F\u043E\u043B\u0456\u0442\u0438\u0447\u043D\u0438\u0439 \u0442\u0438\u0436\u043D\u0435\u0432\u0438\u043A.' publisher = '\u0414\u0437\u0435\u0440\u043A\u0430\u043B\u043E \u0442\u0438\u0436\u043D\u044F. \u0423\u043A\u0440\u0430\u0457\u043D\u0430' category = 'newspaper' cover_url = u'https://zn.ua/user/img/zn_no_photo_amp.png' language = 'uk' no_stylesheets = False remove_javascript = False auto_cleanup = False remove_empty_feeds = True oldest_article = 7 max_articles_per_feed = 200 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'class': 'article_body'}), remove_tags = [ dict(name='span', attrs={'class': 'print print-art-js'}), dict(name='div', attrs={'class': 'questionnaire '}), dict(name='div', attrs={'class': 'nts-video-wrapper'}), dict(name='div', attrs={'class': 'telegram'}), dict(name='div', attrs={'class': 'mist_block'}), dict(name='div', attrs={'class': 'auth_articles_block'}), dict(name='div', attrs={'class': 'special_theme_news_block'}), dict(name='div', attrs={'class': 'article_attached acenter'}), dict(name='div', attrs={'class': 'article_left'}), dict(name='div', attrs={'class': 'top_social_holder'}) ] feeds = [ ('\u041D\u043E\u0432\u0438\u043D\u0438', 'https://zn.ua/ukr/rss/full.rss'), # ('\u0421\u0442\u0430\u0442\u0442\u0456', 'https://zn.ua/ukr/rss/articles.rss') ] def preprocess_html(self, soup): for img in soup.findAll('img', attrs={'data-src': True}): img['src'] = img['data-src'] return soup |
08-26-2022, 09:29 AM | #25 |
Connoisseur
Posts: 75
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard + Kindle Voyage WiFi + Kindle PW11 Kids
|
New recipes (part 13 of ??)
Ukrainian sources.
Радіо Свобода: Prague-based Ukrainian-language TV channel founded by RFE/RL. Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe, classes class RadioSvoboda(BasicNewsRecipe): title = '\u0420\u0430\u0434\u0456\u043E \u0421\u0432\u043E\u0431\u043E\u0434\u0430' __author__ = 'bugmen00t' description = '\u0420\u0430\u0434\u0456\u043E\u0441\u0442\u0430\u043D\u0446\u0456\u044F \u0442\u0430 \u0456\u043D\u0442\u0435\u0440\u043D\u0435\u0442-\u0432\u0438\u0434\u0430\u043D\u043D\u044F, \u044F\u043A\u0430 \u043F\u043E\u0437\u0438\u0446\u0456\u043E\u043D\u0443\u0454 \u0441\u0435\u0431\u0435 \u044F\u043A \u043F\u0440\u0438\u0432\u0430\u0442\u043D\u0438\u0439 \u043D\u0435\u043A\u043E\u043C\u0435\u0440\u0446\u0456\u0439\u043D\u0438\u0439 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0439\u043D\u043E-\u043D\u043E\u0432\u0438\u043D\u043D\u0438\u0439 \u0437\u0430\u0441\u0456\u0431 \u043C\u0430\u0441\u043E\u0432\u043E\u0457 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0457.' publisher = '\u0420\u0430\u0434\u0456\u043E \u0412\u0456\u043B\u044C\u043D\u0430 \u0404\u0432\u0440\u043E\u043F\u0430/\u0420\u0430\u0434\u0456\u043E \u0421\u0432\u043E\u0431\u043E\u0434\u0430 (\u0420\u0412\u0404/\u0420\u0421)' category = 'newspaper' cover_url = u'https://www.radiosvoboda.org/Content/responsive/RFE/uk-UA/img/top_logo_news.png' language = 'uk' no_stylesheets = False remove_javascript = False auto_cleanup = False remove_empty_feeds = True oldest_article = 7 max_articles_per_feed = 20 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'id': 'article-content'}) remove_tags = [ dict(name='p', attrs={'class': 'buttons btn--load-more'}), dict(name='div', attrs={'class': 'share--box'}), dict(name='div', attrs={'class': 'c-author__btns m-t-md'}), dict(name='div', attrs={'class': 'col-xs-12 col-md-4 pull-left live-blog-left'}), dict(name='aside'), dict(name='div', attrs={'class': 'c-blockquote c-blockquote--has-quote'}), dict(name='div', attrs={'class': 'media-block also-read'}), dict(name='div', attrs={'class': 'media-block-wrap'}), dict(name='div', attrs={'class': 'wsw__embed'}), dict(name='div', attrs={'id': 'comments'}), ] feeds = [ ('\u0413\u043E\u043B\u043E\u0432\u043D\u0456 \u043D\u043E\u0432\u0438\u043D\u0438', 'https://www.radiosvoboda.org/api/zrqiteuuir'), ('\u041D\u043E\u0432\u0438\u043D\u0438: \u041A\u043E\u0440\u043E\u043D\u0430\u0432\u0456\u0440\u0443\u0441', 'https://www.radiosvoboda.org/api/zqk_myekpymv'), ('\u041C\u0456\u0436\u043D\u0430\u0440\u043E\u0434\u043D\u0456 \u043D\u043E\u0432\u0438\u043D\u0438', 'https://www.radiosvoboda.org/api/zipkqejjki'), ('\u041D\u043E\u0432\u0438\u043D\u0438: \u041F\u043E\u043B\u0456\u0442\u0438\u043A\u0430', 'https://www.radiosvoboda.org/api/zppkoe-jkp'), ('\u041D\u043E\u0432\u0438\u043D\u0438: \u0415\u043A\u043E\u043D\u043E\u043C\u0456\u043A\u0430', 'https://www.radiosvoboda.org/api/zvpk_eo-kt'), ('\u041D\u043E\u0432\u0438\u043D\u0438: \u0421\u0443\u0441\u043F\u0456\u043B\u044C\u0441\u0442\u0432\u043E', 'https://www.radiosvoboda.org/api/zjmkreybko'), ('\u041D\u043E\u0432\u0438\u043D\u0438: \u041F\u043E\u0434\u0456\u0457', 'https://www.radiosvoboda.org/api/ztpkyei-kr'), ('\u041D\u043E\u0432\u0438\u043D\u0438: \u0421\u0432\u043E\u0431\u043E\u0434\u0430 \u0441\u043B\u043E\u0432\u0430', 'https://www.radiosvoboda.org/api/zmrjoebtjo'), ('\u041D\u043E\u0432\u0438\u043D\u0438: \u041A\u043E\u0440\u0443\u043F\u0446\u0456\u044F', 'https://www.radiosvoboda.org/api/zbobpoetgbpi'), ('\u041D\u043E\u0432\u0438\u043D\u0438: \u0412\u0430\u0436\u043B\u0438\u0432\u0456', 'https://www.radiosvoboda.org/api/zmyqmvebromr'), ('\u041D\u043E\u0432\u0438\u043D\u0438: \u0421\u043F\u043E\u0440\u0442', 'https://www.radiosvoboda.org/api/ztpmmyei-mmy'), ('\u041F\u0443\u0431\u043B\u0456\u043A\u0430\u0446\u0456\u0457', 'https://www.radiosvoboda.org/api/ziibp_ejgbpy'), ('\u041F\u043E\u043B\u0456\u0442\u0438\u043A\u0430', 'https://www.radiosvoboda.org/api/ziqioejuip'), ('\u0421\u0443\u0441\u043F\u0456\u043B\u044C\u0441\u0442\u0432\u043E', 'https://www.radiosvoboda.org/api/z_qi_erkiy'), ('\u0415\u043A\u043E\u043D\u043E\u043C\u0456\u043A\u0430', 'https://www.radiosvoboda.org/api/zpyp_e-rm_'), ('\u041A\u0443\u043B\u044C\u0442\u0443\u0440\u0430', 'https://www.radiosvoboda.org/api/zmqipebui_'), ('\u0423\u043A\u0440\u0430\u0457\u043D\u0430', 'https://www.radiosvoboda.org/api/zqqirekuiq'), ('\u0421\u0432\u0456\u0442', 'https://www.radiosvoboda.org/api/zoqiqeguii'), ('\u0412\u0430\u0436\u043B\u0438\u0432\u0435 \u043D\u0430 \u0421\u0432\u043E\u0431\u043E\u0434\u0456', 'https://www.radiosvoboda.org/api/zkk-iqemmbii'), ('\u0412\u0456\u0439\u043D\u0430', 'https://www.radiosvoboda.org/api/zijqpqej_opi'), ('\u0414\u043E\u043D\u0431\u0430\u0441', 'https://www.radiosvoboda.org/api/z_rppyeruppy'), ('\u041A\u0440\u0438\u043C', 'https://www.radiosvoboda.org/api/zbypmietqmmi'), ('\u0422\u043E\u0447\u043A\u0430 \u0437\u043E\u0440\u0443', 'https://www.radiosvoboda.org/api/zpqiie-uim'), ('\u041A\u043E\u0440\u043E\u043D\u0430\u0432\u0456\u0440\u0443\u0441', 'https://www.radiosvoboda.org/api/zok_mvegpymt'), ('\u0421\u043F\u043E\u0440\u0442', 'https://www.radiosvoboda.org/api/z-q_mpevk_m_'), ('\u041A\u0438\u0442\u0430\u0439: \u0432\u0438\u043A\u043B\u0438\u043A\u0438', 'https://www.radiosvoboda.org/api/zkyymqemqvmo'), ('\u0406\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0439\u043D\u0430 \u0432\u0456\u0439\u043D\u0430', 'https://www.radiosvoboda.org/api/zuoppyepgppv'), ('\u0420\u0430\u0434\u0456\u043E \u0421\u0432\u043E\u0431\u043E\u0434\u0430 Weekly', 'https://www.radiosvoboda.org/api/zb_rmyetrqmv'), ('\u041D\u043E\u0432\u0438\u043D\u0438 \u041F\u0440\u0438\u0430\u0437\u043E\u0432\u2019\u044F', 'https://www.radiosvoboda.org/api/zkkvmyemmtmy'), ('\u041F\u043E\u0434\u0456\u0457', 'https://www.radiosvoboda.org/api/z-ppp_ev-ppv'), ('\u0421\u0445\u0435\u043C\u0438', 'https://www.radiosvoboda.org/api/z-miprevbipo'), ('\u0421\u0445\u0435\u043C\u0438: \u0420\u043E\u0437\u0441\u043B\u0456\u0434\u0443\u0432\u0430\u043D\u043D\u044F', 'https://www.radiosvoboda.org/api/ztvppoeiompo'), ('\u0421\u0445\u0435\u043C\u0438: \u041D\u043E\u0432\u0438\u043D\u0438', 'https://www.radiosvoboda.org/api/zyibpreqjbpo') ] Вікна: news program of Ukrainian TV-channel STB. Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe, classes class ViknaSTB(BasicNewsRecipe): title = '\u0412\u0438\u043A\u043D\u0430-\u043D\u043E\u0432\u043E\u0441\u0442\u0438' __author__ = 'bugmen00t' description = '\u0423\u043A\u0440\u0430\u0438\u043D\u0441\u043A\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u0430\u044F \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0430 \u0442\u0435\u043B\u0435\u043A\u0430\u043D\u0430\u043B\u0430 \u00AB\u0421\u0422\u0411\u00BB.' publisher = '\u041E\u041E\u041E \u201C\u0421\u041B\u041C \u041D\u043E\u0432\u043E\u0441\u0442\u0438\u201D' category = 'newspaper' cover_url = u'https://yt3.ggpht.com/QZxhLPDcqhjMitCDPWbzk-Zs-ILbGo3ww1iuV9SIE1k0iqjoOIctT2d4BdyEsSAR6yWsbKbGWg=s900-c-k-c0x00ffffff-no-rj' language = 'ru_UK' no_stylesheets = False remove_javascript = False auto_cleanup = False remove_empty_feeds = True oldest_article = 3 max_articles_per_feed = 20 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'class': 'content-wrapper'}) remove_tags = [ dict(name='div', attrs={'class': 'share-content-wrapper flex-wrapper'}), dict(name='div', attrs={'class': 'sticky-wrapper'}), dict(name='div', attrs={'class': 'promo-wrapper'}), dict(name='div', attrs={'class': 'mn-wrapper'}), dict(name='div', attrs={'class': 'news-tags border-btm-grey'}) ] feeds = [ ('\u0412\u0456\u043A\u043D\u0430', 'https://vikna.tv/ru/feed/') ] Ukrainian version Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe, classes class ViknaSTB(BasicNewsRecipe): title = '\u0412\u0456\u043A\u043D\u0430-\u043D\u043E\u0432\u0438\u043D\u0438' __author__ = 'bugmen00t' description = '\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0439\u043D\u0430 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u0430 \u0442\u0435\u043B\u0435\u043A\u0430\u043D\u0430\u043B\u0443 \u00AB\u0421\u0422\u0411\u00BB.' publisher = '\u0422\u041E\u0412 \u201C\u0421\u041B\u041C \u041D\u043E\u0432\u0438\u043D\u0438\u201D' category = 'newspaper' cover_url = u'https://yt3.ggpht.com/QZxhLPDcqhjMitCDPWbzk-Zs-ILbGo3ww1iuV9SIE1k0iqjoOIctT2d4BdyEsSAR6yWsbKbGWg=s900-c-k-c0x00ffffff-no-rj' language = 'uk' no_stylesheets = False remove_javascript = False auto_cleanup = False remove_empty_feeds = True oldest_article = 3 max_articles_per_feed = 20 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'class': 'content-wrapper'}) remove_tags = [ dict(name='div', attrs={'class': 'share-content-wrapper flex-wrapper'}), dict(name='div', attrs={'class': 'sticky-wrapper'}), dict(name='div', attrs={'class': 'promo-wrapper'}), dict(name='div', attrs={'class': 'mn-wrapper'}), dict(name='div', attrs={'class': 'news-tags border-btm-grey'}) ] feeds = [ ('\u0412\u0456\u043A\u043D\u0430', 'https://vikna.tv/feed/') ] Gazeta.ua: web-wersion of Ukrainian newspaper covering politics, economics, culture, sport, arts, and other different topics. Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe, classes class GazetaUA(BasicNewsRecipe): title = 'Gazeta.ua' __author__ = 'bugmen00t' description = '\u0412\u0441\u0435\u0443\u043A\u0440\u0430\u0438\u043D\u0441\u043A\u0430\u044F \u043E\u043D-\u043B\u0430\u0439\u043D \u0433\u0430\u0437\u0435\u0442\u0430. \u041E\u043F\u0435\u0440\u0430\u0442\u0438\u0432\u043D\u044B\u0435 \u043D\u043E\u0432\u043E\u0441\u0442\u0438 \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435 \u0438 \u0432 \u043C\u0438\u0440\u0435: \u0441\u043E\u0431\u044B\u0442\u0438\u044F, \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0430, \u0441\u043F\u043E\u0440\u0442, \u043A\u0443\u043B\u044C\u0442\u0443\u0440\u0430.' publisher = '\u0418\u0437\u0434\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0430\u044F \u0433\u0440\u0443\u043F\u043F\u0430 "\u041D\u043E\u0432\u0430 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u044F"' category = 'newspaper' cover_url = u'https://static2.gazeta.ua/img2/cache/preview/1064/1064219_w_450.jpg' language = 'ru_UK' no_stylesheets = False remove_javascript = False auto_cleanup = False remove_empty_feeds = True oldest_article = 3 max_articles_per_feed = 50 remove_tags_before = dict(name='article') remove_tags_after = dict(name='section', attrs={'class': 'article-content clearfix'}) remove_tags = [ dict(name='div', attrs={'class': 'mt5'}), dict(name='p', attrs={'id': 'mce_0'}), dict(name='p', attrs={'id': 'mce_1'}), dict(name='p', attrs={'id': 'mce_2'}), dict(name='p', attrs={'id': 'mce_3'}), dict(name='p', attrs={'id': 'mce_4'}), dict(name='p', attrs={'id': 'mce_5'}), dict(name='p', attrs={'id': 'mce_6'}), dict(name='p', attrs={'id': 'mce_7'}), dict(name='p', attrs={'id': 'mce_8'}), dict(name='p', attrs={'id': 'mce_9'}), dict(name='p', attrs={'id': 'mce_10'}), dict(name='p', attrs={'id': 'mce_11'}), dict(name='p', attrs={'id': 'mce_12'}), dict(name='p', attrs={'id': 'mce_13'}), dict(name='p', attrs={'id': 'mce_14'}), dict(name='p', attrs={'id': 'mce_15'}), dict(name='p', attrs={'id': 'mce_16'}), dict(name='section', attrs={'class': 'w-marker-photo lg'}) ] feeds = [ ('Gazeta.ua', 'https://gazeta.ua/ru/rss') ] Ukrainian version Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe, classes class GazetaUA(BasicNewsRecipe): title = 'Gazeta.ua' __author__ = 'bugmen00t' description = '\u0412\u0441\u0435\u0443\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430 \u043E\u043D-\u043B\u0430\u0439\u043D \u0433\u0430\u0437\u0435\u0442\u0430. \u041E\u043F\u0435\u0440\u0430\u0442\u0438\u0432\u043D\u0456 \u043D\u043E\u0432\u0438\u043D\u0438 \u0437 \u0423\u043A\u0440\u0430\u0457\u043D\u0438 \u0456 \u0441\u0432\u0456\u0442\u0443: \u043F\u043E\u0434\u0456\u0457, \u043F\u043E\u043B\u0456\u0442\u0438\u043A\u0430, \u0441\u043F\u043E\u0440\u0442, \u043A\u0443\u043B\u044C\u0442\u0443\u0440\u0430.' publisher = '\u0422\u041E\u0412 "\u0412\u0438\u0434\u0430\u0432\u043D\u0438\u0447\u0430 \u043A\u043E\u043C\u043F\u0430\u043D\u0456\u044F "\u041D\u043E\u0432\u0430 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u044F"' category = 'newspaper' cover_url = u'https://static2.gazeta.ua/img2/cache/preview/1064/1064219_w_450.jpg' language = 'uk' no_stylesheets = False remove_javascript = False auto_cleanup = False remove_empty_feeds = True oldest_article = 3 max_articles_per_feed = 50 remove_tags_before = dict(name='article') remove_tags_after = dict(name='section', attrs={'class': 'article-content clearfix'}) remove_tags = [ dict(name='div', attrs={'class': 'mt5'}), dict(name='p', attrs={'id': 'mce_0'}), dict(name='p', attrs={'id': 'mce_1'}), dict(name='p', attrs={'id': 'mce_2'}), dict(name='p', attrs={'id': 'mce_3'}), dict(name='p', attrs={'id': 'mce_4'}), dict(name='p', attrs={'id': 'mce_5'}), dict(name='p', attrs={'id': 'mce_6'}), dict(name='p', attrs={'id': 'mce_7'}), dict(name='p', attrs={'id': 'mce_8'}), dict(name='p', attrs={'id': 'mce_9'}), dict(name='p', attrs={'id': 'mce_10'}), dict(name='p', attrs={'id': 'mce_11'}), dict(name='p', attrs={'id': 'mce_12'}), dict(name='p', attrs={'id': 'mce_13'}), dict(name='p', attrs={'id': 'mce_14'}), dict(name='p', attrs={'id': 'mce_15'}), dict(name='p', attrs={'id': 'mce_16'}), dict(name='section', attrs={'class': 'w-marker-photo lg'}) ] feeds = [ ('Gazeta.ua', 'https://gazeta.ua/rss') ] Fix for Новая Вкладка (newtab.recipe): updated RSS URL. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe class NewTab(BasicNewsRecipe): title = '\u041D\u043E\u0432\u0430\u044F \u0432\u043A\u043B\u0430\u0434\u043A\u0430' __author__ = 'bugmen00t' description = '\u041F\u043B\u043E\u0449\u0430\u0434\u043A\u0430 \u0434\u043B\u044F \u043F\u0443\u0431\u043B\u0438\u043A\u0430\u0446\u0438\u0438 \u0440\u0435\u043F\u043E\u0440\u0442\u0430\u0436\u0435\u0439 \u0438 \u0437\u0430\u043C\u0435\u0442\u043E\u043A \u043E \u0442\u043E\u043C, \u043A\u0430\u043A \u043C\u0435\u043D\u044F\u044E\u0442\u0441\u044F \u0440\u0435\u0433\u0438\u043E\u043D\u044B \u0420\u043E\u0441\u0441\u0438\u0438 \u043F\u043E\u0441\u043B\u0435 24 \u0444\u0435\u0432\u0440\u0430\u043B\u044F 2022 \u0433\u043E\u0434\u0430.' publisher = '\u041C\u0438\u0445\u0430\u0438\u043B \u0414\u0430\u043D\u0438\u043B\u043E\u0432\u0438\u0447' category = 'blog' cover_url = u'https://static.tildacdn.com/tild3765-3961-4337-b366-323437626331/thenewtab-sn.jpg' language = 'ru' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 30 max_articles_per_feed = 10 remove_tags_before = dict(name='h1') remove_tags = [ dict(name='div', attrs={'class': 't-popup'}), dict(name='div', attrs={'class': 't185'}), dict(name='div', attrs={'class': 't403'}), dict(name='div', attrs={'class': 't404'}), dict(name='div', attrs={'class': 't134'}), dict(name='div', attrs={'class': 'sp-form-fields-wrapper'}) ] feeds = [ ('\u041D\u043E\u0432\u0430\u044F \u0432\u043A\u043B\u0430\u0434\u043A\u0430','https://thenewtab.io/feed/') ] def preprocess_html(self, soup): for img in soup.findAll('img', attrs={'data-original': True}): img['src'] = img['data-original'] return soup |
10-02-2022, 04:58 AM | #26 |
Connoisseur
Posts: 75
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard + Kindle Voyage WiFi + Kindle PW11 Kids
|
Not-so-quick fixes
Fix for Russian and Ukrainian editions of Gazeta.ua (gazetaua_ua.recipe & gazetaua_ru.recipe) as I somehow managed to upload empty files last time.
Fix for English version of Холод (kholod_en.recipe): updated RSS URL. Language code fix for Dingoo A320. Русский ресурс (dingoo_a320.recipe) and Ria Novosti (rian_eng.recipe). They're dead for many years though. Language code fix for The Moscow Times by Darko Miletic and Sujata Raman (moscow_times.recipe). There're two different recipes in Calibre now (this one with text-only content and my own with text & images), so I dared to add "(light version)" to the original title of this recipe. |
08-08-2023, 12:25 PM | #27 |
Connoisseur
Posts: 75
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard + Kindle Voyage WiFi + Kindle PW11 Kids
|
New/fixed Russian and Ukrainian recipes (part 14)
UA-Футбол: soccer news from Ukraine and around the world. Favicon.
Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe, classes class UAFootball(BasicNewsRecipe): #Russian version # title = 'UA-\u0424\u0443\u0442\u0431\u043E\u043B' # description = '\u0410\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u044B\u0435 \u0442\u0435\u043C\u044B \u0444\u0443\u0442\u0431\u043E\u043B\u044C\u043D\u043E\u0439 \u0436\u0438\u0437\u043D\u0438 \u0423\u043A\u0440\u0430\u0438\u043D\u044B \u0438 \u0432\u0441\u0435\u0433\u043E \u043C\u0438\u0440\u0430.' # language = 'ru_UK' # feeds = [ # ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438 \u0444\u0443\u0442\u0431\u043E\u043B\u0430', 'https://www.ua-football.com/rss/all.xml') # ] #Ukrainian version title = 'UA-\u0424\u0443\u0442\u0431\u043E\u043B' description = '\u0410\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u0456 \u0442\u0435\u043C\u0438 \u0444\u0443\u0442\u0431\u043E\u043B\u044C\u043D\u043E\u0433\u043E \u0436\u0438\u0442\u0442\u044F \u0423\u043A\u0440\u0430\u0457\u043D\u0438 \u0442\u0430 \u0432\u0441\u044C\u043E\u0433\u043E \u0441\u0432\u0456\u0442\u0443.' language = 'uk' feeds = [ ('\u041D\u043E\u0432\u0438\u043D\u0438', 'https://www.ua-football.com/ua/rss/all.xml') ] __author__ = 'bugmen00t' publisher = '1766 TEAM EOOD' category = 'news' cover_url = u'https://yt3.googleusercontent.com/11FSvKeWcjFhzKrO7nXZdc-I__UeZ0mhZwbwyOHtnx_1-q6d0zQ2LbOt2duNCY06JVg2cGXS-g=s900-c-k-c0x00ffffff-no-rj' no_stylesheets = False remove_javascript = False auto_cleanup = False remove_empty_feeds = True oldest_article = 7 max_articles_per_feed = 200 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'class': 'show-post'}) remove_tags = [ dict(name='form'), dict(name='iframe'), dict(name='div', attrs={'class': 'language'}), dict(name='div', attrs={'class': 'article__read-also'}), dict(name='div', attrs={'class': 'card-player'}), dict(name='div', attrs={'class': 'show-post-socials'}) ] # Replacing articles in Ukraininan for RU-feed # def print_version(self, url): # return url.replace('ua-football.com/ua/', 'ua-football.com/') Football.ua: soccer news portal from Ukraine. Favicon. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe, classes class FootballUA(BasicNewsRecipe): title = 'Football.UA' __author__ = 'bugmen00t' description = '\u0421\u043F\u043E\u0440\u0442\u0438\u0432\u043D\u0438\u0439 \u043F\u043E\u0440\u0442\u0430\u043B \u0432 \u0423\u043A\u0440\u0430\u0457\u043D\u0456, \u043F\u0440\u0438\u0441\u0432\u044F\u0447\u0435\u043D\u0438\u0439 \u043B\u0438\u0448\u0435 \u0444\u0443\u0442\u0431\u043E\u043B\u0443.' publisher = 'United Media Holding group' category = 'news' cover_url = u'https://s.ill.in.ua/i/news/570x380/212/212438.jpg' language = 'uk' no_stylesheets = False remove_javascript = False auto_cleanup = False remove_empty_feeds = True oldest_article = 3 max_articles_per_feed = 20 remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'bottom-info'}), dict(name='div', attrs={'class': 'social-buttons'}) ] feeds = [ ('\u041D\u043E\u0432\u0438\u043D\u0438', 'https://football.ua/rss2.ashx'), ] UNIAN.net: Ukrainian Independent News Agency of News, one of the most cited source of news from across Ukraine. Favicon Russian version (fixed) Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe class Unian(BasicNewsRecipe): title = '\u0423\u041D\u0418\u0410\u041D ' description = 'Украинское Независимое Информационное Агентство Новостей – первое в Украине и самое большое независимое информационное агентство, основанное в 1993 году, лидер среди новостных медиа страны, самый цитируемый источник новостей о событиях в стране.' # noqa __author__ = 'bugmen00t' publication_type = 'newspaper' oldest_article = 7 max_articles_per_feed = 100 language = 'ru_UK' cover_url = 'https://www.unian.net/images/unian-512x512.png' auto_cleanup = False no_stylesheets = True remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'class': 'article-text'}) remove_tags = [ dict(name='span', attrs={'class': 'article__info-item comments'}), dict(name='span', attrs={'class': 'article__info-item views'}), dict(name='div', attrs={'class': 'read-also-slider'}), dict(name='div', attrs={'class': 'nts-video-wrapper'}) ] feeds = [ (u'\u0423\u041D\u0418\u0410\u041D', u'https://rss.unian.net/site/news_rus.rss') ] def preprocess_html(self, soup): for img in soup.findAll('img', attrs={'data-src': True}): img['src'] = img['data-src'] return soup Ukrainian version Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe class Unian(BasicNewsRecipe): title = '\u0423\u041D\u0406\u0410\u041D' description = '\u0423\u041D\u0406\u0410\u041D (\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0435 \u041D\u0435\u0437\u0430\u043B\u0435\u0436\u043D\u0435 \u0406\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0439\u043D\u0435 \u0410\u0433\u0435\u043D\u0442\u0441\u0442\u0432\u043E \u041D\u043E\u0432\u0438\u043D) - \u043F\u0435\u0440\u0448\u0435 \u0432 \u0423\u043A\u0440\u0430\u0457\u043D\u0456 \u0442\u0430 \u043D\u0430\u0439\u0431\u0456\u043B\u044C\u0448\u0435 \u043D\u0435\u0437\u0430\u043B\u0435\u0436\u043D\u0435 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0439\u043D\u0435 \u0430\u0433\u0435\u043D\u0442\u0441\u0442\u0432\u043E, \u0437\u0430\u0441\u043D\u043E\u0432\u0430\u043D\u0435 1993 \u0440\u043E\u043A\u0443, \u043B\u0456\u0434\u0435\u0440 \u0441\u0435\u0440\u0435\u0434 \u043D\u043E\u0432\u0438\u043D\u043D\u0438\u0445 \u043C\u0435\u0434\u0456\u0430 \u043A\u0440\u0430\u0457\u043D\u0438, \u043D\u0430\u0439\u0431\u0456\u043B\u044C\u0448 \u0446\u0438\u0442\u043E\u0432\u0430\u043D\u0435 \u0434\u0436\u0435\u0440\u0435\u043B\u043E \u043D\u043E\u0432\u0438\u043D \u043F\u0440\u043E \u043F\u043E\u0434\u0456\u0457 \u0432 \u043A\u0440\u0430\u0457\u043D\u0456.' __author__ = 'bugmen00t' publication_type = 'newspaper' oldest_article = 7 max_articles_per_feed = 100 language = 'uk' cover_url = 'https://www.unian.ua/images/unian-512x512.png' auto_cleanup = False no_stylesheets = True remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'class': 'article-text'}) remove_tags = [ dict(name='span', attrs={'class': 'article__info-item comments'}), dict(name='span', attrs={'class': 'article__info-item views'}), dict(name='div', attrs={'class': 'read-also-slider'}), dict(name='div', attrs={'class': 'nts-video-wrapper'}) ] feeds = [ (u'\u0423\u041D\u0406\u0410\u041D', u'https://rss.unian.net/site/news_ukr.rss') ] def preprocess_html(self, soup): for img in soup.findAll('img', attrs={'data-src': True}): img['src'] = img['data-src'] return soup English version (no updates since April 2023) Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe class Unian(BasicNewsRecipe): title = 'UNIAN' description = 'UNIAN (Ukrainian Independent News Agency of News) is the largest independent news agency, first in Ukraine, founded in 1993, remaining the leader among the country\'s news media, being the most cited source of news from across Ukraine.' __author__ = 'bugmen00t' publication_type = 'newspaper' oldest_article = 30 max_articles_per_feed = 100 language = 'en_UK' cover_url = 'https://www.unian.info/images/unian-512x512.png' auto_cleanup = False no_stylesheets = True remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'class': 'article-text'}) remove_tags = [ dict(name='span', attrs={'class': 'article__info-item comments'}), dict(name='span', attrs={'class': 'article__info-item views'}), dict(name='div', attrs={'class': 'read-also-slider'}), dict(name='div', attrs={'class': 'nts-video-wrapper'}) ] feeds = [ (u'News Agency UNIAN', u'https://rss.unian.net/site/news_eng.rss') ] def preprocess_html(self, soup): for img in soup.findAll('img', attrs={'data-src': True}): img['src'] = img['data-src'] return soup ЭХО: reincarnated news portal by former Echo Moskvy journalists. Favicon. Replacememt for older defunct recipe Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class EchoMsk(BasicNewsRecipe): title = '\u042D\u0425\u041E' __author__ = 'bugmen00t' description = '\u042D\u0425\u041E - \u043A\u0430\u043A \u043D\u0430 \u0441\u0442\u0430\u0440\u043E\u043C \u0434\u043E\u0431\u0440\u043E\u043C \u0440\u0430\u0434\u0438\u043E' publisher = 'Radio Echo GmbH' category = 'news' cover_url = u'https://echofm.online/logo.png' language = 'ru' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 50 remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ dict(name='span', attrs={'class': 'sc-7b4cbb79-0 guzUFC'}), dict(name='div', attrs={'class': 'sc-f94c4ef5-0 frGiYu'}), dict(name='div', attrs={'class': 'sc-f94c4ef5-0 frGiYu'}) ] feeds = [ ('\u0413\u043B\u0430\u0432\u043D\u043E\u0435', 'https://echofm.online/feed'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://echofm.online/news/feed'), ('\u041C\u043D\u0435\u043D\u0438\u044F', 'https://echofm.online/opinions/feed'), ('\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u044B', 'https://echofm.online/documents/feed') ] Продолжение следует: digital media founded by Novaya Gazeta journalist Dmitry Kanygin. Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class ProSleduet(BasicNewsRecipe): title = '\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0435\u043D\u0438\u0435 \u0441\u043B\u0435\u0434\u0443\u0435\u0442' __author__ = 'bugmen00t' description = '\u0414\u0438\u0434\u0436\u0438\u0442\u0430\u043B-\u043F\u0440\u043E\u0435\u043A\u0442 \u0436\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u043E\u0432 \u00AB\u041D\u043E\u0432\u043E\u0439 \u0433\u0430\u0437\u0435\u0442\u044B\u00BB' publisher = 'Pavel Kanygin, Natalia Zhdanova' category = 'news' cover_url = u'https://prosleduet.media/wp-content/themes/prosle/assets/img/logo.svg' language = 'ru' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 7 max_articles_per_feed = 20 remove_tags_before = dict(name='div', attrs={'class': 'container'}) remove_tags_after = dict(name='div', attrs={'class': 'container'}) remove_tags = [ dict(name='div', attrs={'class': 'ya-share2 ya-share2_inited'}) ] feeds = [ # ('\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0435\u043D\u0438\u0435 \u0441\u043B\u0435\u0434\u0443\u0435\u0442', 'https://prosleduet.media/feed/'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://prosleduet.media/category/news/feed/'), ('\u041B\u044E\u0434\u0438', 'https://prosleduet.media/category/people/feed/'), ('\u0421\u044E\u0436\u0435\u0442\u044B', 'https://prosleduet.media/category/syuzhety/feed/'), ('\u041F\u043E\u0434\u043A\u0430\u0441\u0442\u044B', 'https://prosleduet.media/category/podcasts/feed/'), ('\u0420\u0430\u0437\u0431\u043E\u0440\u044B', 'https://prosleduet.media/category/details/feed/'), ('\u0413\u043B\u0443\u0431\u0438\u043D\u043D\u0430\u044F \u0420\u043E\u0441\u0441\u0438\u044F', 'https://prosleduet.media/category/glubinnaya-rossiya/feed/') ] |
07-31-2024, 09:29 AM | #28 |
Connoisseur
Posts: 75
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard + Kindle Voyage WiFi + Kindle PW11 Kids
|
Fixed Russian and Ukrainian recipes
Fixed Бумага recipe (paperpaper.recipe): reverted RSS URL back to main site as mirror doesn't work anymore.
Fixed Новая Газета recipe (novaya_gazeta.recipe): updated RSS URL. Optimised Компьютерра (kompiutierra.recipe) and ЛІГА.net (liganet_ru.recipe & liganet_ua.recipe) recipes: minor layout cleanup. Optimised Russian & Ukrainian versions of Украинские Национальные Новости (unn_ru.recipe) / Українські Національні Новини (unn_ua.recipe) because resulting files were too big and/or requred too much time for Calibre to process. Language update (from "ru" to "ru_UK") for Ukrainian sources in Russian: ЛІГА.net (liganet_ru.recipe), НВ («Новое время») (nv_ru.recipe), Освіта.ua (osvitaua_ru.recipe), Украинская правда (pravda_ukraine_ru.recipe), РБК-Украина (rbcua_ru.recipe), Укринформ (ukrinform_ru.recipe), УНИАН (unian_net.recipe), Украинские Национальные Новости (unn_ru.recipe), Викна-новости (vikna_ru.recipe) and Зеркало недели. Украина (zn_ru.recipe). |
08-13-2024, 06:07 PM | #29 |
Connoisseur
Posts: 75
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard + Kindle Voyage WiFi + Kindle PW11 Kids
|
New recipes (part 14)
Wicomix: comics & manga reviews (in Russain). Favicon.
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class WiComix(BasicNewsRecipe): title = 'Wicomix' __author__ = 'bugmen00t' description = '\u0418\u043D\u0442\u0435\u0440\u0435\u0441\u043D\u043E \u043F\u0438\u0448\u0435\u043C \u043F\u0440\u043E \u043A\u043E\u043C\u0438\u043A\u0441\u044B \u0438 \u043C\u0430\u043D\u0433\u0443 \u0432 \u0420\u043E\u0441\u0441\u0438\u0438.' publisher = '\u0421\u0435\u0440\u0433\u0435\u0439 \u041E\u0440\u0435\u0448\u043A\u0438\u043D' category = 'blog' cover_url = u'https://wicomix.files.wordpress.com/2016/03/10865972_581683525300298_6873875730458476144_o.jpg' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 14 max_articles_per_feed = 10 remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ # dict(name='div', attrs={'class': 'author-meta'}), dict(name='div', attrs={'id': 'jp-post-flair'}), dict(name='footer', attrs={'class': 'entry-meta'}) ] feeds = [ ('\u041F\u0443\u0431\u043B\u0438\u043A\u0430\u0446\u0438\u0438', 'https://wicomix.com/feed/') # ('\u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0438', 'https://wicomix.com/comments/feed/') ] dev.ua: Ukrainian IT and tech news. Favicon. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class WiComix(BasicNewsRecipe): title = 'dev.ua' __author__ = 'bugmen00t' publisher = '\u0422\u041E\u0412 \u00AB\u0414\u0435\u0432 \u0423\u043A\u0440\u0430\u0457\u043D\u0430\u00BB' category = 'news' cover_url = u'https://jobs.dev.ua/storage/images/34/70/82/79/original/af4c5c155ec48ed68e1c77ca26a8f0b0.jpg' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 3 max_articles_per_feed = 30 description = '\u041C\u0435\u0434\u0456\u0430 \u043F\u0440\u043E \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0456\u0457, \u0456\u043D\u043D\u043E\u0432\u0430\u0446\u0456\u0457, \u0432\u0438\u043D\u0430\u0445\u043E\u0434\u0438 \u0432 \u0423\u043A\u0440\u0430\u0457\u043D\u0456 \u0442\u0430 \u0437\u0430 \u0457\u0457 \u043C\u0435\u0436\u0430\u043C\u0438. \u041F\u0440\u043E \u0442\u0435, \u044F\u043A \u0432\u043E\u043D\u0438 \u0432\u043F\u043B\u0438\u0432\u0430\u044E\u0442\u044C \u043D\u0430 \u0436\u0438\u0442\u0442\u044F \u043B\u044E\u0434\u0435\u0439.' language = 'uk' remove_tags_before = dict(name='div', attrs={'class': 'article__header'}) remove_tags_after = dict(name='div', attrs={'class': 'article__body'}) remove_tags = [ dict(name='div', attrs={'class': 'article__reference article__reference_header'}), dict(name='div', attrs={'class': 'my-lg-5'}), dict(name='div', attrs={'class': 'video '}), dict(name='figure', attrs={'class': 'incut'}), dict(name='figure', attrs={'class': 'global-incut'}) ] feeds = [ ('dev.ua', 'https://dev.ua/rss') ] Полигон: independent Russian news site. Favicon. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class Poligon(BasicNewsRecipe): title = '\u041F\u043E\u043B\u0438\u0433\u043E\u043D' __author__ = 'bugmen00t' description = '\u041D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0435 \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442-\u0438\u0437\u0434\u0430\u043D\u0438\u0435, \u0432\u044B\u043F\u0443\u0441\u043A\u0430\u0435\u043C\u043E\u0435 \u0436\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u0430\u043C\u0438 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u0440\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u0438\u0445 \u0438\u0437\u0434\u0430\u043D\u0438\u0439, \u043F\u043E\u0434\u0432\u0435\u0440\u0433\u0448\u0438\u0445\u0441\u044F \u0434\u0430\u0432\u043B\u0435\u043D\u0438\u044E \u0441\u043E \u0441\u0442\u043E\u0440\u043E\u043D\u044B \u0433\u043E\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0430. \u041F\u0438\u0448\u0435\u043C \u043E \u0420\u043E\u0441\u0441\u0438\u0438 \u0438 \u043D\u0435 \u0442\u043E\u043B\u044C\u043A\u043E.' publisher = 'poligon.media' category = 'news' cover_url = u'https://www.plgnmedia.io/wp-content/uploads/2022/02/poligon-share.png' language = 'ru' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 14 max_articles_per_feed = 10 remove_tags_after = dict(name='article') feeds = [ ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://poligonmedia.io/feed/'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://poligonmedia.io/category/news/feed/'), ('\u0418\u043D\u0442\u0435\u0440\u0432\u044C\u044E', 'https://poligonmedia.io/category/int/feed/'), ('\u0420\u0430\u0441\u043A\u043B\u0430\u0434', 'https://poligonmedia.io/category/rasklad/feed/'), ('\u0420\u0430\u0441\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F', 'https://poligonmedia.io/category/rassled/feed/'), ('\u0420\u0435\u043F\u043E\u0440\u0442\u0430\u0436', 'https://poligonmedia.io/category/reportazh/feed/'), ('\u041C\u043E\u0436\u0435\u043C \u043E\u0431\u044A\u044F\u0441\u043D\u0438\u0442\u044C', 'https://poligonmedia.io/category/mozhem-obyasnit/feed/'), ('\u0418\u0441\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F', 'https://poligonmedia.io/category/issledovaniya/feed/'), ('English', 'https://poligon.media/category/eng/feed/') ] Before We Go blog: Fantasy, Sci-Fi and Graphic Novel reviews. Favicon. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class BeforeWeGo(BasicNewsRecipe): title = 'Before We Go' __author__ = 'bugmen00t' description = 'Before We Go Blog is a collective of Fantasy, Sci-Fi and Graphic Novel fans from around the world, passionate about providing awesome, enjoyable reviews for anyone who loves a good book!' publisher = 'BEFOREWEGOBLOG' category = 'blog' # cover_url = u'https://i0.wp.com/beforewegoblog.com/wp-content/uploads/2021/09/beth-with-long-hair.jpeg' cover_url = u'https://i0.wp.com/beforewegoblog.com/wp-content/uploads/2021/01/before-we-go-blog-1.png' language = 'en' no_stylesheets = True remove_javascript = False auto_cleanup = False oldest_article = 14 max_articles_per_feed = 10 remove_tags_before = dict(name='h1', attrs={'class': 'entry-title'}) remove_tags_after = dict(name='div', attrs={'id': 'author-bio'}) # remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'nectar-scrolling-text font_size_10vh custom_color has-custom-divider'}), dict(name='span', attrs={'class': 'meta-comment-count'}), dict(name='p', attrs={'id': 'breadcrumbs'}) ] feeds = [ ('Before We Go', 'https://beforewegoblog.com/feed/') ] T-Invariant: mutimedia project about science and academic community in Russia and outside Russia. Favicon. Russian version Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class TInvariant(BasicNewsRecipe): title = 'T-Invariant' __author__ = 'bugmen00t' description = '\u041C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0438\u0439\u043D\u044B\u0439 \u043F\u0440\u043E\u0435\u043A\u0442 \u0443\u0447\u0435\u043D\u044B\u0445 \u0438 \u043D\u0430\u0443\u0447\u043D\u044B\u0445 \u0436\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u043E\u0432.' # description = 'T-Invariant is a multimedia project of scientists and science journalists. Our task is to be a bridge between the academic community in Russia and outside Russia. Let’s keep in touch!' publisher = '\u0422-\u0438\u043D\u0432\u0430\u0440\u0438\u0430\u043D\u0442 / T-invariant' category = 'news' # cover_url = u'https://t-invariant.org/wp-content/uploads/2023/02/logo-s.png' cover_url = u'https://tinyurl.com/t-invariant/wp-content/uploads/2023/02/logo-s.png' language = 'ru' # language = 'en_RU' # language = 'uk' # language = 'de' # language = 'he' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 45 max_articles_per_feed = 15 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'media mg-info-author-block'}), dict(name='div', attrs={'class': 'mg-blog-category mb-1'}), dict(name='span', attrs={'class': 'newses-tags'}), dict(name='div', attrs={'class': 'post-share'}), dict(name='h4') ] feeds = [ # Russian version # # Direct links # # ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', ‘https://www.t-invariant.org/feed/'), # ('\u0410\u0440\u0445\u0438\u0432', ‘https://www.t-invariant.org/category/online/feed/'), # ('\u0410\u0441\u0442\u0440\u043E\u043D\u043E\u043C\u0438\u044F', ‘https://www.t-invariant.org/category/astronomy/feed/'), # ('\u0411\u0438\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/biologiya/feed/'), # ('\u0412\u043E\u0439\u043D\u0430', ‘https://www.t-invariant.org/category/war/feed/'), # ('\u0412\u0441\u0451 \u0441\u043B\u043E\u0436\u043D\u043E', ‘https://www.t-invariant.org/category/vsyo-slozhno/feed/'), # ('\u0414\u0432\u0430 \u0433\u043E\u0434\u0430 \u0432\u043E\u0439\u043D\u0435', ‘https://www.t-invariant.org/category/dva-goda-vojne/feed/'), # ('\u0414\u0432\u0435 \u0441\u0442\u043E\u0440\u043E\u043D\u044B \u043E\u0434\u043D\u043E\u0439 \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/dve-storony-odnoj-nauki/feed/'), # ('\u0414\u0438\u0441\u043A\u0443\u0441\u0441\u0438\u0438', ‘https://www.t-invariant.org/category/discussion/feed/'), # ('\u0414\u0438\u0441\u0441\u0435\u0440\u043D\u0435\u0442', ‘https://www.t-invariant.org/category/dissernet/feed/'), # ('\u0418\u0418', ‘https://www.t-invariant.org/category/ai/feed/'), # ('\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/computer-science/feed/'), # ('\u0418\u0441\u0442\u043E\u0440\u0438\u044F', ‘https://www.t-invariant.org/category/history/feed/'), # ('\u041A\u043B\u0438\u043C\u0430\u0442', ‘https://www.t-invariant.org/category/climate-ru/feed/'), # ('\u041A\u043E\u043D\u0442\u0440\u044D\u0432\u043E\u043B\u044E\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/kontrevolyutsiya/feed/'), # ('\u041A\u043E\u0440\u0440\u0443\u043F\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/korruptsiya/feed/'), # ('\u041B\u0436\u0435\u043D\u0430\u0443\u043A\u0430', ‘https://www.t-invariant.org/category/pseudoscience/feed/'), # ('\u041C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/mathematics/feed/'), # ('\u041C\u043E\u0437\u0433', ‘https://www.t-invariant.org/category/brain/feed/'), # ('\u041D\u0430\u0443\u043A\u0430 \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435', ‘https://www.t-invariant.org/category/ukrainian-science/feed/'), # ('\u041D\u0430\u0443\u0447\u043D\u0430\u044F \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/science-policy-ru/feed/'), # ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', ‘https://www.t-invariant.org/category/news/feed/'), # ('\u041E\u043F\u0440\u043E\u0441', ‘https://www.t-invariant.org/category/survey-ru/feed/'), # ('\u041E\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u0438\u0441\u043A\u0438 \u0438\u0437 \u043F\u043E\u0434\u043F\u043E\u043B\u044C\u044F', ‘https://www.t-invariant.org/category/story/feed/'), # ('\u041F\u043E\u0437\u0438\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/standpiont/feed/'), # ('\u041F\u043E\u043B\u0438\u0442\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/political-science/feed/'), # ('\u041F\u043E\u043F\u0443\u043B\u044F\u0440\u0438\u0437\u0430\u0446\u0438\u044F \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/popular-science/feed/'), # ('\u041F\u0440\u0430\u0432\u043E', ‘https://www.t-invariant.org/category/pravo/feed/'), # ('\u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441', ‘https://www.t-invariant.org/category/progress/feed/'), # ('\u041F\u0441\u0438\u0445\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/psihologiya/feed/'), # ('\u0420\u0410\u041D', ‘https://www.t-invariant.org/category/ras/feed/'), # ('\u0420\u0435\u043B\u0438\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/religion/feed/'), # ('\u0420\u0435\u043B\u043E\u043A\u0430\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/relocation/feed/'), # ('\u0420\u0435\u043F\u0440\u0435\u0441\u0441\u0438\u0438', ‘https://www.t-invariant.org/category/repression/feed/'), # ('\u0420\u0443\u0441\u0441\u043A\u0438\u0439 \u044F\u0437\u044B\u043A', ‘https://www.t-invariant.org/category/russian-language/feed/'), # ('\u0421\u0430\u043D\u043A\u0446\u0438\u0438', ‘https://www.t-invariant.org/category/sanctions/feed/'), # ('\u0421\u043E\u0437\u0434\u0430\u0442\u0435\u043B\u0438', ‘https://www.t-invariant.org/category/creators/feed/'), # ('\u0421\u043E\u0446\u0438\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/sociology/feed/'), # ('\u0422\u0435\u0440\u0440\u043E\u0440\u0438\u0437\u043C', ‘https://www.t-invariant.org/category/terrorizm/feed/'), # ('\u0423\u043D\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u044B', ‘https://www.t-invariant.org/category/universities/feed/'), # ('\u0424\u0438\u0437\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/physics/feed/'), # ('\u0424\u0438\u043B\u043E\u0441\u043E\u0444\u0438\u044F', ‘https://www.t-invariant.org/category/philosophy/feed/'), # ('\u0425\u0440\u043E\u043D\u0438\u043A\u0438 \u043F\u0440\u0435\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F \u0443\u0447\u0435\u043D\u044B\u0445', ‘https://www.t-invariant.org/category/timeline/feed/'), # ('\u0428\u043A\u043E\u043B\u0430', ‘https://www.t-invariant.org/category/shkola/feed/'), # ('\u042D\u043A\u0441\u043F\u0435\u0440\u0442\u0438\u0437\u0430 \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/science-assessment/feed/'), # ('\u042D\u043D\u0435\u0440\u0433\u0435\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/energy/feed/'), # ('\u042D\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/ethics/feed/'), # # Censorship bypass # # ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://tinyurl.com/t-invariant/feed/'), ('\u0410\u0440\u0445\u0438\u0432', 'https://tinyurl.com/t-invariant/category/online/feed/'), ('\u0410\u0441\u0442\u0440\u043E\u043D\u043E\u043C\u0438\u044F', 'https://tinyurl.com/t-invariant/category/astronomy/feed/'), ('\u0411\u0438\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/biologiya/feed/'), ('\u0412\u043E\u0439\u043D\u0430', 'https://tinyurl.com/t-invariant/category/war/feed/'), ('\u0412\u0441\u0451 \u0441\u043B\u043E\u0436\u043D\u043E', 'https://tinyurl.com/t-invariant/category/vsyo-slozhno/feed/'), ('\u0414\u0432\u0430 \u0433\u043E\u0434\u0430 \u0432\u043E\u0439\u043D\u0435', 'https://tinyurl.com/t-invariant/category/dva-goda-vojne/feed/'), ('\u0414\u0432\u0435 \u0441\u0442\u043E\u0440\u043E\u043D\u044B \u043E\u0434\u043D\u043E\u0439 \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/dve-storony-odnoj-nauki/feed/'), ('\u0414\u0438\u0441\u043A\u0443\u0441\u0441\u0438\u0438', 'https://tinyurl.com/t-invariant/category/discussion/feed/'), ('\u0414\u0438\u0441\u0441\u0435\u0440\u043D\u0435\u0442', 'https://tinyurl.com/t-invariant/category/dissernet/feed/'), ('\u0418\u0418', 'https://tinyurl.com/t-invariant/category/ai/feed/'), ('\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/computer-science/feed/'), ('\u0418\u0441\u0442\u043E\u0440\u0438\u044F', 'https://tinyurl.com/t-invariant/category/history/feed/'), ('\u041A\u043B\u0438\u043C\u0430\u0442', 'https://tinyurl.com/t-invariant/category/climate-ru/feed/'), ('\u041A\u043E\u043D\u0442\u0440\u044D\u0432\u043E\u043B\u044E\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/kontrevolyutsiya/feed/'), ('\u041A\u043E\u0440\u0440\u0443\u043F\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/korruptsiya/feed/'), ('\u041B\u0436\u0435\u043D\u0430\u0443\u043A\u0430', 'https://tinyurl.com/t-invariant/category/pseudoscience/feed/'), ('\u041C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/mathematics/feed/'), ('\u041C\u043E\u0437\u0433', 'https://tinyurl.com/t-invariant/category/brain/feed/'), ('\u041D\u0430\u0443\u043A\u0430 \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435', 'https://tinyurl.com/t-invariant/category/ukrainian-science/feed/'), ('\u041D\u0430\u0443\u0447\u043D\u0430\u044F \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/science-policy-ru/feed/'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://tinyurl.com/t-invariant/category/news/feed/'), ('\u041E\u043F\u0440\u043E\u0441', 'https://tinyurl.com/t-invariant/category/survey-ru/feed/'), ('\u041E\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u0438\u0441\u043A\u0438 \u0438\u0437 \u043F\u043E\u0434\u043F\u043E\u043B\u044C\u044F', 'https://tinyurl.com/t-invariant/category/story/feed/'), ('\u041F\u043E\u0437\u0438\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/standpiont/feed/'), ('\u041F\u043E\u043B\u0438\u0442\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/political-science/feed/'), ('\u041F\u043E\u043F\u0443\u043B\u044F\u0440\u0438\u0437\u0430\u0446\u0438\u044F \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/popular-science/feed/'), ('\u041F\u0440\u0430\u0432\u043E', 'https://tinyurl.com/t-invariant/category/pravo/feed/'), ('\u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441', 'https://tinyurl.com/t-invariant/category/progress/feed/'), ('\u041F\u0441\u0438\u0445\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/psihologiya/feed/'), ('\u0420\u0410\u041D', 'https://tinyurl.com/t-invariant/category/ras/feed/'), ('\u0420\u0435\u043B\u0438\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/religion/feed/'), ('\u0420\u0435\u043B\u043E\u043A\u0430\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/relocation/feed/'), ('\u0420\u0435\u043F\u0440\u0435\u0441\u0441\u0438\u0438', 'https://tinyurl.com/t-invariant/category/repression/feed/'), ('\u0420\u0443\u0441\u0441\u043A\u0438\u0439 \u044F\u0437\u044B\u043A', 'https://tinyurl.com/t-invariant/category/russian-language/feed/'), ('\u0421\u0430\u043D\u043A\u0446\u0438\u0438', 'https://tinyurl.com/t-invariant/category/sanctions/feed/'), ('\u0421\u043E\u0437\u0434\u0430\u0442\u0435\u043B\u0438', 'https://tinyurl.com/t-invariant/category/creators/feed/'), ('\u0421\u043E\u0446\u0438\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/sociology/feed/'), ('\u0422\u0435\u0440\u0440\u043E\u0440\u0438\u0437\u043C', 'https://tinyurl.com/t-invariant/category/terrorizm/feed/'), ('\u0423\u043D\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u044B', 'https://tinyurl.com/t-invariant/category/universities/feed/'), ('\u0424\u0438\u0437\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/physics/feed/'), ('\u0424\u0438\u043B\u043E\u0441\u043E\u0444\u0438\u044F', 'https://tinyurl.com/t-invariant/category/philosophy/feed/'), ('\u0425\u0440\u043E\u043D\u0438\u043A\u0438 \u043F\u0440\u0435\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F \u0443\u0447\u0435\u043D\u044B\u0445', 'https://tinyurl.com/t-invariant/category/timeline/feed/'), ('\u0428\u043A\u043E\u043B\u0430', 'https://tinyurl.com/t-invariant/category/shkola/feed/'), ('\u042D\u043A\u0441\u043F\u0435\u0440\u0442\u0438\u0437\u0430 \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/science-assessment/feed/'), ('\u042D\u043D\u0435\u0440\u0433\u0435\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/energy/feed/'), ('\u042D\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/ethics/feed/'), # # English version # # ('T-invariant (English)', 'https://www.t-invariant.org/en/feed/'), # # Censorship bypass # # ('T-invariant (English)', 'https://tinyurl.com/t-invariant/en/feed/'), # # Ukrainian version # # ('T-invariant (\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430)', 'https://www.t-invariant.org/uk/feed/'), # # Censorship bypass # # ('T-invariant (\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430)', 'https://tinyurl.com/t-invariant/uk/feed/'), # # German version # # ('T-invariant (Deutsch)', 'https://www.t-invariant.org/de/feed/'), # # Censorship bypass # # ('T-invariant (Deutsch)', 'https://tinyurl.com/t-invariant/de/feed/'), # # Hebrew version # # ('T-invariant (\u05E2\u05D1\u05E8\u05D9\u05EA)', 'https://www.t-invariant.org/he/feed/'), # # Censorship bypass # # ('T-invariant (\u05E2\u05D1\u05E8\u05D9\u05EA)', 'https://tinyurl.com/t-invariant/he/feed/'), # ] English version Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class TInvariant(BasicNewsRecipe): title = 'T-Invariant' __author__ = 'bugmen00t' # description = '\u041C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0438\u0439\u043D\u044B\u0439 \u043F\u0440\u043E\u0435\u043A\u0442 \u0443\u0447\u0435\u043D\u044B\u0445 \u0438 \u043D\u0430\u0443\u0447\u043D\u044B\u0445 \u0436\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u043E\u0432.' description = 'T-Invariant is a multimedia project of scientists and science journalists. Our task is to be a bridge between the academic community in Russia and outside Russia. Let’s keep in touch!' publisher = '\u0422-\u0438\u043D\u0432\u0430\u0440\u0438\u0430\u043D\u0442 / T-invariant' category = 'news' cover_url = u'https://t-invariant.org/wp-content/uploads/2023/02/logo-s.png' # cover_url = u'https://tinyurl.com/t-invariant/wp-content/uploads/2023/02/logo-s.png' # language = 'ru' language = 'en_RU' # language = 'uk' # language = 'de' # language = 'he' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 45 max_articles_per_feed = 15 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'media mg-info-author-block'}), dict(name='div', attrs={'class': 'mg-blog-category mb-1'}), dict(name='span', attrs={'class': 'newses-tags'}), dict(name='div', attrs={'class': 'post-share'}), dict(name='h4') ] feeds = [ # Russian version # # Direct links # # ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', ‘https://www.t-invariant.org/feed/'), # ('\u0410\u0440\u0445\u0438\u0432', ‘https://www.t-invariant.org/category/online/feed/'), # ('\u0410\u0441\u0442\u0440\u043E\u043D\u043E\u043C\u0438\u044F', ‘https://www.t-invariant.org/category/astronomy/feed/'), # ('\u0411\u0438\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/biologiya/feed/'), # ('\u0412\u043E\u0439\u043D\u0430', ‘https://www.t-invariant.org/category/war/feed/'), # ('\u0412\u0441\u0451 \u0441\u043B\u043E\u0436\u043D\u043E', ‘https://www.t-invariant.org/category/vsyo-slozhno/feed/'), # ('\u0414\u0432\u0430 \u0433\u043E\u0434\u0430 \u0432\u043E\u0439\u043D\u0435', ‘https://www.t-invariant.org/category/dva-goda-vojne/feed/'), # ('\u0414\u0432\u0435 \u0441\u0442\u043E\u0440\u043E\u043D\u044B \u043E\u0434\u043D\u043E\u0439 \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/dve-storony-odnoj-nauki/feed/'), # ('\u0414\u0438\u0441\u043A\u0443\u0441\u0441\u0438\u0438', ‘https://www.t-invariant.org/category/discussion/feed/'), # ('\u0414\u0438\u0441\u0441\u0435\u0440\u043D\u0435\u0442', ‘https://www.t-invariant.org/category/dissernet/feed/'), # ('\u0418\u0418', ‘https://www.t-invariant.org/category/ai/feed/'), # ('\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/computer-science/feed/'), # ('\u0418\u0441\u0442\u043E\u0440\u0438\u044F', ‘https://www.t-invariant.org/category/history/feed/'), # ('\u041A\u043B\u0438\u043C\u0430\u0442', ‘https://www.t-invariant.org/category/climate-ru/feed/'), # ('\u041A\u043E\u043D\u0442\u0440\u044D\u0432\u043E\u043B\u044E\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/kontrevolyutsiya/feed/'), # ('\u041A\u043E\u0440\u0440\u0443\u043F\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/korruptsiya/feed/'), # ('\u041B\u0436\u0435\u043D\u0430\u0443\u043A\u0430', ‘https://www.t-invariant.org/category/pseudoscience/feed/'), # ('\u041C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/mathematics/feed/'), # ('\u041C\u043E\u0437\u0433', ‘https://www.t-invariant.org/category/brain/feed/'), # ('\u041D\u0430\u0443\u043A\u0430 \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435', ‘https://www.t-invariant.org/category/ukrainian-science/feed/'), # ('\u041D\u0430\u0443\u0447\u043D\u0430\u044F \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/science-policy-ru/feed/'), # ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', ‘https://www.t-invariant.org/category/news/feed/'), # ('\u041E\u043F\u0440\u043E\u0441', ‘https://www.t-invariant.org/category/survey-ru/feed/'), # ('\u041E\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u0438\u0441\u043A\u0438 \u0438\u0437 \u043F\u043E\u0434\u043F\u043E\u043B\u044C\u044F', ‘https://www.t-invariant.org/category/story/feed/'), # ('\u041F\u043E\u0437\u0438\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/standpiont/feed/'), # ('\u041F\u043E\u043B\u0438\u0442\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/political-science/feed/'), # ('\u041F\u043E\u043F\u0443\u043B\u044F\u0440\u0438\u0437\u0430\u0446\u0438\u044F \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/popular-science/feed/'), # ('\u041F\u0440\u0430\u0432\u043E', ‘https://www.t-invariant.org/category/pravo/feed/'), # ('\u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441', ‘https://www.t-invariant.org/category/progress/feed/'), # ('\u041F\u0441\u0438\u0445\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/psihologiya/feed/'), # ('\u0420\u0410\u041D', ‘https://www.t-invariant.org/category/ras/feed/'), # ('\u0420\u0435\u043B\u0438\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/religion/feed/'), # ('\u0420\u0435\u043B\u043E\u043A\u0430\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/relocation/feed/'), # ('\u0420\u0435\u043F\u0440\u0435\u0441\u0441\u0438\u0438', ‘https://www.t-invariant.org/category/repression/feed/'), # ('\u0420\u0443\u0441\u0441\u043A\u0438\u0439 \u044F\u0437\u044B\u043A', ‘https://www.t-invariant.org/category/russian-language/feed/'), # ('\u0421\u0430\u043D\u043A\u0446\u0438\u0438', ‘https://www.t-invariant.org/category/sanctions/feed/'), # ('\u0421\u043E\u0437\u0434\u0430\u0442\u0435\u043B\u0438', ‘https://www.t-invariant.org/category/creators/feed/'), # ('\u0421\u043E\u0446\u0438\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/sociology/feed/'), # ('\u0422\u0435\u0440\u0440\u043E\u0440\u0438\u0437\u043C', ‘https://www.t-invariant.org/category/terrorizm/feed/'), # ('\u0423\u043D\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u044B', ‘https://www.t-invariant.org/category/universities/feed/'), # ('\u0424\u0438\u0437\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/physics/feed/'), # ('\u0424\u0438\u043B\u043E\u0441\u043E\u0444\u0438\u044F', ‘https://www.t-invariant.org/category/philosophy/feed/'), # ('\u0425\u0440\u043E\u043D\u0438\u043A\u0438 \u043F\u0440\u0435\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F \u0443\u0447\u0435\u043D\u044B\u0445', ‘https://www.t-invariant.org/category/timeline/feed/'), # ('\u0428\u043A\u043E\u043B\u0430', ‘https://www.t-invariant.org/category/shkola/feed/'), # ('\u042D\u043A\u0441\u043F\u0435\u0440\u0442\u0438\u0437\u0430 \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/science-assessment/feed/'), # ('\u042D\u043D\u0435\u0440\u0433\u0435\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/energy/feed/'), # ('\u042D\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/ethics/feed/'), # # Censorship bypass # # ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://tinyurl.com/t-invariant/feed/'), # ('\u0410\u0440\u0445\u0438\u0432', 'https://tinyurl.com/t-invariant/category/online/feed/'), # ('\u0410\u0441\u0442\u0440\u043E\u043D\u043E\u043C\u0438\u044F', 'https://tinyurl.com/t-invariant/category/astronomy/feed/'), # ('\u0411\u0438\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/biologiya/feed/'), # ('\u0412\u043E\u0439\u043D\u0430', 'https://tinyurl.com/t-invariant/category/war/feed/'), # ('\u0412\u0441\u0451 \u0441\u043B\u043E\u0436\u043D\u043E', 'https://tinyurl.com/t-invariant/category/vsyo-slozhno/feed/'), # ('\u0414\u0432\u0430 \u0433\u043E\u0434\u0430 \u0432\u043E\u0439\u043D\u0435', 'https://tinyurl.com/t-invariant/category/dva-goda-vojne/feed/'), # ('\u0414\u0432\u0435 \u0441\u0442\u043E\u0440\u043E\u043D\u044B \u043E\u0434\u043D\u043E\u0439 \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/dve-storony-odnoj-nauki/feed/'), # ('\u0414\u0438\u0441\u043A\u0443\u0441\u0441\u0438\u0438', 'https://tinyurl.com/t-invariant/category/discussion/feed/'), # ('\u0414\u0438\u0441\u0441\u0435\u0440\u043D\u0435\u0442', 'https://tinyurl.com/t-invariant/category/dissernet/feed/'), # ('\u0418\u0418', 'https://tinyurl.com/t-invariant/category/ai/feed/'), # ('\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/computer-science/feed/'), # ('\u0418\u0441\u0442\u043E\u0440\u0438\u044F', 'https://tinyurl.com/t-invariant/category/history/feed/'), # ('\u041A\u043B\u0438\u043C\u0430\u0442', 'https://tinyurl.com/t-invariant/category/climate-ru/feed/'), # ('\u041A\u043E\u043D\u0442\u0440\u044D\u0432\u043E\u043B\u044E\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/kontrevolyutsiya/feed/'), # ('\u041A\u043E\u0440\u0440\u0443\u043F\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/korruptsiya/feed/'), # ('\u041B\u0436\u0435\u043D\u0430\u0443\u043A\u0430', 'https://tinyurl.com/t-invariant/category/pseudoscience/feed/'), # ('\u041C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/mathematics/feed/'), # ('\u041C\u043E\u0437\u0433', 'https://tinyurl.com/t-invariant/category/brain/feed/'), # ('\u041D\u0430\u0443\u043A\u0430 \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435', 'https://tinyurl.com/t-invariant/category/ukrainian-science/feed/'), # ('\u041D\u0430\u0443\u0447\u043D\u0430\u044F \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/science-policy-ru/feed/'), # ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://tinyurl.com/t-invariant/category/news/feed/'), # ('\u041E\u043F\u0440\u043E\u0441', 'https://tinyurl.com/t-invariant/category/survey-ru/feed/'), # ('\u041E\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u0438\u0441\u043A\u0438 \u0438\u0437 \u043F\u043E\u0434\u043F\u043E\u043B\u044C\u044F', 'https://tinyurl.com/t-invariant/category/story/feed/'), # ('\u041F\u043E\u0437\u0438\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/standpiont/feed/'), # ('\u041F\u043E\u043B\u0438\u0442\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/political-science/feed/'), # ('\u041F\u043E\u043F\u0443\u043B\u044F\u0440\u0438\u0437\u0430\u0446\u0438\u044F \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/popular-science/feed/'), # ('\u041F\u0440\u0430\u0432\u043E', 'https://tinyurl.com/t-invariant/category/pravo/feed/'), # ('\u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441', 'https://tinyurl.com/t-invariant/category/progress/feed/'), # ('\u041F\u0441\u0438\u0445\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/psihologiya/feed/'), # ('\u0420\u0410\u041D', 'https://tinyurl.com/t-invariant/category/ras/feed/'), # ('\u0420\u0435\u043B\u0438\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/religion/feed/'), # ('\u0420\u0435\u043B\u043E\u043A\u0430\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/relocation/feed/'), # ('\u0420\u0435\u043F\u0440\u0435\u0441\u0441\u0438\u0438', 'https://tinyurl.com/t-invariant/category/repression/feed/'), # ('\u0420\u0443\u0441\u0441\u043A\u0438\u0439 \u044F\u0437\u044B\u043A', 'https://tinyurl.com/t-invariant/category/russian-language/feed/'), # ('\u0421\u0430\u043D\u043A\u0446\u0438\u0438', 'https://tinyurl.com/t-invariant/category/sanctions/feed/'), # ('\u0421\u043E\u0437\u0434\u0430\u0442\u0435\u043B\u0438', 'https://tinyurl.com/t-invariant/category/creators/feed/'), # ('\u0421\u043E\u0446\u0438\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/sociology/feed/'), # ('\u0422\u0435\u0440\u0440\u043E\u0440\u0438\u0437\u043C', 'https://tinyurl.com/t-invariant/category/terrorizm/feed/'), # ('\u0423\u043D\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u044B', 'https://tinyurl.com/t-invariant/category/universities/feed/'), # ('\u0424\u0438\u0437\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/physics/feed/'), # ('\u0424\u0438\u043B\u043E\u0441\u043E\u0444\u0438\u044F', 'https://tinyurl.com/t-invariant/category/philosophy/feed/'), # ('\u0425\u0440\u043E\u043D\u0438\u043A\u0438 \u043F\u0440\u0435\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F \u0443\u0447\u0435\u043D\u044B\u0445', 'https://tinyurl.com/t-invariant/category/timeline/feed/'), # ('\u0428\u043A\u043E\u043B\u0430', 'https://tinyurl.com/t-invariant/category/shkola/feed/'), # ('\u042D\u043A\u0441\u043F\u0435\u0440\u0442\u0438\u0437\u0430 \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/science-assessment/feed/'), # ('\u042D\u043D\u0435\u0440\u0433\u0435\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/energy/feed/'), # ('\u042D\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/ethics/feed/'), # # English version # # ('T-invariant (English)', 'https://www.t-invariant.org/en/feed/'), # # Censorship bypass # ('T-invariant (English)', 'https://tinyurl.com/t-invariant/en/feed/'), # # Ukrainian version # # ('T-invariant (\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430)', 'https://www.t-invariant.org/uk/feed/'), # # Censorship bypass # # ('T-invariant (\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430)', 'https://tinyurl.com/t-invariant/uk/feed/'), # # German version # # ('T-invariant (Deutsch)', 'https://www.t-invariant.org/de/feed/'), # # Censorship bypass # # ('T-invariant (Deutsch)', 'https://tinyurl.com/t-invariant/de/feed/'), # # Hebrew version # # ('T-invariant (\u05E2\u05D1\u05E8\u05D9\u05EA)', 'https://www.t-invariant.org/he/feed/'), # # Censorship bypass # # ('T-invariant (\u05E2\u05D1\u05E8\u05D9\u05EA)', 'https://tinyurl.com/t-invariant/he/feed/'), # ] Ukrainian version Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class TInvariant(BasicNewsRecipe): title = 'T-Invariant' __author__ = 'bugmen00t' # description = '\u041C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0438\u0439\u043D\u044B\u0439 \u043F\u0440\u043E\u0435\u043A\u0442 \u0443\u0447\u0435\u043D\u044B\u0445 \u0438 \u043D\u0430\u0443\u0447\u043D\u044B\u0445 \u0436\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u043E\u0432.' description = 'T-Invariant is a multimedia project of scientists and science journalists. Our task is to be a bridge between the academic community in Russia and outside Russia. Let’s keep in touch!' publisher = '\u0422-\u0438\u043D\u0432\u0430\u0440\u0438\u0430\u043D\u0442 / T-invariant' category = 'news' cover_url = u'https://t-invariant.org/wp-content/uploads/2023/02/logo-s.png' # cover_url = u'https://tinyurl.com/t-invariant/wp-content/uploads/2023/02/logo-s.png' # language = 'ru' # language = 'en_RU' language = 'uk' # language = 'de' # language = 'he' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 45 max_articles_per_feed = 15 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'media mg-info-author-block'}), dict(name='div', attrs={'class': 'mg-blog-category mb-1'}), dict(name='span', attrs={'class': 'newses-tags'}), dict(name='div', attrs={'class': 'post-share'}), dict(name='h4') ] feeds = [ # Russian version # # Direct links # # ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', ‘https://www.t-invariant.org/feed/'), # ('\u0410\u0440\u0445\u0438\u0432', ‘https://www.t-invariant.org/category/online/feed/'), # ('\u0410\u0441\u0442\u0440\u043E\u043D\u043E\u043C\u0438\u044F', ‘https://www.t-invariant.org/category/astronomy/feed/'), # ('\u0411\u0438\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/biologiya/feed/'), # ('\u0412\u043E\u0439\u043D\u0430', ‘https://www.t-invariant.org/category/war/feed/'), # ('\u0412\u0441\u0451 \u0441\u043B\u043E\u0436\u043D\u043E', ‘https://www.t-invariant.org/category/vsyo-slozhno/feed/'), # ('\u0414\u0432\u0430 \u0433\u043E\u0434\u0430 \u0432\u043E\u0439\u043D\u0435', ‘https://www.t-invariant.org/category/dva-goda-vojne/feed/'), # ('\u0414\u0432\u0435 \u0441\u0442\u043E\u0440\u043E\u043D\u044B \u043E\u0434\u043D\u043E\u0439 \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/dve-storony-odnoj-nauki/feed/'), # ('\u0414\u0438\u0441\u043A\u0443\u0441\u0441\u0438\u0438', ‘https://www.t-invariant.org/category/discussion/feed/'), # ('\u0414\u0438\u0441\u0441\u0435\u0440\u043D\u0435\u0442', ‘https://www.t-invariant.org/category/dissernet/feed/'), # ('\u0418\u0418', ‘https://www.t-invariant.org/category/ai/feed/'), # ('\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/computer-science/feed/'), # ('\u0418\u0441\u0442\u043E\u0440\u0438\u044F', ‘https://www.t-invariant.org/category/history/feed/'), # ('\u041A\u043B\u0438\u043C\u0430\u0442', ‘https://www.t-invariant.org/category/climate-ru/feed/'), # ('\u041A\u043E\u043D\u0442\u0440\u044D\u0432\u043E\u043B\u044E\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/kontrevolyutsiya/feed/'), # ('\u041A\u043E\u0440\u0440\u0443\u043F\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/korruptsiya/feed/'), # ('\u041B\u0436\u0435\u043D\u0430\u0443\u043A\u0430', ‘https://www.t-invariant.org/category/pseudoscience/feed/'), # ('\u041C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/mathematics/feed/'), # ('\u041C\u043E\u0437\u0433', ‘https://www.t-invariant.org/category/brain/feed/'), # ('\u041D\u0430\u0443\u043A\u0430 \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435', ‘https://www.t-invariant.org/category/ukrainian-science/feed/'), # ('\u041D\u0430\u0443\u0447\u043D\u0430\u044F \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/science-policy-ru/feed/'), # ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', ‘https://www.t-invariant.org/category/news/feed/'), # ('\u041E\u043F\u0440\u043E\u0441', ‘https://www.t-invariant.org/category/survey-ru/feed/'), # ('\u041E\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u0438\u0441\u043A\u0438 \u0438\u0437 \u043F\u043E\u0434\u043F\u043E\u043B\u044C\u044F', ‘https://www.t-invariant.org/category/story/feed/'), # ('\u041F\u043E\u0437\u0438\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/standpiont/feed/'), # ('\u041F\u043E\u043B\u0438\u0442\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/political-science/feed/'), # ('\u041F\u043E\u043F\u0443\u043B\u044F\u0440\u0438\u0437\u0430\u0446\u0438\u044F \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/popular-science/feed/'), # ('\u041F\u0440\u0430\u0432\u043E', ‘https://www.t-invariant.org/category/pravo/feed/'), # ('\u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441', ‘https://www.t-invariant.org/category/progress/feed/'), # ('\u041F\u0441\u0438\u0445\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/psihologiya/feed/'), # ('\u0420\u0410\u041D', ‘https://www.t-invariant.org/category/ras/feed/'), # ('\u0420\u0435\u043B\u0438\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/religion/feed/'), # ('\u0420\u0435\u043B\u043E\u043A\u0430\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/relocation/feed/'), # ('\u0420\u0435\u043F\u0440\u0435\u0441\u0441\u0438\u0438', ‘https://www.t-invariant.org/category/repression/feed/'), # ('\u0420\u0443\u0441\u0441\u043A\u0438\u0439 \u044F\u0437\u044B\u043A', ‘https://www.t-invariant.org/category/russian-language/feed/'), # ('\u0421\u0430\u043D\u043A\u0446\u0438\u0438', ‘https://www.t-invariant.org/category/sanctions/feed/'), # ('\u0421\u043E\u0437\u0434\u0430\u0442\u0435\u043B\u0438', ‘https://www.t-invariant.org/category/creators/feed/'), # ('\u0421\u043E\u0446\u0438\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/sociology/feed/'), # ('\u0422\u0435\u0440\u0440\u043E\u0440\u0438\u0437\u043C', ‘https://www.t-invariant.org/category/terrorizm/feed/'), # ('\u0423\u043D\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u044B', ‘https://www.t-invariant.org/category/universities/feed/'), # ('\u0424\u0438\u0437\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/physics/feed/'), # ('\u0424\u0438\u043B\u043E\u0441\u043E\u0444\u0438\u044F', ‘https://www.t-invariant.org/category/philosophy/feed/'), # ('\u0425\u0440\u043E\u043D\u0438\u043A\u0438 \u043F\u0440\u0435\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F \u0443\u0447\u0435\u043D\u044B\u0445', ‘https://www.t-invariant.org/category/timeline/feed/'), # ('\u0428\u043A\u043E\u043B\u0430', ‘https://www.t-invariant.org/category/shkola/feed/'), # ('\u042D\u043A\u0441\u043F\u0435\u0440\u0442\u0438\u0437\u0430 \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/science-assessment/feed/'), # ('\u042D\u043D\u0435\u0440\u0433\u0435\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/energy/feed/'), # ('\u042D\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/ethics/feed/'), # # Censorship bypass # # ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://tinyurl.com/t-invariant/feed/'), # ('\u0410\u0440\u0445\u0438\u0432', 'https://tinyurl.com/t-invariant/category/online/feed/'), # ('\u0410\u0441\u0442\u0440\u043E\u043D\u043E\u043C\u0438\u044F', 'https://tinyurl.com/t-invariant/category/astronomy/feed/'), # ('\u0411\u0438\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/biologiya/feed/'), # ('\u0412\u043E\u0439\u043D\u0430', 'https://tinyurl.com/t-invariant/category/war/feed/'), # ('\u0412\u0441\u0451 \u0441\u043B\u043E\u0436\u043D\u043E', 'https://tinyurl.com/t-invariant/category/vsyo-slozhno/feed/'), # ('\u0414\u0432\u0430 \u0433\u043E\u0434\u0430 \u0432\u043E\u0439\u043D\u0435', 'https://tinyurl.com/t-invariant/category/dva-goda-vojne/feed/'), # ('\u0414\u0432\u0435 \u0441\u0442\u043E\u0440\u043E\u043D\u044B \u043E\u0434\u043D\u043E\u0439 \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/dve-storony-odnoj-nauki/feed/'), # ('\u0414\u0438\u0441\u043A\u0443\u0441\u0441\u0438\u0438', 'https://tinyurl.com/t-invariant/category/discussion/feed/'), # ('\u0414\u0438\u0441\u0441\u0435\u0440\u043D\u0435\u0442', 'https://tinyurl.com/t-invariant/category/dissernet/feed/'), # ('\u0418\u0418', 'https://tinyurl.com/t-invariant/category/ai/feed/'), # ('\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/computer-science/feed/'), # ('\u0418\u0441\u0442\u043E\u0440\u0438\u044F', 'https://tinyurl.com/t-invariant/category/history/feed/'), # ('\u041A\u043B\u0438\u043C\u0430\u0442', 'https://tinyurl.com/t-invariant/category/climate-ru/feed/'), # ('\u041A\u043E\u043D\u0442\u0440\u044D\u0432\u043E\u043B\u044E\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/kontrevolyutsiya/feed/'), # ('\u041A\u043E\u0440\u0440\u0443\u043F\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/korruptsiya/feed/'), # ('\u041B\u0436\u0435\u043D\u0430\u0443\u043A\u0430', 'https://tinyurl.com/t-invariant/category/pseudoscience/feed/'), # ('\u041C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/mathematics/feed/'), # ('\u041C\u043E\u0437\u0433', 'https://tinyurl.com/t-invariant/category/brain/feed/'), # ('\u041D\u0430\u0443\u043A\u0430 \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435', 'https://tinyurl.com/t-invariant/category/ukrainian-science/feed/'), # ('\u041D\u0430\u0443\u0447\u043D\u0430\u044F \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/science-policy-ru/feed/'), # ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://tinyurl.com/t-invariant/category/news/feed/'), # ('\u041E\u043F\u0440\u043E\u0441', 'https://tinyurl.com/t-invariant/category/survey-ru/feed/'), # ('\u041E\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u0438\u0441\u043A\u0438 \u0438\u0437 \u043F\u043E\u0434\u043F\u043E\u043B\u044C\u044F', 'https://tinyurl.com/t-invariant/category/story/feed/'), # ('\u041F\u043E\u0437\u0438\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/standpiont/feed/'), # ('\u041F\u043E\u043B\u0438\u0442\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/political-science/feed/'), # ('\u041F\u043E\u043F\u0443\u043B\u044F\u0440\u0438\u0437\u0430\u0446\u0438\u044F \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/popular-science/feed/'), # ('\u041F\u0440\u0430\u0432\u043E', 'https://tinyurl.com/t-invariant/category/pravo/feed/'), # ('\u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441', 'https://tinyurl.com/t-invariant/category/progress/feed/'), # ('\u041F\u0441\u0438\u0445\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/psihologiya/feed/'), # ('\u0420\u0410\u041D', 'https://tinyurl.com/t-invariant/category/ras/feed/'), # ('\u0420\u0435\u043B\u0438\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/religion/feed/'), # ('\u0420\u0435\u043B\u043E\u043A\u0430\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/relocation/feed/'), # ('\u0420\u0435\u043F\u0440\u0435\u0441\u0441\u0438\u0438', 'https://tinyurl.com/t-invariant/category/repression/feed/'), # ('\u0420\u0443\u0441\u0441\u043A\u0438\u0439 \u044F\u0437\u044B\u043A', 'https://tinyurl.com/t-invariant/category/russian-language/feed/'), # ('\u0421\u0430\u043D\u043A\u0446\u0438\u0438', 'https://tinyurl.com/t-invariant/category/sanctions/feed/'), # ('\u0421\u043E\u0437\u0434\u0430\u0442\u0435\u043B\u0438', 'https://tinyurl.com/t-invariant/category/creators/feed/'), # ('\u0421\u043E\u0446\u0438\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/sociology/feed/'), # ('\u0422\u0435\u0440\u0440\u043E\u0440\u0438\u0437\u043C', 'https://tinyurl.com/t-invariant/category/terrorizm/feed/'), # ('\u0423\u043D\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u044B', 'https://tinyurl.com/t-invariant/category/universities/feed/'), # ('\u0424\u0438\u0437\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/physics/feed/'), # ('\u0424\u0438\u043B\u043E\u0441\u043E\u0444\u0438\u044F', 'https://tinyurl.com/t-invariant/category/philosophy/feed/'), # ('\u0425\u0440\u043E\u043D\u0438\u043A\u0438 \u043F\u0440\u0435\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F \u0443\u0447\u0435\u043D\u044B\u0445', 'https://tinyurl.com/t-invariant/category/timeline/feed/'), # ('\u0428\u043A\u043E\u043B\u0430', 'https://tinyurl.com/t-invariant/category/shkola/feed/'), # ('\u042D\u043A\u0441\u043F\u0435\u0440\u0442\u0438\u0437\u0430 \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/science-assessment/feed/'), # ('\u042D\u043D\u0435\u0440\u0433\u0435\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/energy/feed/'), # ('\u042D\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/ethics/feed/'), # # English version # # ('T-invariant (English)', 'https://www.t-invariant.org/en/feed/'), # # Censorship bypass # # ('T-invariant (English)', 'https://tinyurl.com/t-invariant/en/feed/'), # # Ukrainian version # # ('T-invariant (\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430)', 'https://www.t-invariant.org/uk/feed/'), # # Censorship bypass # ('T-invariant (\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430)', 'https://tinyurl.com/t-invariant/uk/feed/'), # # German version # # ('T-invariant (Deutsch)', 'https://www.t-invariant.org/de/feed/'), # # Censorship bypass # # ('T-invariant (Deutsch)', 'https://tinyurl.com/t-invariant/de/feed/'), # # Hebrew version # # ('T-invariant (\u05E2\u05D1\u05E8\u05D9\u05EA)', 'https://www.t-invariant.org/he/feed/'), # # Censorship bypass # # ('T-invariant (\u05E2\u05D1\u05E8\u05D9\u05EA)', 'https://tinyurl.com/t-invariant/he/feed/'), # ] German version (no updates since 2023) Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class TInvariant(BasicNewsRecipe): title = 'T-Invariant' __author__ = 'bugmen00t' # description = '\u041C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0438\u0439\u043D\u044B\u0439 \u043F\u0440\u043E\u0435\u043A\u0442 \u0443\u0447\u0435\u043D\u044B\u0445 \u0438 \u043D\u0430\u0443\u0447\u043D\u044B\u0445 \u0436\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u043E\u0432.' description = 'T-Invariant is a multimedia project of scientists and science journalists. Our task is to be a bridge between the academic community in Russia and outside Russia. Let’s keep in touch!' publisher = '\u0422-\u0438\u043D\u0432\u0430\u0440\u0438\u0430\u043D\u0442 / T-invariant' category = 'news' cover_url = u'https://t-invariant.org/wp-content/uploads/2023/02/logo-s.png' # cover_url = u'https://tinyurl.com/t-invariant/wp-content/uploads/2023/02/logo-s.png' # language = 'ru' # language = 'en_RU' # language = 'uk' language = 'de' # language = 'he' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 45 max_articles_per_feed = 15 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'media mg-info-author-block'}), dict(name='div', attrs={'class': 'mg-blog-category mb-1'}), dict(name='span', attrs={'class': 'newses-tags'}), dict(name='div', attrs={'class': 'post-share'}), dict(name='h4') ] feeds = [ # Russian version # # Direct links # # ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', ‘https://www.t-invariant.org/feed/'), # ('\u0410\u0440\u0445\u0438\u0432', ‘https://www.t-invariant.org/category/online/feed/'), # ('\u0410\u0441\u0442\u0440\u043E\u043D\u043E\u043C\u0438\u044F', ‘https://www.t-invariant.org/category/astronomy/feed/'), # ('\u0411\u0438\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/biologiya/feed/'), # ('\u0412\u043E\u0439\u043D\u0430', ‘https://www.t-invariant.org/category/war/feed/'), # ('\u0412\u0441\u0451 \u0441\u043B\u043E\u0436\u043D\u043E', ‘https://www.t-invariant.org/category/vsyo-slozhno/feed/'), # ('\u0414\u0432\u0430 \u0433\u043E\u0434\u0430 \u0432\u043E\u0439\u043D\u0435', ‘https://www.t-invariant.org/category/dva-goda-vojne/feed/'), # ('\u0414\u0432\u0435 \u0441\u0442\u043E\u0440\u043E\u043D\u044B \u043E\u0434\u043D\u043E\u0439 \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/dve-storony-odnoj-nauki/feed/'), # ('\u0414\u0438\u0441\u043A\u0443\u0441\u0441\u0438\u0438', ‘https://www.t-invariant.org/category/discussion/feed/'), # ('\u0414\u0438\u0441\u0441\u0435\u0440\u043D\u0435\u0442', ‘https://www.t-invariant.org/category/dissernet/feed/'), # ('\u0418\u0418', ‘https://www.t-invariant.org/category/ai/feed/'), # ('\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/computer-science/feed/'), # ('\u0418\u0441\u0442\u043E\u0440\u0438\u044F', ‘https://www.t-invariant.org/category/history/feed/'), # ('\u041A\u043B\u0438\u043C\u0430\u0442', ‘https://www.t-invariant.org/category/climate-ru/feed/'), # ('\u041A\u043E\u043D\u0442\u0440\u044D\u0432\u043E\u043B\u044E\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/kontrevolyutsiya/feed/'), # ('\u041A\u043E\u0440\u0440\u0443\u043F\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/korruptsiya/feed/'), # ('\u041B\u0436\u0435\u043D\u0430\u0443\u043A\u0430', ‘https://www.t-invariant.org/category/pseudoscience/feed/'), # ('\u041C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/mathematics/feed/'), # ('\u041C\u043E\u0437\u0433', ‘https://www.t-invariant.org/category/brain/feed/'), # ('\u041D\u0430\u0443\u043A\u0430 \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435', ‘https://www.t-invariant.org/category/ukrainian-science/feed/'), # ('\u041D\u0430\u0443\u0447\u043D\u0430\u044F \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/science-policy-ru/feed/'), # ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', ‘https://www.t-invariant.org/category/news/feed/'), # ('\u041E\u043F\u0440\u043E\u0441', ‘https://www.t-invariant.org/category/survey-ru/feed/'), # ('\u041E\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u0438\u0441\u043A\u0438 \u0438\u0437 \u043F\u043E\u0434\u043F\u043E\u043B\u044C\u044F', ‘https://www.t-invariant.org/category/story/feed/'), # ('\u041F\u043E\u0437\u0438\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/standpiont/feed/'), # ('\u041F\u043E\u043B\u0438\u0442\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/political-science/feed/'), # ('\u041F\u043E\u043F\u0443\u043B\u044F\u0440\u0438\u0437\u0430\u0446\u0438\u044F \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/popular-science/feed/'), # ('\u041F\u0440\u0430\u0432\u043E', ‘https://www.t-invariant.org/category/pravo/feed/'), # ('\u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441', ‘https://www.t-invariant.org/category/progress/feed/'), # ('\u041F\u0441\u0438\u0445\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/psihologiya/feed/'), # ('\u0420\u0410\u041D', ‘https://www.t-invariant.org/category/ras/feed/'), # ('\u0420\u0435\u043B\u0438\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/religion/feed/'), # ('\u0420\u0435\u043B\u043E\u043A\u0430\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/relocation/feed/'), # ('\u0420\u0435\u043F\u0440\u0435\u0441\u0441\u0438\u0438', ‘https://www.t-invariant.org/category/repression/feed/'), # ('\u0420\u0443\u0441\u0441\u043A\u0438\u0439 \u044F\u0437\u044B\u043A', ‘https://www.t-invariant.org/category/russian-language/feed/'), # ('\u0421\u0430\u043D\u043A\u0446\u0438\u0438', ‘https://www.t-invariant.org/category/sanctions/feed/'), # ('\u0421\u043E\u0437\u0434\u0430\u0442\u0435\u043B\u0438', ‘https://www.t-invariant.org/category/creators/feed/'), # ('\u0421\u043E\u0446\u0438\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/sociology/feed/'), # ('\u0422\u0435\u0440\u0440\u043E\u0440\u0438\u0437\u043C', ‘https://www.t-invariant.org/category/terrorizm/feed/'), # ('\u0423\u043D\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u044B', ‘https://www.t-invariant.org/category/universities/feed/'), # ('\u0424\u0438\u0437\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/physics/feed/'), # ('\u0424\u0438\u043B\u043E\u0441\u043E\u0444\u0438\u044F', ‘https://www.t-invariant.org/category/philosophy/feed/'), # ('\u0425\u0440\u043E\u043D\u0438\u043A\u0438 \u043F\u0440\u0435\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F \u0443\u0447\u0435\u043D\u044B\u0445', ‘https://www.t-invariant.org/category/timeline/feed/'), # ('\u0428\u043A\u043E\u043B\u0430', ‘https://www.t-invariant.org/category/shkola/feed/'), # ('\u042D\u043A\u0441\u043F\u0435\u0440\u0442\u0438\u0437\u0430 \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/science-assessment/feed/'), # ('\u042D\u043D\u0435\u0440\u0433\u0435\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/energy/feed/'), # ('\u042D\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/ethics/feed/'), # # Censorship bypass # # ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://tinyurl.com/t-invariant/feed/'), # ('\u0410\u0440\u0445\u0438\u0432', 'https://tinyurl.com/t-invariant/category/online/feed/'), # ('\u0410\u0441\u0442\u0440\u043E\u043D\u043E\u043C\u0438\u044F', 'https://tinyurl.com/t-invariant/category/astronomy/feed/'), # ('\u0411\u0438\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/biologiya/feed/'), # ('\u0412\u043E\u0439\u043D\u0430', 'https://tinyurl.com/t-invariant/category/war/feed/'), # ('\u0412\u0441\u0451 \u0441\u043B\u043E\u0436\u043D\u043E', 'https://tinyurl.com/t-invariant/category/vsyo-slozhno/feed/'), # ('\u0414\u0432\u0430 \u0433\u043E\u0434\u0430 \u0432\u043E\u0439\u043D\u0435', 'https://tinyurl.com/t-invariant/category/dva-goda-vojne/feed/'), # ('\u0414\u0432\u0435 \u0441\u0442\u043E\u0440\u043E\u043D\u044B \u043E\u0434\u043D\u043E\u0439 \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/dve-storony-odnoj-nauki/feed/'), # ('\u0414\u0438\u0441\u043A\u0443\u0441\u0441\u0438\u0438', 'https://tinyurl.com/t-invariant/category/discussion/feed/'), # ('\u0414\u0438\u0441\u0441\u0435\u0440\u043D\u0435\u0442', 'https://tinyurl.com/t-invariant/category/dissernet/feed/'), # ('\u0418\u0418', 'https://tinyurl.com/t-invariant/category/ai/feed/'), # ('\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/computer-science/feed/'), # ('\u0418\u0441\u0442\u043E\u0440\u0438\u044F', 'https://tinyurl.com/t-invariant/category/history/feed/'), # ('\u041A\u043B\u0438\u043C\u0430\u0442', 'https://tinyurl.com/t-invariant/category/climate-ru/feed/'), # ('\u041A\u043E\u043D\u0442\u0440\u044D\u0432\u043E\u043B\u044E\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/kontrevolyutsiya/feed/'), # ('\u041A\u043E\u0440\u0440\u0443\u043F\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/korruptsiya/feed/'), # ('\u041B\u0436\u0435\u043D\u0430\u0443\u043A\u0430', 'https://tinyurl.com/t-invariant/category/pseudoscience/feed/'), # ('\u041C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/mathematics/feed/'), # ('\u041C\u043E\u0437\u0433', 'https://tinyurl.com/t-invariant/category/brain/feed/'), # ('\u041D\u0430\u0443\u043A\u0430 \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435', 'https://tinyurl.com/t-invariant/category/ukrainian-science/feed/'), # ('\u041D\u0430\u0443\u0447\u043D\u0430\u044F \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/science-policy-ru/feed/'), # ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://tinyurl.com/t-invariant/category/news/feed/'), # ('\u041E\u043F\u0440\u043E\u0441', 'https://tinyurl.com/t-invariant/category/survey-ru/feed/'), # ('\u041E\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u0438\u0441\u043A\u0438 \u0438\u0437 \u043F\u043E\u0434\u043F\u043E\u043B\u044C\u044F', 'https://tinyurl.com/t-invariant/category/story/feed/'), # ('\u041F\u043E\u0437\u0438\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/standpiont/feed/'), # ('\u041F\u043E\u043B\u0438\u0442\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/political-science/feed/'), # ('\u041F\u043E\u043F\u0443\u043B\u044F\u0440\u0438\u0437\u0430\u0446\u0438\u044F \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/popular-science/feed/'), # ('\u041F\u0440\u0430\u0432\u043E', 'https://tinyurl.com/t-invariant/category/pravo/feed/'), # ('\u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441', 'https://tinyurl.com/t-invariant/category/progress/feed/'), # ('\u041F\u0441\u0438\u0445\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/psihologiya/feed/'), # ('\u0420\u0410\u041D', 'https://tinyurl.com/t-invariant/category/ras/feed/'), # ('\u0420\u0435\u043B\u0438\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/religion/feed/'), # ('\u0420\u0435\u043B\u043E\u043A\u0430\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/relocation/feed/'), # ('\u0420\u0435\u043F\u0440\u0435\u0441\u0441\u0438\u0438', 'https://tinyurl.com/t-invariant/category/repression/feed/'), # ('\u0420\u0443\u0441\u0441\u043A\u0438\u0439 \u044F\u0437\u044B\u043A', 'https://tinyurl.com/t-invariant/category/russian-language/feed/'), # ('\u0421\u0430\u043D\u043A\u0446\u0438\u0438', 'https://tinyurl.com/t-invariant/category/sanctions/feed/'), # ('\u0421\u043E\u0437\u0434\u0430\u0442\u0435\u043B\u0438', 'https://tinyurl.com/t-invariant/category/creators/feed/'), # ('\u0421\u043E\u0446\u0438\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/sociology/feed/'), # ('\u0422\u0435\u0440\u0440\u043E\u0440\u0438\u0437\u043C', 'https://tinyurl.com/t-invariant/category/terrorizm/feed/'), # ('\u0423\u043D\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u044B', 'https://tinyurl.com/t-invariant/category/universities/feed/'), # ('\u0424\u0438\u0437\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/physics/feed/'), # ('\u0424\u0438\u043B\u043E\u0441\u043E\u0444\u0438\u044F', 'https://tinyurl.com/t-invariant/category/philosophy/feed/'), # ('\u0425\u0440\u043E\u043D\u0438\u043A\u0438 \u043F\u0440\u0435\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F \u0443\u0447\u0435\u043D\u044B\u0445', 'https://tinyurl.com/t-invariant/category/timeline/feed/'), # ('\u0428\u043A\u043E\u043B\u0430', 'https://tinyurl.com/t-invariant/category/shkola/feed/'), # ('\u042D\u043A\u0441\u043F\u0435\u0440\u0442\u0438\u0437\u0430 \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/science-assessment/feed/'), # ('\u042D\u043D\u0435\u0440\u0433\u0435\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/energy/feed/'), # ('\u042D\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/ethics/feed/'), # # English version # # ('T-invariant (English)', 'https://www.t-invariant.org/en/feed/'), # # Censorship bypass # # ('T-invariant (English)', 'https://tinyurl.com/t-invariant/en/feed/'), # # Ukrainian version # # ('T-invariant (\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430)', 'https://www.t-invariant.org/uk/feed/'), # # Censorship bypass # # ('T-invariant (\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430)', 'https://tinyurl.com/t-invariant/uk/feed/'), # # German version # # ('T-invariant (Deutsch)', 'https://www.t-invariant.org/de/feed/'), # # Censorship bypass # ('T-invariant (Deutsch)', 'https://tinyurl.com/t-invariant/de/feed/'), # # Hebrew version # # ('T-invariant (\u05E2\u05D1\u05E8\u05D9\u05EA)', 'https://www.t-invariant.org/he/feed/'), # # Censorship bypass # # ('T-invariant (\u05E2\u05D1\u05E8\u05D9\u05EA)', 'https://tinyurl.com/t-invariant/he/feed/'), # ] Hebrew version (no updates since 2023) Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe class TInvariant(BasicNewsRecipe): title = 'T-Invariant' __author__ = 'bugmen00t' # description = '\u041C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0438\u0439\u043D\u044B\u0439 \u043F\u0440\u043E\u0435\u043A\u0442 \u0443\u0447\u0435\u043D\u044B\u0445 \u0438 \u043D\u0430\u0443\u0447\u043D\u044B\u0445 \u0436\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u043E\u0432.' description = 'T-Invariant is a multimedia project of scientists and science journalists. Our task is to be a bridge between the academic community in Russia and outside Russia. Let’s keep in touch!' publisher = '\u0422-\u0438\u043D\u0432\u0430\u0440\u0438\u0430\u043D\u0442 / T-invariant' category = 'news' cover_url = u'https://t-invariant.org/wp-content/uploads/2023/02/logo-s.png' # cover_url = u'https://tinyurl.com/t-invariant/wp-content/uploads/2023/02/logo-s.png' # language = 'ru' # language = 'en_RU' # language = 'uk' # language = 'de' language = 'he' no_stylesheets = False remove_javascript = False auto_cleanup = False oldest_article = 45 max_articles_per_feed = 15 remove_tags_before = dict(name='h1') remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'media mg-info-author-block'}), dict(name='div', attrs={'class': 'mg-blog-category mb-1'}), dict(name='span', attrs={'class': 'newses-tags'}), dict(name='div', attrs={'class': 'post-share'}), dict(name='h4') ] feeds = [ # Russian version # # Direct links # # ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', ‘https://www.t-invariant.org/feed/'), # ('\u0410\u0440\u0445\u0438\u0432', ‘https://www.t-invariant.org/category/online/feed/'), # ('\u0410\u0441\u0442\u0440\u043E\u043D\u043E\u043C\u0438\u044F', ‘https://www.t-invariant.org/category/astronomy/feed/'), # ('\u0411\u0438\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/biologiya/feed/'), # ('\u0412\u043E\u0439\u043D\u0430', ‘https://www.t-invariant.org/category/war/feed/'), # ('\u0412\u0441\u0451 \u0441\u043B\u043E\u0436\u043D\u043E', ‘https://www.t-invariant.org/category/vsyo-slozhno/feed/'), # ('\u0414\u0432\u0430 \u0433\u043E\u0434\u0430 \u0432\u043E\u0439\u043D\u0435', ‘https://www.t-invariant.org/category/dva-goda-vojne/feed/'), # ('\u0414\u0432\u0435 \u0441\u0442\u043E\u0440\u043E\u043D\u044B \u043E\u0434\u043D\u043E\u0439 \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/dve-storony-odnoj-nauki/feed/'), # ('\u0414\u0438\u0441\u043A\u0443\u0441\u0441\u0438\u0438', ‘https://www.t-invariant.org/category/discussion/feed/'), # ('\u0414\u0438\u0441\u0441\u0435\u0440\u043D\u0435\u0442', ‘https://www.t-invariant.org/category/dissernet/feed/'), # ('\u0418\u0418', ‘https://www.t-invariant.org/category/ai/feed/'), # ('\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/computer-science/feed/'), # ('\u0418\u0441\u0442\u043E\u0440\u0438\u044F', ‘https://www.t-invariant.org/category/history/feed/'), # ('\u041A\u043B\u0438\u043C\u0430\u0442', ‘https://www.t-invariant.org/category/climate-ru/feed/'), # ('\u041A\u043E\u043D\u0442\u0440\u044D\u0432\u043E\u043B\u044E\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/kontrevolyutsiya/feed/'), # ('\u041A\u043E\u0440\u0440\u0443\u043F\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/korruptsiya/feed/'), # ('\u041B\u0436\u0435\u043D\u0430\u0443\u043A\u0430', ‘https://www.t-invariant.org/category/pseudoscience/feed/'), # ('\u041C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/mathematics/feed/'), # ('\u041C\u043E\u0437\u0433', ‘https://www.t-invariant.org/category/brain/feed/'), # ('\u041D\u0430\u0443\u043A\u0430 \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435', ‘https://www.t-invariant.org/category/ukrainian-science/feed/'), # ('\u041D\u0430\u0443\u0447\u043D\u0430\u044F \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/science-policy-ru/feed/'), # ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', ‘https://www.t-invariant.org/category/news/feed/'), # ('\u041E\u043F\u0440\u043E\u0441', ‘https://www.t-invariant.org/category/survey-ru/feed/'), # ('\u041E\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u0438\u0441\u043A\u0438 \u0438\u0437 \u043F\u043E\u0434\u043F\u043E\u043B\u044C\u044F', ‘https://www.t-invariant.org/category/story/feed/'), # ('\u041F\u043E\u0437\u0438\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/standpiont/feed/'), # ('\u041F\u043E\u043B\u0438\u0442\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/political-science/feed/'), # ('\u041F\u043E\u043F\u0443\u043B\u044F\u0440\u0438\u0437\u0430\u0446\u0438\u044F \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/popular-science/feed/'), # ('\u041F\u0440\u0430\u0432\u043E', ‘https://www.t-invariant.org/category/pravo/feed/'), # ('\u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441', ‘https://www.t-invariant.org/category/progress/feed/'), # ('\u041F\u0441\u0438\u0445\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/psihologiya/feed/'), # ('\u0420\u0410\u041D', ‘https://www.t-invariant.org/category/ras/feed/'), # ('\u0420\u0435\u043B\u0438\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/religion/feed/'), # ('\u0420\u0435\u043B\u043E\u043A\u0430\u0446\u0438\u044F', ‘https://www.t-invariant.org/category/relocation/feed/'), # ('\u0420\u0435\u043F\u0440\u0435\u0441\u0441\u0438\u0438', ‘https://www.t-invariant.org/category/repression/feed/'), # ('\u0420\u0443\u0441\u0441\u043A\u0438\u0439 \u044F\u0437\u044B\u043A', ‘https://www.t-invariant.org/category/russian-language/feed/'), # ('\u0421\u0430\u043D\u043A\u0446\u0438\u0438', ‘https://www.t-invariant.org/category/sanctions/feed/'), # ('\u0421\u043E\u0437\u0434\u0430\u0442\u0435\u043B\u0438', ‘https://www.t-invariant.org/category/creators/feed/'), # ('\u0421\u043E\u0446\u0438\u043E\u043B\u043E\u0433\u0438\u044F', ‘https://www.t-invariant.org/category/sociology/feed/'), # ('\u0422\u0435\u0440\u0440\u043E\u0440\u0438\u0437\u043C', ‘https://www.t-invariant.org/category/terrorizm/feed/'), # ('\u0423\u043D\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u044B', ‘https://www.t-invariant.org/category/universities/feed/'), # ('\u0424\u0438\u0437\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/physics/feed/'), # ('\u0424\u0438\u043B\u043E\u0441\u043E\u0444\u0438\u044F', ‘https://www.t-invariant.org/category/philosophy/feed/'), # ('\u0425\u0440\u043E\u043D\u0438\u043A\u0438 \u043F\u0440\u0435\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F \u0443\u0447\u0435\u043D\u044B\u0445', ‘https://www.t-invariant.org/category/timeline/feed/'), # ('\u0428\u043A\u043E\u043B\u0430', ‘https://www.t-invariant.org/category/shkola/feed/'), # ('\u042D\u043A\u0441\u043F\u0435\u0440\u0442\u0438\u0437\u0430 \u043D\u0430\u0443\u043A\u0438', ‘https://www.t-invariant.org/category/science-assessment/feed/'), # ('\u042D\u043D\u0435\u0440\u0433\u0435\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/energy/feed/'), # ('\u042D\u0442\u0438\u043A\u0430', ‘https://www.t-invariant.org/category/ethics/feed/'), # # Censorship bypass # # ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://tinyurl.com/t-invariant/feed/'), # ('\u0410\u0440\u0445\u0438\u0432', 'https://tinyurl.com/t-invariant/category/online/feed/'), # ('\u0410\u0441\u0442\u0440\u043E\u043D\u043E\u043C\u0438\u044F', 'https://tinyurl.com/t-invariant/category/astronomy/feed/'), # ('\u0411\u0438\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/biologiya/feed/'), # ('\u0412\u043E\u0439\u043D\u0430', 'https://tinyurl.com/t-invariant/category/war/feed/'), # ('\u0412\u0441\u0451 \u0441\u043B\u043E\u0436\u043D\u043E', 'https://tinyurl.com/t-invariant/category/vsyo-slozhno/feed/'), # ('\u0414\u0432\u0430 \u0433\u043E\u0434\u0430 \u0432\u043E\u0439\u043D\u0435', 'https://tinyurl.com/t-invariant/category/dva-goda-vojne/feed/'), # ('\u0414\u0432\u0435 \u0441\u0442\u043E\u0440\u043E\u043D\u044B \u043E\u0434\u043D\u043E\u0439 \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/dve-storony-odnoj-nauki/feed/'), # ('\u0414\u0438\u0441\u043A\u0443\u0441\u0441\u0438\u0438', 'https://tinyurl.com/t-invariant/category/discussion/feed/'), # ('\u0414\u0438\u0441\u0441\u0435\u0440\u043D\u0435\u0442', 'https://tinyurl.com/t-invariant/category/dissernet/feed/'), # ('\u0418\u0418', 'https://tinyurl.com/t-invariant/category/ai/feed/'), # ('\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/computer-science/feed/'), # ('\u0418\u0441\u0442\u043E\u0440\u0438\u044F', 'https://tinyurl.com/t-invariant/category/history/feed/'), # ('\u041A\u043B\u0438\u043C\u0430\u0442', 'https://tinyurl.com/t-invariant/category/climate-ru/feed/'), # ('\u041A\u043E\u043D\u0442\u0440\u044D\u0432\u043E\u043B\u044E\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/kontrevolyutsiya/feed/'), # ('\u041A\u043E\u0440\u0440\u0443\u043F\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/korruptsiya/feed/'), # ('\u041B\u0436\u0435\u043D\u0430\u0443\u043A\u0430', 'https://tinyurl.com/t-invariant/category/pseudoscience/feed/'), # ('\u041C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/mathematics/feed/'), # ('\u041C\u043E\u0437\u0433', 'https://tinyurl.com/t-invariant/category/brain/feed/'), # ('\u041D\u0430\u0443\u043A\u0430 \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435', 'https://tinyurl.com/t-invariant/category/ukrainian-science/feed/'), # ('\u041D\u0430\u0443\u0447\u043D\u0430\u044F \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/science-policy-ru/feed/'), # ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://tinyurl.com/t-invariant/category/news/feed/'), # ('\u041E\u043F\u0440\u043E\u0441', 'https://tinyurl.com/t-invariant/category/survey-ru/feed/'), # ('\u041E\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u0438\u0441\u043A\u0438 \u0438\u0437 \u043F\u043E\u0434\u043F\u043E\u043B\u044C\u044F', 'https://tinyurl.com/t-invariant/category/story/feed/'), # ('\u041F\u043E\u0437\u0438\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/standpiont/feed/'), # ('\u041F\u043E\u043B\u0438\u0442\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/political-science/feed/'), # ('\u041F\u043E\u043F\u0443\u043B\u044F\u0440\u0438\u0437\u0430\u0446\u0438\u044F \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/popular-science/feed/'), # ('\u041F\u0440\u0430\u0432\u043E', 'https://tinyurl.com/t-invariant/category/pravo/feed/'), # ('\u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441', 'https://tinyurl.com/t-invariant/category/progress/feed/'), # ('\u041F\u0441\u0438\u0445\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/psihologiya/feed/'), # ('\u0420\u0410\u041D', 'https://tinyurl.com/t-invariant/category/ras/feed/'), # ('\u0420\u0435\u043B\u0438\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/religion/feed/'), # ('\u0420\u0435\u043B\u043E\u043A\u0430\u0446\u0438\u044F', 'https://tinyurl.com/t-invariant/category/relocation/feed/'), # ('\u0420\u0435\u043F\u0440\u0435\u0441\u0441\u0438\u0438', 'https://tinyurl.com/t-invariant/category/repression/feed/'), # ('\u0420\u0443\u0441\u0441\u043A\u0438\u0439 \u044F\u0437\u044B\u043A', 'https://tinyurl.com/t-invariant/category/russian-language/feed/'), # ('\u0421\u0430\u043D\u043A\u0446\u0438\u0438', 'https://tinyurl.com/t-invariant/category/sanctions/feed/'), # ('\u0421\u043E\u0437\u0434\u0430\u0442\u0435\u043B\u0438', 'https://tinyurl.com/t-invariant/category/creators/feed/'), # ('\u0421\u043E\u0446\u0438\u043E\u043B\u043E\u0433\u0438\u044F', 'https://tinyurl.com/t-invariant/category/sociology/feed/'), # ('\u0422\u0435\u0440\u0440\u043E\u0440\u0438\u0437\u043C', 'https://tinyurl.com/t-invariant/category/terrorizm/feed/'), # ('\u0423\u043D\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u044B', 'https://tinyurl.com/t-invariant/category/universities/feed/'), # ('\u0424\u0438\u0437\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/physics/feed/'), # ('\u0424\u0438\u043B\u043E\u0441\u043E\u0444\u0438\u044F', 'https://tinyurl.com/t-invariant/category/philosophy/feed/'), # ('\u0425\u0440\u043E\u043D\u0438\u043A\u0438 \u043F\u0440\u0435\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u044F \u0443\u0447\u0435\u043D\u044B\u0445', 'https://tinyurl.com/t-invariant/category/timeline/feed/'), # ('\u0428\u043A\u043E\u043B\u0430', 'https://tinyurl.com/t-invariant/category/shkola/feed/'), # ('\u042D\u043A\u0441\u043F\u0435\u0440\u0442\u0438\u0437\u0430 \u043D\u0430\u0443\u043A\u0438', 'https://tinyurl.com/t-invariant/category/science-assessment/feed/'), # ('\u042D\u043D\u0435\u0440\u0433\u0435\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/energy/feed/'), # ('\u042D\u0442\u0438\u043A\u0430', 'https://tinyurl.com/t-invariant/category/ethics/feed/'), # # English version # # ('T-invariant (English)', 'https://www.t-invariant.org/en/feed/'), # # Censorship bypass # # ('T-invariant (English)', 'https://tinyurl.com/t-invariant/en/feed/'), # # Ukrainian version # # ('T-invariant (\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430)', 'https://www.t-invariant.org/uk/feed/'), # # Censorship bypass # # ('T-invariant (\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430)', 'https://tinyurl.com/t-invariant/uk/feed/'), # # German version # # ('T-invariant (Deutsch)', 'https://www.t-invariant.org/de/feed/'), # # Censorship bypass # # ('T-invariant (Deutsch)', 'https://tinyurl.com/t-invariant/de/feed/'), # # Hebrew version # # ('T-invariant (\u05E2\u05D1\u05E8\u05D9\u05EA)', 'https://www.t-invariant.org/he/feed/'), # Censorship bypass # # ('T-invariant (\u05E2\u05D1\u05E8\u05D9\u05EA)', 'https://tinyurl.com/t-invariant/he/feed/'), # ] |
08-19-2024, 02:46 PM | #30 |
Connoisseur
Posts: 75
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard + Kindle Voyage WiFi + Kindle PW11 Kids
|
New and fixed recipes (part 14)
Fixed Собеседник recipe (sobesednik.recipe): updated RSS URL.
Агентство: news site, sidekick of Проект.Медиа. Favicon. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe class Agents(BasicNewsRecipe): title = u'\u00AB\u0410\u0433\u0435\u043D\u0442\u0441\u0442\u0432\u043E\u00BB' description = u'\u041D\u043E\u0432\u043E\u0441\u0442\u043D\u043E\u0435 \u0438\u0437\u0434\u0430\u043D\u0438\u0435, \u043E\u0441\u043D\u043E\u0432\u0430\u043D\u043D\u043E\u0435 \u0432\u044B\u0445\u043E\u0434\u0446\u0430\u043C\u0438 \u0438\u0437 \u043A\u043E\u043B\u043B\u0435\u043A\u0442\u0438\u0432\u0430 \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u043C\u043E\u0433\u043E \u0438\u0437\u0434\u0430\u043D\u0438\u044F \u00AB\u041F\u0440\u043E\u0435\u043A\u0442\u00BB.' __author__ = 'bugmen00t' publisher = 'Project Media' publication_type = 'news' oldest_article = 7 max_articles_per_feed = 10 language = 'ru' cover_url = 'https://cdn4.cdn-telegram.org/file/EBZ1b-EP9bQkgmu3zbLST2mKWxQ1Gk5yfyG8I09Jf7LSDlVJ2ebptzauijIr4c3QxfWTOxTk9dPjAF-Bg0XZtYOtHM5309L4FjuhH588Mj3Om5MQbT2R7Kc4nM4hVL9DS39UcnIT_k4Gh3JKCDxkNGS2ZlG3hJpkdyAvPoVNcdO9vfXWOuWkyDQAO9N3aoiK5TXAjLj5ViM7zSVX1vRLF_LF_8TBADdyT6TOkqjrzYv_35ARGxld6CtNLDwLh5plVKgnDkEiwlR82PjEabDBHOKRnPRhoF1KViWF-_CswOZtvC-Z2NBDcvwT4mMV-sfCZaEwQXaXaKNUDzyszmViEw.jpg' auto_cleanup = False no_stylesheets = False remove_tags_before = dict(name='h1') remove_tags_after = dict(name='article') feeds = [( u'\u0413\u0430\u0437\u0435\u0442\u0430 "\u0421\u043E\u0431\u0435\u0441\u0435\u0434\u043D\u0438\u043A"', 'https://www.agents.media/feed/' )] Зеркало: Belarussian news site, successor of shut down TUT.BY portal. Favicon. As there're no Belarussian recipes yet, I'm not sure which language code should be used for Russian (Belarus): ru_BY, ru_BE or just ru. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe class Zerkalo(BasicNewsRecipe): title = u'\u0417\u0435\u0440\u043A\u0430\u043B\u043E' description = u'\u0417\u0435\u0440\u043A\u0430\u043B\u043E, \u043F\u0440\u043E\u0435\u043A\u0442 \u0447\u0430\u0441\u0442\u0438 \u0431\u044B\u0432\u0448\u0435\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u044B TUT.BY.' __author__ = 'bugmen00t' publisher = '\u0417\u0435\u0440\u043A\u0430\u043B\u043E (zerkalo.io)' publication_type = 'news' oldest_article = 7 max_articles_per_feed = 100 language = 'ru_BY' cover_url = 'https://upload.wikimedia.org/wikipedia/commons/c/c7/Zerkalo.io.png' auto_cleanup = False no_stylesheets = False remove_tags_before = dict(name='h1') remove_tags_after = dict(name='div', attrs={'id': 'article_body'}) remove_tags = [ dict(name='div', attrs={'class': 'b-addition m-single m-simplify'}), dict(name='div', attrs={'class': 'b-addition m-simplify'}), dict(name='iframe'), ] feeds = [ # # Original feeds # # ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438 \u0437\u0430 \u0434\u0435\u043D\u044C', 'https://news.zerkalo.io/rss/all.rss'), # ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438 \u043D\u0435\u0434\u0435\u043B\u0438', 'https://news.zerkalo.io/rss/index.rss'), # # Censorship bypass # ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438 \u0437\u0430 \u0434\u0435\u043D\u044C', 'https://br0wse-zerkalo.site/news/rss/all.rss'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438 \u043D\u0435\u0434\u0435\u043B\u0438', 'https://br0wse-zerkalo.site/news/rss/index.rss'), ] SotaVision: Russian independent news outlet. Favicon. Fixes needed:
Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe class Sotavision(BasicNewsRecipe): title = u'SOTA.Vision' description = u'\u0420\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u043E\u0435 \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0435 \u043E\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E-\u043F\u043E\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u043C\u0435\u0434\u0438\u0430, \u0441\u0444\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0435 \u043D\u0430 \u043E\u0441\u0432\u0435\u0449\u0435\u043D\u0438\u0438 \u043D\u0430\u0440\u0443\u0448\u0435\u043D\u0438\u044F \u043F\u0440\u0430\u0432 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430 \u0438 \u043F\u043E\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u043C \u043F\u0440\u0435\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u0438 \u0432 \u0420\u043E\u0441\u0441\u0438\u0438.' __author__ = 'bugmen00t' publisher = '\u0410\u043B\u0435\u043A\u0441\u0430\u043D\u0434\u0440\u0430 \u0410\u0433\u0435\u0435\u0432\u0430, \u041E\u043B\u0435\u0433 \u0415\u043B\u0430\u043D\u0447\u0438\u043A, \u0415\u0432\u0433\u0435\u043D\u0438\u0439 \u0414\u043E\u043C\u043E\u0436\u0438\u0440\u043E\u0432' publication_type = 'news' oldest_article = 7 max_articles_per_feed = 10 language = 'ru' cover_url = 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/SotaVision.png/600px-SotaVision.png' auto_cleanup = False no_stylesheets = True remove_tags_before = dict(name='h1') remove_tags_after = dict(name='span', attrs={'style': 'border-color:#EBEBEB;border-width:1px;width:100%;'}) remove_tags = [ dict(name='div', attrs={'class': 'td_block_wrap tdb_mobile_menu tdi_7 td-pb-border-top td_block_template_1 tdb-header-align'}), dict(name='div', attrs={'class': 'td_block_wrap tdb_single_author tdi_52 td-pb-border-top td_block_template_1 tdb-post-meta'}), dict(name='div', attrs={'class': 'td_block_wrap tdb_single_date tdi_53 td-pb-border-top td_block_template_1 tdb-post-meta'}), dict(name='div', attrs={'class': 'td_block_wrap tdb_single_post_views tdi_54 td-pb-border-top td_block_template_1 tdb-post-meta'}), dict(name='div', attrs={'class': 'td_block_wrap tdb_single_post_share tdi_55 td-pb-border-top td_block_template_1'}), dict(name='div', attrs={'class': 'td-post-sharing-visible'}), ] feeds = [ ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://sotavision.world/feed/'), ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://sotavision.world/category/news/feed/'), ('\u0418\u0441\u0442\u043E\u0440\u0438\u0438', 'https://sotavision.world/category/stories/feed/'), ('\u0412\u0438\u0434\u0435\u043E', 'https://sotavision.world/category/videos/feed/'), ('\u0424\u043E\u0442\u043E', 'https://sotavision.world/category/photos/feed/'), ('\u041A\u0430\u0440\u0442\u043E\u0447\u043A\u0438', 'https://sotavision.world/category/projects/feed/'), ('\u041C\u043D\u0435\u043D\u0438\u044F', 'https://sotavision.world/category/opinions/feed/'), ] GeekCity: modern culture portal: news, reviews and guides. Favicon. Spoiler:
Code:
#!/usr/bin/env python # vim:fileencoding=utf-8 from calibre.web.feeds.news import BasicNewsRecipe class GeekCity(BasicNewsRecipe): title = u'GeekCity' description = u'\u041F\u043E\u0440\u0442\u0430\u043B \u043E \u043A\u043E\u043C\u0438\u043A\u0441\u0430\u0445, \u043A\u0438\u043D\u043E, \u0441\u0435\u0440\u0438\u0430\u043B\u0430\u0445, \u0438\u0433\u0440\u0430\u0445, sci-fi \u0438 \u043C\u043D\u043E\u0433\u043E\u043C \u0434\u0440\u0443\u0433\u043E\u043C. \u0417\u0434\u0435\u0441\u044C \u0432\u044B \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043C\u043E\u0436\u0435\u0442\u0435 \u043D\u0430\u0439\u0442\u0438 \u0441\u0432\u0435\u0436\u0438\u0435 \u043D\u043E\u0432\u043E\u0441\u0442\u0438 \u043E \u0441\u0430\u043C\u044B\u0445 \u0432\u0430\u0436\u043D\u044B\u0445 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\u0445 \u0432 \u043C\u0438\u0440\u0435 \u0433\u0438\u043A\u043E\u0432, \u0430\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u044B\u0435 \u043E\u0431\u0437\u043E\u0440\u044B, \u0433\u0430\u0439\u0434\u044B, \u0441\u0442\u0430\u0442\u044C\u0438 \u0438 \u043C\u043D\u043E\u0433\u043E\u0435 \u0434\u0440\u0443\u0433\u043E\u0435.' __author__ = 'bugmen00t' publisher = 'GeekCity.ru' publication_type = 'blog' oldest_article = 7 max_articles_per_feed = 10 language = 'ru' cover_url = 'https://geekcity.ru/wp-content/uploads/2021/03/og.jpg' auto_cleanup = False no_stylesheets = False remove_tags_before = dict(name='article') remove_tags_after = dict(name='article') remove_tags = [ dict(name='div', attrs={'class': 'term-badges floated'}), dict(name='div', attrs={'class': 'post-meta single-post-meta'}), dict(name='div', attrs={'class': 'post-share single-post-share top-share clearfix style-1'}), dict(name='div', attrs={'class': 'post-share single-post-share bottom-share clearfix style-1'}), dict(name='div', attrs={'class': 'entry-terms post-tags clearfix'}), ] feeds = [ ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://geekcity.ru/feed/'), ('\u0411\u0435\u0437 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438', 'https://geekcity.ru/category/%D0%B1%D0%B5%D0%B7-%D1%80%D1%83%D0%B1%D1%80%D0%B8%D0%BA%D0%B8/feed/'), ('\u0421\u0430\u0439\u0442', 'https://geekcity.ru/category/site/'), ('\u0424\u0438\u043B\u044C\u043C\u044B', 'https://geekcity.ru/category/moviespod/feed/'), ('\u0421\u0435\u0440\u0438\u0430\u043B\u044B', 'https://geekcity.ru/category/tvshow/feed/'), ('\u041A\u043E\u043C\u0438\u043A\u0441\u044B', 'https://geekcity.ru/category/comics-2/feed/'), ('\u0418\u0433\u0440\u044B', 'https://geekcity.ru/category/games/feed/'), ('\u0422\u0435\u0445\u043D\u043E', 'https://geekcity.ru/category/tech/feed/'), ('\u0428\u043C\u043E\u0442', 'https://geekcity.ru/category/shopping/feed/'), ('\u0413\u0430\u0439\u0434\u044B', 'https://geekcity.ru/category/guides/feed/'), ] |
Tags |
fixes, russain, ukraninan |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
New and updated recipes for Ukrainian media | rpalyvoda | Recipes | 2 | 06-12-2015 05:56 PM |
New recipes for a couple of Ukrainian media | rpalyvoda | Recipes | 1 | 06-11-2015 06:31 PM |
looking for built-in recipes | Bobus | Recipes | 4 | 09-26-2011 04:31 PM |
customizing built in recipes | jrasmussen | Calibre | 2 | 02-16-2010 12:26 AM |