EPW Magazine by unkn0wn

This commit is contained in:
Kovid Goyal 2022-06-17 13:00:45 +05:30
parent 88e730a07d
commit 19e50d4fed
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -0,0 +1,75 @@
from calibre.web.feeds.news import BasicNewsRecipe, classes
from collections import OrderedDict
def absurl(x):
if x.startswith('/'):
x = 'http://www.epw.in' + x
return x
class epw(BasicNewsRecipe):
title = 'EPW Magazine'
__author__ = 'unkn0wn'
description = 'Economic and Political news from India'
no_stylesheets = True
use_embedded_content = False
encoding = 'utf-8'
language = 'en_IN'
remove_attributes = ['style', 'height', 'width']
masthead_url = 'http://www.epw.in/system/files/epw_masthead.png'
ignore_duplicate_articles = {'title', 'url'}
keep_only_tags = [
dict(name='h1', attrs={'id': 'page-title'}),
classes(
'field-name-field-secondary-title field-type-text region-content updated_field'
)
]
remove_tags = [
classes('premium-message node-readmore tag_container mobile_article_info')
]
def parse_index(self):
soup = self.index_to_soup('https://www.epw.in/journal/epw-archive')
div = soup.find('div', **classes('fieldset-wrapper'))
a = div.find('a', href=lambda x: x and x.startswith('/journal/'))
url = absurl(a['href'])
self.log(self.tag_to_string(a))
soup = self.index_to_soup(url)
view = soup.findAll('div', **classes('views-field-field-cover-image'))[0]
try:
self.cover_url = view.find('img', src=True)['src'].split('?')[0].replace(
'/styles/freeissue/public', ''
)
except Exception:
# sometimes they dont add img src
self.cover_url = 'https://www.epw.in/sites/default/files/cache/cover_images/2022/Cover_4June2022_Big.gif'
feeds = OrderedDict()
div = soup.find('div', attrs={'id': 'block-system-main'})
for a in div.findAll('a', href=lambda x: x and x.startswith('/journal/')):
articles = []
url = absurl(a['href'])
title = self.tag_to_string(a)
view = a.findParent('h4'
).findParent('div', **classes('views-field-title'))
new = view.find_next_sibling('div')
if new:
desc = self.tag_to_string(new)
h3 = view.findParent('div',
**classes('views-row')).find_previous_sibling('h3')
section_title = self.tag_to_string(h3)
self.log('\t', title)
self.log('\t', desc)
self.log('\t\t', url)
articles.append({'title': title, 'url': url, 'description': desc})
if articles:
if section_title not in feeds:
feeds[section_title] = []
feeds[section_title] += articles
ans = [(key, val) for key, val in feeds.items()]
return ans