/
livemint.recipe
101 lines (90 loc) · 4.12 KB
/
livemint.recipe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/usr/bin/env python
from calibre.web.feeds.news import BasicNewsRecipe, classes
from datetime import date
is_saturday = date.today().weekday() == 5
class LiveMint(BasicNewsRecipe):
title = u'Live Mint'
description = 'Financial News from India.'
language = 'en_IN'
__author__ = 'Krittika Goyal'
oldest_article = 1.15 # days
max_articles_per_feed = 50
encoding = 'utf-8'
use_embedded_content = False
no_stylesheets = True
remove_attributes = ['style', 'height', 'width']
masthead_url = 'https://images.livemint.com/static/livemint-logo-v1.svg'
remove_empty_feeds = True
if is_saturday:
cover_url = 'https://epsfs.hindustantimes.com/MINT/2022/04/16/Delhi/Delhi/5_01/bf867ea1_01_mr.jpg'
keep_only_tags = [
dict(name='h1'),
dict(name='h2', attrs={'id':'story-summary-0'}),
dict(name='picture'),
dict(name='div', attrs={'class':'innerBanCaption'}),
dict(name='div', attrs={'id':'date-display-before-content'}),
dict(name='div', attrs={'class':'storyContent'}),
]
remove_tags = [
classes(
'sidebarAdv similarStoriesClass moreFromSecClass'
)
]
feeds = [
('News', 'https://lifestyle.livemint.com/rss/news'),
('Food','https://lifestyle.livemint.com/rss/food'),
('Fashion','https://lifestyle.livemint.com/rss/fashion'),
('How to Lounge','https://lifestyle.livemint.com/rss/how-to-lounge'),
('Smart Living','https://lifestyle.livemint.com/rss/smart-living'),
]
else:
extra_css = '''
#img-cap {font-size:small; text-align:center;}
#auth-info {font-size:small; text-align:center;}
.highlights {font-style:italic;}
'''
cover_url = 'https://epsfs.hindustantimes.com/MINT/2022/04/05/Delhi/Delhi/5_01/1ec7ad14_01_mr.jpg'
keep_only_tags = [
dict(name='h1'),
dict(name='figure', attrs={'data-vars-mediatype':'image'}),
classes('articleInfo FirstEle summary highlights paywall'),
]
remove_tags = [
classes(
'trendingSimilarHeight moreNews mobAppDownload label msgError msgOk taboolaHeight'
' socialHolder imgbig disclamerText disqus-comment-count'
)
]
feeds = [
('Companies', 'https://www.livemint.com/rss/companies'),
('Opinion', 'https://www.livemint.com/rss/opinion'),
('Money', 'https://www.livemint.com/rss/money'),
('Economy', 'https://www.livemint.com/rss/economy'),
('Politics', 'https://www.livemint.com/rss/politics'),
('Science', 'https://www.livemint.com/rss/science'),
('Industry', 'https://www.livemint.com/rss/industry'),
('Education', 'https://www.livemint.com/rss/education'),
('Sports', 'https://www.livemint.com/rss/sports'),
('Technology', 'https://www.livemint.com/rss/technology'),
('News', 'https://www.livemint.com/rss/news'),
('Mutual Funds', 'https://www.livemint.com/rss/Mutual Funds'),
('Markets', 'https://www.livemint.com/rss/markets'),
('AI', 'https://www.livemint.com/rss/AI'),
('Insurance', 'https://www.livemint.com/rss/insurance'),
('Budget', 'https://www.livemint.com/rss/budget'),
('Elections', 'https://www.livemint.com/rss/elections'),
]
def preprocess_html(self, soup):
for span in soup.findAll('figcaption'):
span['id'] = 'img-cap'
for auth in soup.findAll('span', attrs={'class':['articleInfo pubtime','articleInfo author']}):
auth['id'] = 'auth-info'
auth.name = 'div'
for span in soup.findAll('span', attrs={'class':'exclusive'}):
span.extract()
for img in soup.findAll('img', attrs={'data-src': True}):
img['src'] = img['data-src']
if is_saturday:
for img in soup.findAll('img', attrs={'data-img': True}):
img['src'] = img['data-img']
return soup