diff --git a/recipes/baikaljournal.recipe b/recipes/baikaljournal.recipe new file mode 100644 index 0000000000..58d4e86d07 --- /dev/null +++ b/recipes/baikaljournal.recipe @@ -0,0 +1,35 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 + +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.' # noqa + 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' # noqa + 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/' + )] diff --git a/recipes/currenttime.recipe b/recipes/currenttime.recipe new file mode 100644 index 0000000000..abb63fa430 --- /dev/null +++ b/recipes/currenttime.recipe @@ -0,0 +1,109 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 + +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.' # noqa + 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")' # noqa + 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' + ) + ] diff --git a/recipes/fontanka.recipe b/recipes/fontanka.recipe new file mode 100644 index 0000000000..99d210cd62 --- /dev/null +++ b/recipes/fontanka.recipe @@ -0,0 +1,48 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 + +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.' # noqa + 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')] diff --git a/recipes/icons/baikaljournal.png b/recipes/icons/baikaljournal.png new file mode 100644 index 0000000000..9dff29b8e4 Binary files /dev/null and b/recipes/icons/baikaljournal.png differ diff --git a/recipes/icons/currenttime.png b/recipes/icons/currenttime.png new file mode 100644 index 0000000000..0b62dc0c39 Binary files /dev/null and b/recipes/icons/currenttime.png differ diff --git a/recipes/icons/fontanka.png b/recipes/icons/fontanka.png new file mode 100644 index 0000000000..fa2990d1a4 Binary files /dev/null and b/recipes/icons/fontanka.png differ diff --git a/recipes/icons/thebell.png b/recipes/icons/thebell.png new file mode 100644 index 0000000000..60597cb0ce Binary files /dev/null and b/recipes/icons/thebell.png differ diff --git a/recipes/snob.recipe b/recipes/snob.recipe index dbc8083645..8f979a4705 100644 --- a/recipes/snob.recipe +++ b/recipes/snob.recipe @@ -31,4 +31,5 @@ class Snob(BasicNewsRecipe): def get_article_url(self, article): link = article.get('link', None) - return link.split('?utm')[0] + if 'utm_source' in link: + return link.split('?utm')[0] diff --git a/recipes/thebell.recipe b/recipes/thebell.recipe new file mode 100644 index 0000000000..d259b66c27 --- /dev/null +++ b/recipes/thebell.recipe @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 + +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.' # noqa + 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' # noqa + 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')]