diff --git a/recipes/cherta.recipe b/recipes/cherta.recipe new file mode 100644 index 0000000000..5585b2d32f --- /dev/null +++ b/recipes/cherta.recipe @@ -0,0 +1,34 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 + +from calibre.web.feeds.news import BasicNewsRecipe + + +class Cherta(BasicNewsRecipe): + title = '\u0427\u0435\u0440\u0442\u0430' + __author__ = 'bugmen00t' + description = ' \u0418\u043D\u0442\u0435\u0440\u0435\u0441\u043D\u044B\u0435, \u0432\u0430\u0436\u043D\u044B\u0435 \u0438 \u0433\u043B\u0443\u0431\u043E\u043A\u0438\u0435 \u0442\u0435\u043A\u0441\u0442\u044B \u043F\u0440\u043E \u043D\u0430\u0441\u0438\u043B\u0438\u0435 \u0438 \u043D\u0435\u0440\u0430\u0432\u0435\u043D\u0441\u0442\u0432\u043E \u0432 \u0420\u043E\u0441\u0441\u0438\u0438.' # noqa + publisher = 'cherta.media' + category = 'blog' + cover_url = u'https://cherta.media/wp-content/uploads/2022/01/cherta_snippet2.png' + language = 'ru' + no_stylesheets = False + remove_javascript = False + auto_cleanup = False + oldest_article = 30 + max_articles_per_feed = 30 + + remove_tags_before = dict(name='div', attrs={'class':'single-story'}) + + remove_tags_after = dict(name='div', attrs={'class':'single-page__footer-info'}) + + remove_tags = [ + dict(name='div', attrs={'class': 'single-content-link'}), + dict(name='div', attrs={'class': 'single-page__footer-info_links clearfix'}), + dict(name='div', attrs={'class': 'single-article-tags-wrapper'}) + ] + + feeds = [ + ('\u0418\u0441\u0442\u043E\u0440\u0438\u0438', 'https://cherta.media/story/feed/'), + ('\u0418\u043D\u0442\u0435\u0440\u0432\u044C\u044E', 'https://cherta.media/interview/feed/') + ] diff --git a/recipes/gorky.recipe b/recipes/gorky.recipe new file mode 100644 index 0000000000..3177072fd1 --- /dev/null +++ b/recipes/gorky.recipe @@ -0,0 +1,42 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 + +from calibre.web.feeds.news import BasicNewsRecipe + + +class Gorky(BasicNewsRecipe): + title = '\u0413\u043E\u0440\u044C\u043A\u0438\u0439' + __author__ = 'bugmen00t' + description = '\u041D\u0435\u043A\u043E\u043C\u043C\u0435\u0440\u0447\u0435\u0441\u043A\u0438\u0439 \u043F\u0440\u043E\u0435\u043A\u0442 \u043E \u043A\u043D\u0438\u0433\u0430\u0445 \u0438 \u0447\u0442\u0435\u043D\u0438\u0438.' # noqa + publisher = '\u0410\u041D\u041E "\u0426\u0435\u043D\u0442\u0440 \u043F\u043E \u0441\u043E\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044E \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044F \u043A\u0443\u043B\u044C\u0442\u0443\u0440\u044B \u0447\u0442\u0435\u043D\u0438\u044F \u0438 \u043A\u043D\u0438\u0433\u043E\u0438\u0437\u0434\u0430\u043D\u0438\u044F \u00AB\u0413\u043E\u0440\u044C\u043A\u0438\u0439 \u041C\u0435\u0434\u0438\u0430\u00BB"' # noqa + category = 'blog' + cover_url = u'https://gorky.media/wp-content/uploads/2016/09/gorky.png' + language = 'ru' + no_stylesheets = False + remove_javascript = False + auto_cleanup = False + oldest_article = 30 + max_articles_per_feed = 30 + + remove_tags_before = dict(name='div', attrs={'id': 'td-outer-wrap'}) + + remove_tags_after = dict(name='footer') + + remove_tags = [ + dict(name='footer'), + dict(name='nav', attrs={'class': 'navbar'}), + dict(name='div', attrs={'class': 'hide'}), + dict(name='div', attrs={'class': 'nav-new'}), + dict(name='div', attrs={'class': 'top-panel '}), + dict(name='div', attrs={'class': 'panel-nav'}), + dict(name='div', attrs={'class': 'panel-nav _hide'}), + dict(name='ul', attrs={'class': 'top-panel__bottom buttons-list _share'}), + dict(name='ul', attrs={'class': 'buttons-list _share d_lg-none'}) + ] + + feeds = [ + ('\u0420\u0435\u0446\u0435\u043D\u0437\u0438\u0438', 'https://gorky.media/reviews/feed/'), + ('\u0424\u0440\u0430\u0433\u043C\u0435\u043D\u0442\u044B', 'https://gorky.media/fragments/feed/'), + ('\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442', 'https://gorky.media/context/feed/'), + ('\u041F\u043E\u0434\u0431\u043E\u0440\u043A\u0438', 'https://gorky.media/books-collection/feed/') + ] diff --git a/recipes/icons/cherta.png b/recipes/icons/cherta.png new file mode 100644 index 0000000000..bce598eb1e Binary files /dev/null and b/recipes/icons/cherta.png differ diff --git a/recipes/icons/gorky.png b/recipes/icons/gorky.png new file mode 100644 index 0000000000..d1ce5a7f51 Binary files /dev/null and b/recipes/icons/gorky.png differ diff --git a/recipes/icons/interfax_ua.png b/recipes/icons/interfax_ua.png new file mode 100644 index 0000000000..1bc28f5f77 Binary files /dev/null and b/recipes/icons/interfax_ua.png differ diff --git a/recipes/icons/kholod_en.png b/recipes/icons/kholod_en.png new file mode 100644 index 0000000000..4aa8967db1 Binary files /dev/null and b/recipes/icons/kholod_en.png differ diff --git a/recipes/icons/newtimes.png b/recipes/icons/newtimes.png new file mode 100644 index 0000000000..9b574ea425 Binary files /dev/null and b/recipes/icons/newtimes.png differ diff --git a/recipes/icons/sova.png b/recipes/icons/sova.png new file mode 100644 index 0000000000..be22571e5e Binary files /dev/null and b/recipes/icons/sova.png differ diff --git a/recipes/icons/stopgame.png b/recipes/icons/stopgame.png new file mode 100644 index 0000000000..5a52b84390 Binary files /dev/null and b/recipes/icons/stopgame.png differ diff --git a/recipes/interfax_ua.recipe b/recipes/interfax_ua.recipe new file mode 100644 index 0000000000..eae204a661 --- /dev/null +++ b/recipes/interfax_ua.recipe @@ -0,0 +1,37 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 + +from calibre.web.feeds.news import BasicNewsRecipe + + +class InterfaxUAUA(BasicNewsRecipe): + title = '\u0406\u043D\u0442\u0435\u0440\u0444\u0430\u043A\u0441-\u0423\u043A\u0440\u0430\u0457\u043D\u0430' + __author__ = 'bugmen00t' + description = '\u0406\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u044F \u043F\u0440\u043E \u043E\u0441\u0442\u0430\u043D\u043D\u0456 \u043F\u043E\u0434\u0456\u0457 \u0432 \u043F\u043E\u043B\u0456\u0442\u0438\u0446\u0456 \u0423\u043A\u0440\u0430\u0457\u043D\u0438, \u043A\u043B\u044E\u0447\u043E\u0432\u0456 \u0443\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0456 \u0435\u043A\u043E\u043D\u043E\u043C\u0456\u0447\u043D\u0456 \u043D\u043E\u0432\u0438\u043D\u0438 \u0442\u0430 \u043E\u0441\u043D\u043E\u0432\u043D\u0456 \u043F\u043E\u0434\u0456\u0457 \u0432 \u043A\u0440\u0430\u0457\u043D\u0430\u0445 \u0421\u041D\u0414 \u0456 \u0441\u0432\u0456\u0442\u0443.' # noqa + publisher = '\u0406\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0439\u043D\u0435 \u0430\u0433\u0435\u043D\u0442\u0441\u0442\u0432\u043E \u00AB\u0406\u043D\u0442\u0435\u0440\u0444\u0430\u043A\u0441-\u0423\u043A\u0440\u0430\u0457\u043D\u0430\u00BB' # noqa + category = 'newspaper' + cover_url = u'https://interfax.com.ua/static/articles/images/interfax_ukraine_logo_ukr.svg' + 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', attrs={'class': 'article article-content-view'} + ) + + remove_tags_after = dict( + name='article', attrs={'class': 'article article-content-view'} + ) + + remove_tags = [ + dict(name='div', attrs={'class': 'grid article-content-secondary-header'}), + dict(name='div', attrs={'class': 'article-tags'}), + ] + + feeds = [( + '\u041D\u043E\u0432\u0438\u043D\u0438', + 'https://interfax.com.ua/news/last.rss' + )] diff --git a/recipes/kholod_en.recipe b/recipes/kholod_en.recipe new file mode 100644 index 0000000000..01fbb8a522 --- /dev/null +++ b/recipes/kholod_en.recipe @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 + +from calibre.web.feeds.news import BasicNewsRecipe + + +class Kholod(BasicNewsRecipe): + title = u'Holod Media' + description = u'Internet media whose authors search for exciting stories all over Russia and then tell them to readers.' + __author__ = 'bugmen00t' + publisher = 'Taisiya Bekbulatova' + publication_type = 'blog' + oldest_article = 60 + max_articles_per_feed = 100 + language = 'en_RU' + cover_url = 'https://image.simplecastcdn.com/images/93a97011-6988-4787-8242-e202b2840fde/08e85f64-9901-44e1-b20c-7da01c5ce0c0/holodpodcastlogo.jpg' + auto_cleanup = False + no_stylesheets = False + + remove_tags_before = dict(name='h1') + + remove_tags_after = dict( + name='div', attrs={'class': 'article__content the-content text-column'} + ) + + remove_tags = [dict(name='div', attrs={'class': 'inlinemore'})] + + feeds = [(u'Spotlight', 'https://holod.media/en/sections/spotlight/feed/'), + (u'Opinion', 'https://holod.media/en/sections/opinion/feed/'), + (u'Interview', 'https://holod.media/en/sections/interview/feed/')] diff --git a/recipes/newtimes.recipe b/recipes/newtimes.recipe new file mode 100644 index 0000000000..aeb7f082fa --- /dev/null +++ b/recipes/newtimes.recipe @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 + +from calibre.web.feeds.news import BasicNewsRecipe + + +class NewTimes(BasicNewsRecipe): + title = 'The New Times' + __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 \u0436\u0443\u0440\u043D\u0430\u043B' # noqa + publisher = 'The New Times' + category = 'newspaper' + cover_url = u'https://newtimes.ru/img/ogimage.png' + language = 'ru' + no_stylesheets = False + remove_javascript = False + auto_cleanup = False + oldest_article = 14 + max_articles_per_feed = 150 + + remove_tags_before = dict(name='h1') + + remove_tags_after = dict(name='div', attrs={'id': 'full'}) + + remove_tags = [ + + # dict(name='div', attrs={'class': 'image-box image-box_center'}), + ] + + feeds = [('\u0421\u0442\u0430\u0442\u044C\u0438', 'https://newtimes.ru/rss/')] diff --git a/recipes/sova.recipe b/recipes/sova.recipe new file mode 100644 index 0000000000..8d2e227ddf --- /dev/null +++ b/recipes/sova.recipe @@ -0,0 +1,91 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 + +from calibre.web.feeds.news import BasicNewsRecipe + + +class Sova(BasicNewsRecipe): + title = 'SOVA' + __author__ = 'bugmen00t' + description = ' \u0420\u0443\u0441\u0441\u043A\u043E\u044F\u0437\u044B\u0447\u043D\u043E\u0435 \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0435 \u043E\u043D\u043B\u0430\u0439\u043D-\u0438\u0437\u0434\u0430\u043D\u0438\u0435, \u043E\u0441\u043D\u043E\u0432\u0430\u043D\u043D\u043E\u0435 \u0432 \u0422\u0431\u0438\u043B\u0438\u0441\u0438 \u0432 2016 \u0433\u043E\u0434\u0443 \u0433\u0440\u0443\u043F\u043F\u043E\u0439 \u043F\u0440\u043E\u0444\u0435\u0441\u0441\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0445 \u0436\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u043E\u0432, \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0449\u0435\u0435 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u0443\u044E \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u043E \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0435, \u044D\u043A\u043E\u043D\u043E\u043C\u0438\u043A\u0435 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043D\u0435\u043E\u0442\u044A\u0435\u043C\u043B\u0435\u043C\u044B\u0445 \u0430\u0441\u043F\u0435\u043A\u0442\u0430\u0445 \u0436\u0438\u0437\u043D\u0438 \u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0433\u043E \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430 \u0432 \u0413\u0440\u0443\u0437\u0438\u0438 \u0438 \u0440\u0435\u0433\u0438\u043E\u043D\u0435 \u0432 \u0446\u0435\u043B\u043E\u043C.' # noqa + publisher = '\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044C\u0441\u0442\u0432\u0435\u043D\u043D\u0430\u044F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u044F Sova News' # noqa + category = 'blog' + cover_url = u'https://i0.wp.com/sova.news/wp-content/uploads/2021/08/sova@512.png' + language = 'ru' + no_stylesheets = False + remove_javascript = False + auto_cleanup = False + oldest_article = 60 + max_articles_per_feed = 30 + + remove_tags_before = dict(name='div', attrs={'class': 'site-wrapper header-7'}) + + remove_tags_after = dict( + name='div', attrs={'class': 'single-body entry-content typography-copy'} + ) + + remove_tags = [ + dict(name='nav', attrs={'aria-label': 'breadcrumbs'}), + dict(name='header', attrs={'class': 'site-header site-header--skin-5'}), + dict(name='footer'), + dict(name='ins'), + dict(name='div', attrs={'class': 'entry-interaction__left'}), + dict(name='div', attrs={'class': 'entry-interaction__right'}), + dict(name='div', attrs={'id': 'mnmd-sticky-header'}), + dict(name='div', attrs={'id': 'mnmd-offcanvas-primary'}), + dict(name='div', attrs={'id': 'mnmd-offcanvas-mobile'}), + dict(name='div', attrs={'class': 'entry-interaction__right'}), + dict(name='blockquote', attrs={'class': 'wp-embedded-content'}) + ] + + feeds = [ + ( + '\u041D\u043E\u0432\u043E\u0441\u0442\u0438', + 'https://sova.news/news/feed/' + ), + ( + '\u041F\u043E\u043B\u0438\u0442\u0438\u043A\u0430', + 'https://sova.news/analytics/politics/feed/' + ), + ( + '\u042D\u043A\u043E\u043D\u043E\u043C\u0438\u043A\u0430', + 'https://sova.news/analytics/economy/feed/' + ), + ( + '\u041E\u0431\u0449\u0435\u0441\u0442\u0432\u043E', + 'https://sova.news/analytics/society/feed/' + ), + ( + '\u0418\u043D\u0442\u0435\u0440\u0432\u044C\u044E', + 'https://sova.news/interview/feed/' + ), ('Unfake', 'https://sova.news/unfake/feed/'), + ( + '\u0414\u0440\u0443\u0433\u0430\u044F \u0421\u043E\u0432\u0430', + 'https://sova.news/sova-other/feed/' + ), + ( + '\u0418\u0441\u043A\u0443\u0441\u0441\u0442\u0432\u043E', + 'https://sova.news/sova-other/art/feed/' + ), + ( + '\u0422\u0443\u0440\u0438\u0437\u043C', + 'https://sova.news/sova-other/tourism/feed/' + ), ('#weekendnavigator', 'https://sova.news/weekendnavigator/feed/'), + ( + '\u0421\u043E\u0441\u0435\u0434\u0438', + 'https://sova.news/sova-other/neighbours/feed/' + ), + ( + '\u041D\u0435\u0434\u0435\u043B\u044F \u0432 \u0433\u043E\u0440\u043E\u0434\u0435', + 'https://sova.news/week-in-the-city/feed/' + ), + ( + '\u0424\u043E\u0442\u043E\u043F\u0440\u043E\u0433\u0443\u043B\u043A\u0438', + 'https://sova.news/photowalks/feed/' + ), ('\u0424\u043E\u0442\u043E', 'https://sova.news/photo/feed/') + ] + + def preprocess_html(self, soup): + for img in soup.findAll('img', attrs={'data-src': True}): + img['src'] = img['data-src'] + return soup diff --git a/recipes/stopgame.recipe b/recipes/stopgame.recipe new file mode 100644 index 0000000000..9d694360bb --- /dev/null +++ b/recipes/stopgame.recipe @@ -0,0 +1,48 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 + +from calibre.web.feeds.news import BasicNewsRecipe + + +class StopGame(BasicNewsRecipe): + title = 'StopGame' + __author__ = 'bugmen00t' + description = ' \u0420\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u0438\u0439 \u0438\u0433\u0440\u043E\u0432\u043E\u0439 \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442-\u043F\u043E\u0440\u0442\u0430\u043B, \u043D\u0430 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u043A\u043E\u043B\u043B\u0435\u043A\u0442\u0438\u0432 \u0430\u0432\u0442\u043E\u0440\u043E\u0432 \u0440\u0430\u0441\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u0432\u0441\u0435\u043C \u0436\u0435\u043B\u0430\u044E\u0449\u0438\u043C \u043E \u0432\u0438\u0434\u0435\u043E\u0438\u0433\u0440\u0430\u0445. ' # noqa + publisher = 'StopGame.ru' + category = 'blog' + cover_url = u'https://images.stopgame.ru/blogs/2020/01/29/U7R7t5rQ.jpg' + language = 'ru' + no_stylesheets = False + remove_javascript = False + auto_cleanup = False + oldest_article = 7 + max_articles_per_feed = 50 + + remove_tags_before = dict(name='h1') + + remove_tags_after = dict(name='div', attrs={'class': '_end-info_zp673_1113'}) + + remove_tags = [ + dict(name='section', attrs={'id': 'comments'}), + dict(name='footer'), + dict( + name='section', + attrs={'class': '_page-section_xdzdd_387 _additional-reads_zp673_1348'} + ) + ] + + feeds = [ + ( + '\u0412\u0441\u0435 \u0440\u0430\u0437\u0434\u0435\u043B\u044B', + 'https://rss.stopgame.ru/rss_all.xml' + ), + ( + '\u041D\u043E\u0432\u043E\u0441\u0442\u0438', + 'https://rss.stopgame.ru/rss_news.xml' + ), + ( + '\u0421\u0442\u0430\u0442\u044C\u0438', + 'https://rss.stopgame.ru/articles.xml' + ), ('\u0412\u0438\u0434\u0435\u043E', 'https://rss.stopgame.ru/videos.xml'), + ('\u0411\u043B\u043E\u0433\u0438', 'https://rss.stopgame.ru/all_topics.xml') + ]