View Single Post
Old 07-27-2022, 03:59 PM   #14
bugmen00t
Connoisseur
bugmen00t rocks like Gibraltar!bugmen00t rocks like Gibraltar!bugmen00t rocks like Gibraltar!bugmen00t rocks like Gibraltar!bugmen00t rocks like Gibraltar!bugmen00t rocks like Gibraltar!bugmen00t rocks like Gibraltar!bugmen00t rocks like Gibraltar!bugmen00t rocks like Gibraltar!bugmen00t rocks like Gibraltar!bugmen00t rocks like Gibraltar!
 
bugmen00t's Avatar
 
Posts: 82
Karma: 100000
Join Date: Aug 2015
Device: Kindle Keyboard 3G + Kindle Voyage WiFi + Kindle PW11 Kids WiFi
New recipes (part 05 of ??)

Your daily dose of new recipes

NEW RUSSIAN RECIPES

Собака: cultural life & news of Saint Petersburg. 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 Sobaka(BasicNewsRecipe):
    title          		  = '\u0421\u043E\u0431\u0430\u043A\u0430.ru'
    __author__            = 'bugmen00t'
    description           = '\u0416\u0443\u0440\u043D\u0430\u043B \u043E \u043B\u044E\u0434\u044F\u0445 \u0432 \u041F\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435'
    publisher             = '\u041E\u041E\u041E \u00AB\u0416\u0443\u0440\u043D\u0430\u043B\u044B \u0438 \u0441\u0430\u0439\u0442\u044B "\u0424\u0430\u0431\u0440\u0438\u043A\u0430 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430 "\u0422\u043E\u0447\u043A\u0430 \u0420\u0443"\u00BB'
    category              = 'magazine'
    cover_url = u'https://static.sobaka.ru/images/post/00/04/31/21/_rotator.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='div', attrs={'class': 'b-post-view__head'})
    
    remove_tags_after = dict(name='div', attrs={'class': 'b-post-view__foot'})

    remove_tags =   [
        dict(name='div', attrs={'class': 'b-post-view__telegram-promo'}),
        dict(name='div', attrs={'class': 'b-post-view__tgb'}),
        dict(name='div', attrs={'id': 'comments'}),
        dict(name='div', attrs={'class': 'b-post-view__section'}),
        dict(name='div', attrs={'class': 'b-post-view__share'}),
        dict(name='div', attrs={'class': 'b-post-view__details-col b-post-view__details-col--w1'})
        ] 

    feeds = [
        ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://www.sobaka.ru/rss/news.xml')
    ]
    
    def preprocess_html(self, soup):
        for img in soup.findAll('img', attrs={'data-src': True}):
            img['src'] = img['data-src']
        return soup


Мел: child education & parenting blog. 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 Mel(BasicNewsRecipe):
    title          		  = '\u041C\u0435\u043B'
    __author__            = 'bugmen00t'
    description           = '\u041C\u0435\u0434\u0438\u0430 \u043F\u0440\u043E \u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u0435 \u0438 \u0432\u043E\u0441\u043F\u0438\u0442\u0430\u043D\u0438\u0435 \u0434\u0435\u0442\u0435\u0439'
    publisher             = '\u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442-\u0438\u0437\u0434\u0430\u043D\u0438\u0435 \u00AB\u041C\u0435\u043B\u00BB'
    category              = 'blog'
    cover_url = u'https://static.mel.fm/images/project/site/dummyLogo.png'
    language              = 'ru'
    no_stylesheets        = False
    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='div', attrs={'class': 'b-pb-article__body'})

    remove_tags =   [
        dict(name='div', attrs={'class': 'b-ad-space__horizontal-centering'}),
        dict(name='div', attrs={'class': 'subscriptionBlock b-pb-publication-body__publication-newsletter-form'}),
        dict(name='div', attrs={'class': 'subscriptionBlock b-pb-article__publication-newsletter-form b-pb-article__publication-newsletter-form-post'}),
        dict(name='div', attrs={'class': 'newsletter-form b-pb-article__publication-newsletter-form'}),
        dict(name='div', attrs={'class': 'bottom-wrapper'}),
        dict(name='div', attrs={'class': 'b-pb-article__right-column b-pb-article__right-column_without-cover b-pb-article__right-column_on-post-page'}),
        dict(name='div', attrs={'class': 'b-pb-article__right-column b-pb-article__right-column_with-cover'}),
        dict(name='div', attrs={'class': 'main-tag'}),
        dict(name='div', attrs={'class': 'main-tag_mobile'}),
        dict(name='div', attrs={'class': 'publication-header__counter'}),
        dict(name='div', attrs={'class': 'smi2-news-container smi2-news-container_desktop smi2-news-container_desktop-news'}),
        dict(name='div', attrs={'class': 'smi2-news-container smi2-news-container_desktop'}),
        dict(name='div', attrs={'class': 'smi2-news-container smi2-news-container_mobile smi2-news-container_mobile-news'}),
        dict(name='div', attrs={'class': 'smi2-news-container smi2-news-container_mobile'})
        ] 

    feeds = [
        ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://mel.fm/rss/default-all'),
        ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://mel.fm/rss/default-news')
    ]
    
    def preprocess_html(self, soup):
        for img in soup.findAll('img', attrs={'data-src': True}):
            img['src'] = img['data-src']
        return soup


Бумага: news and articles about Saint Petersburg. Favicon replacement.
The main website is blocked in Russia, so all RSS feeds and aricles are being downloaded from one of the mirrors
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 PaperPaper(BasicNewsRecipe):
    title          		  = '\u0411\u0443\u043C\u0430\u0433\u0430'
    __author__            = 'bugmen00t'
    description           = '\u0418\u0437\u0434\u0430\u043D\u0438\u0435 \u043E \u043F\u0440\u0435\u043A\u0440\u0430\u0441\u043D\u043E\u043C \u0433\u043E\u0440\u043E\u0434\u0435 \u0421\u0430\u043D\u043A\u0442-\u041F\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435, \u0432 \u043A\u043E\u0442\u043E\u0440\u043E\u043C, \u043A\u043E\u043D\u0435\u0447\u043D\u043E, \u0434\u0430\u043B\u0435\u043A\u043E \u043D\u0435 \u0432\u0441\u0451 \u0438\u0434\u0435\u0430\u043B\u044C\u043D\u043E, \u2014 \u0438 \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043C\u044B \u0437\u0430\u043D\u0438\u043C\u0430\u0435\u043C\u0441\u044F \u0436\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u0438\u043A\u043E\u0439, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u0438\u0432\u043B\u0435\u043A\u0430\u0442\u044C \u0432\u043D\u0438\u043C\u0430\u043D\u0438\u0435 \u043A \u0432\u0430\u0436\u043D\u044B\u043C \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430\u043C \u0438 \u0432\u043B\u0438\u044F\u0442\u044C \u043D\u0430 \u0438\u0445 \u0440\u0435\u0448\u0435\u043D\u0438\u0435.'
    publisher             = '\u041A\u0438\u0440\u0438\u043B\u043B \u0410\u0440\u0442\u0451\u043C\u0435\u043D\u043A\u043E, \u0422\u0430\u0442\u044C\u044F\u043D\u0430 \u0418\u0432\u0430\u043D\u043E\u0432\u0430'
    category              = 'newspaper'
    cover_url = u'https://upload.wikimedia.org/wikipedia/commons/1/1f/Paperpaper_logo.jpg'
    language              = 'ru'
    no_stylesheets        = False
    remove_javascript = False
    auto_cleanup   = False
    oldest_article = 14
    max_articles_per_feed = 50

    remove_tags_before = dict(name='article')
    
    remove_tags_after = dict(name='article')

    remove_tags =   [
        dict(name='div', attrs={'class': 'bottom-block '}),
        dict(name='div', attrs={'class': 'bottom-block news'})
        ] 

    feeds = [
#        ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://paperpaper.ru/feed/?service'),
        ('\u0412\u0441\u0435 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B', 'https://wemissedyou.rknrkn.ru/feed/?service'),
#        ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://paperpaper.ru/category/what/news/feed/'),
        ('\u041D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://wemissedyou.rknrkn.ru/category/what/news/feed/'),
#        ('\u0418\u0441\u0442\u043E\u0440\u0438\u0438', 'https://paperpaper.ru/category/features/feed/'),
        ('\u0418\u0441\u0442\u043E\u0440\u0438\u0438', 'https://wemissedyou.rknrkn.ru/category/features/feed/'),
#        ('\u0413\u0438\u0434\u044B', 'https://paperpaper.ru/category/guides/feed/'),
        ('\u0413\u0438\u0434\u044B', 'https://wemissedyou.rknrkn.ru/category/guides/feed/'),
#        ('\u0421\u043F\u0438\u0441\u043E\u043A', 'https://paperpaper.ru/tag/%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA/feed/'),
        ('\u0421\u043F\u0438\u0441\u043E\u043A', 'https://wemissedyou.rknrkn.ru/tag/%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA/feed/'),
#        ('\u042D\u043A\u0441\u043F\u0430\u0442\u044B', 'https://paperpaper.ru/tag/expat/feed/'),
        ('\u042D\u043A\u0441\u043F\u0430\u0442\u044B', 'https://wemissedyou.rknrkn.ru/tag/expat/feed/'),
#        ('\u0418\u0441\u0442\u043E\u0440\u0438\u0438', 'https://paperpaper.ru/tag/stories/feed/'),
        ('\u0418\u0441\u0442\u043E\u0440\u0438\u0438', 'https://wemissedyou.rknrkn.ru/tag/stories/feed/'),
#        ('\u041E\u0442\u0432\u0435\u0442\u044B', 'https://paperpaper.ru/tag/otvety/feed/'),
        ('\u041E\u0442\u0432\u0435\u0442\u044B', 'https://wemissedyou.rknrkn.ru/tag/otvety/feed/'),
#        ('\u041F\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044F', 'https://paperpaper.ru/tag/traveltravel/feed/'),
        ('\u041F\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044F', 'https://wemissedyou.rknrkn.ru/tag/traveltravel/feed/'),
#        ('\u041D\u0430\u0443\u0447\u043F\u043E\u043F', 'https://paperpaper.ru/category/main-cats/nauchpop/feed/'),
        ('\u041D\u0430\u0443\u0447\u043F\u043E\u043F', 'https://wemissedyou.rknrkn.ru/category/main-cats/nauchpop/feed/'),
#        ('\u0412\u043E\u0435\u043D\u043D\u044B\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435', 'https://paperpaper.ru/tag/obostrenie-vokrug-ukrainy-2022/feed/'),
        ('\u0412\u043E\u0435\u043D\u043D\u044B\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0432 \u0423\u043A\u0440\u0430\u0438\u043D\u0435', 'https://wemissedyou.rknrkn.ru/tag/obostrenie-vokrug-ukrainy-2022/feed/'),
#        ('\u0423\u043A\u0440\u0430\u0438\u043D\u0430', 'https://paperpaper.ru/tag/ukraine/feed/'),
        ('\u0423\u043A\u0440\u0430\u0438\u043D\u0430', 'https://wemissedyou.rknrkn.ru/tag/ukraine/feed/'),
#        ('\u041D\u0430\u0443\u043A\u0430', 'https://paperpaper.ru/tag/science/feed/'),
        ('\u041D\u0430\u0443\u043A\u0430', 'https://wemissedyou.rknrkn.ru/tag/science/feed/')
    ]


OpenNet.ru: free & open source software news. Favicon replacement.
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 OpenNet(BasicNewsRecipe):
    title          		  = 'OpenNet.ru'
    __author__            = 'bugmen00t'
    description           = '\u0420\u0443\u0441\u0441\u043A\u043E\u044F\u0437\u044B\u0447\u043D\u044B\u0439 \u043F\u043E\u0440\u0442\u0430\u043B, \u043F\u043E\u0441\u0432\u044F\u0449\u0451\u043D\u043D\u044B\u0439 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u043C \u0438 \u0441\u0432\u043E\u0431\u043E\u0434\u043D\u044B\u043C \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u044F\u043C (FOSS): \u0435\u0436\u0435\u0434\u043D\u0435\u0432\u043D\u044B\u0435 \u043D\u043E\u0432\u043E\u0441\u0442\u0438 \u0432 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u0441\u0432\u043E\u0431\u043E\u0434\u043D\u043E\u0433\u043E \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u043E\u0433\u043E \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0435\u043D\u0438\u044F, Linux, BSD \u0438 UNIX-\u043F\u043E\u0434\u043E\u0431\u043D\u044B\u0445 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0445 \u0441\u0438\u0441\u0442\u0435\u043C.'
    publisher             = 'Maxim Chirkov'
    category              = 'blog'
    cover_url = u'https://www.opennet.ru/opennet.gif'
    language              = 'ru'
    no_stylesheets        = False
    remove_javascript = False
    auto_cleanup   = False
    oldest_article = 14
    max_articles_per_feed = 50

    remove_tags_before = dict(name='div', attrs={'id': 'as2'})
    
    remove_tags_after = dict(name='tr', attrs={'bgcolor': '#D9DAC6'})

    remove_tags =   [
        dict(name='tr', attrs={'bgcolor': '#D9DAC6'})
        ] 

    feeds = [
        ('\u0413\u043B\u0430\u0432\u043D\u044B\u0435 \u043D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://www.opennet.ru/opennews/opennews_6_noadv.rss'),
        ('\u041C\u0438\u043D\u0438-\u043D\u043E\u0432\u043E\u0441\u0442\u0438', 'https://www.opennet.ru/opennews/opennews_mini_noadv.rss'),
        ('\u0421\u043E\u0431\u044B\u0442\u0438\u044F', 'https://www.opennet.ru/opennews/opennews_review.rss'),
        ('\u041E\u0431\u0437\u043E\u0440\u044B \u0441\u0442\u0430\u0442\u0435\u0439', 'https://www.opennet.ru/opennews/opennews_arts.rss'),
        ('\u0411\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u044C', 'https://www.opennet.ru/opennews/opennews_sec.rss'),
        ('\u041D\u043E\u0432\u044B\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C', 'https://www.opennet.ru/opennews/opennews_prog.rss'),
        ('Linux', 'https://www.opennet.ru/opennews/opennews_linux.rss'),
        ('BSD', 'https://www.opennet.ru/opennews/opennews_bsd.rss'),
        ('Ubuntu', 'https://www.opennet.ru/opennews/opennews_ubuntu_full.rss'),
        ('Fedora', 'https://www.opennet.ru/opennews/opennews_fedora_full.rss'),
        ('Mozilla/Firefox', 'https://www.opennet.ru/opennews/opennews_mozilla_full.rss')
    ]


Проект: independent media outlet specialising in investigative journalism. 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 Project(BasicNewsRecipe):
    title          		  = '\u041F\u0440\u043E\u0435\u043A\u0442'
    __author__            = 'bugmen00t'
    description           = '\u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442-\u0438\u0437\u0434\u0430\u043D\u0438\u0435, \u0441\u043E\u0437\u0434\u0430\u043D\u043D\u043E\u0435 \u0431\u044B\u0432\u0448\u0438\u043C \u0433\u043B\u0430\u0432\u043D\u044B\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u043E\u043C \u0442\u0435\u043B\u0435\u043A\u0430\u043D\u0430\u043B\u0430 \u00AB\u0414\u043E\u0436\u0434\u044C\u00BB \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0421\u041C\u0418 \u0420\u043E\u043C\u0430\u043D\u043E\u043C \u0411\u0430\u0434\u0430\u043D\u0438\u043D\u044B\u043C, \u043A\u043E\u0442\u043E\u0440\u0435 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u0443\u044E\u0435\u0442\u0441\u044F \u043D\u0430 \u0440\u0430\u0441\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0439 \u0436\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u0438\u043A\u0435.'
    publisher             = '\u0420\u043E\u043C\u0430\u043D \u0411\u0430\u0434\u0430\u043D\u0438\u043D'
    category              = 'blog'
    cover_url = u'https://proektmedia-stat.ams3.digitaloceanspaces.com/2018/08/proektmedia_facebook_default.png'
    language              = 'ru'
    no_stylesheets        = False
    remove_javascript = False
    auto_cleanup   = False
    oldest_article = 200
    max_articles_per_feed = 20

    remove_tags_before = dict(name='main')
    
    remove_tags_after = dict(name='div', attrs={'class': 'single-post__article js-post-article'})

    remove_tags =   [
        dict(name='span', attrs={'class': 'more'}),
        dict(name='span', attrs={'class': 'close'}),
        dict(name='div', attrs={'class': 'socials js-socials-icons'})
        ] 

    feeds = [
        ('\u041F\u0440\u043E\u0435\u043A\u0442.', 'https://www.proekt.media/feed/')
    ]
    
    def get_browser(self):
        br = BasicNewsRecipe.get_browser(self, user_agent='common_words/based')
        return br


Coda (Russian version): crisis news platform. Favicon replacement.
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 Coda(BasicNewsRecipe):
    title                 = 'Coda \u043D\u0430 \u0440\u0443\u0441\u0441\u043A\u043E\u043C'
    __author__            = 'bugmen00t'
    description           = 'Coda - \u043C\u0435\u0434\u0438\u0430, \u043A\u043E\u0442\u043E\u0440\u043E\u0435 \u0432\u044B\u044F\u0432\u043B\u044F\u0435\u0442 \u0441\u0432\u044F\u0437\u0438 \u043C\u0435\u0436\u0434\u0443 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\u043C\u0438 \u0438 \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0430\u0435\u0442 \u0441\u043B\u0435\u0434\u0438\u0442\u044C \u0437\u0430 \u0438\u0441\u0442\u043E\u0440\u0438\u044F\u043C\u0438 \u0434\u0430\u0436\u0435 \u043F\u043E\u0441\u043B\u0435 \u0442\u043E\u0433\u043E, \u043A\u0430\u043A \u043E\u043D\u0438 \u043E\u043D\u0438 \u043F\u0440\u043E\u043F\u0430\u043B\u0438 \u0438\u0437 \u043F\u043E\u0432\u0435\u0441\u0442\u043A\u0438. Coda \u043F\u043E\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044F \u043D\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0441\u0430\u043C\u0438 \u043A\u0440\u0438\u0437\u0438\u0441\u044B, \u043D\u043E \u0438 \u0432 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0438\u0445 \u043E\u043A\u0440\u0443\u0436\u0430\u0435\u0442'
    publisher             = 'Natalia Antelava & Ilan Greenberg'
    category              = 'blog'
    cover_url = u'https://www.codastory.com/wp-content/uploads/2021/05/AT_thumbnail_512x512.png'
    language              = 'ru'
    no_stylesheets        = False
    remove_javascript = False
    auto_cleanup   = False
    oldest_article = 180
    max_articles_per_feed = 50

    remove_tags_before = dict(name='article')
    
    remove_tags_after = dict(name='div', attrs={'class': 'article'})

    remove_tags =   [
        dict(name='li', attrs={'class': 'material-meta__type'}),
        dict(name='div', attrs={'class': 'more'})
        ] 

    feeds = [
        ('CODA', 'https://www.codastory.com/ru/feed/')
    ]


NEW ENGLISH RECIPES (OF RUSSIAN SOURCES)

The Project (English version): independent Russian media specialising in investigative journalism. 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 Project(BasicNewsRecipe):
    title          		  = 'The Project'
    __author__            = 'bugmen00t'
    description           = 'The Project is an independent Russian media specialising in in-depth journalism.'
    publisher             = 'Roman Badanin'
    category              = 'blog'
    cover_url = u'https://proektmedia-stat.ams3.digitaloceanspaces.com/2018/08/proektmedia_facebook_default.png'
    language              = 'en_RU'
    no_stylesheets        = False
    remove_javascript = False
    auto_cleanup   = False
    oldest_article = 600
    max_articles_per_feed = 20

    remove_tags_before = dict(name='main')
    
    remove_tags_after = dict(name='div', attrs={'class': 'single-post__article js-post-article'})

    remove_tags =   [
        dict(name='span', attrs={'class': 'more'}),
        dict(name='span', attrs={'class': 'close'}),
        dict(name='div', attrs={'class': 'socials js-socials-icons'})
        ] 

    feeds = [
        ('The Project.', 'https://www.proekt.media/en/feed/')
    ]
    
    def get_browser(self):
        br = BasicNewsRecipe.get_browser(self, user_agent='common_words/based')
        return br


Coda (English version): crisis news platform. Favicon replacement.
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 Coda(BasicNewsRecipe):
    title          		  = 'Coda'
    __author__            = 'bugmen00t'
    description           = 'Coda Story reports on major currents shaping our world from disinformation to authoritarian technologies to the war on science. Coda stays on these stories to reveal why they matter, how they are connected and where they are heading next.'
    publisher             = 'Natalia Antelava & Ilan Greenberg'
    category              = 'blog'
    cover_url = u'https://www.codastory.com/wp-content/uploads/2021/05/AT_thumbnail_512x512.png'
    language              = 'en_RU'
    no_stylesheets        = False
    remove_javascript = False
    auto_cleanup   = False
    oldest_article = 180
    max_articles_per_feed = 50

    remove_tags_before = dict(name='div', attrs={'class': 'article'})
    
    remove_tags_after = dict(name='div', attrs={'class': 'article'})

    remove_tags =   [
        dict(name='li', attrs={'class': 'material-meta__type'}),
        dict(name='div', attrs={'class': 'more'})
        ] 

    feeds = [
        ('CODA', 'https://www.codastory.com/feed/')
    ]
Attached Images
        
Attached Files
File Type: recipe sobaka.recipe (2.0 KB, 532 views)
File Type: recipe mel.recipe (2.9 KB, 557 views)
File Type: recipe paperpaper.recipe (5.2 KB, 548 views)
File Type: recipe opennet.recipe (3.0 KB, 544 views)
File Type: recipe project.recipe (2.2 KB, 544 views)
File Type: recipe coda_ru.recipe (2.1 KB, 553 views)
File Type: recipe project_en.recipe (1.4 KB, 555 views)
File Type: recipe coda.recipe (1.3 KB, 555 views)

Last edited by bugmen00t; 07-28-2022 at 01:35 PM. Reason: Бумага recipe fix
bugmen00t is offline   Reply With Quote