mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
Horizons by unkn0wn
This commit is contained in:
parent
1893c41f1a
commit
3936de93f5
68
recipes/horizons.recipe
Normal file
68
recipes/horizons.recipe
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
'''
|
||||||
|
https://www.cirsd.org/en/horizons
|
||||||
|
'''
|
||||||
|
|
||||||
|
from calibre.web.feeds.news import BasicNewsRecipe, classes
|
||||||
|
|
||||||
|
class horizons(BasicNewsRecipe):
|
||||||
|
title = 'Horizons'
|
||||||
|
__author__ = 'unkn0wn'
|
||||||
|
description = (' Horizons – Journal of International Relations and Sustainable Development.'
|
||||||
|
' Horizons serves as a high-level platform for influential voices from around the world to'
|
||||||
|
' provide informed analysis and conduct reasoned exchanges on the full spectrum of issues'
|
||||||
|
' that shape international developments.')
|
||||||
|
no_stylesheets = True
|
||||||
|
use_embedded_content = False
|
||||||
|
encoding = 'utf-8'
|
||||||
|
language = 'en'
|
||||||
|
remove_attributes = ['style', 'height', 'width']
|
||||||
|
masthead_url = 'https://www.cirsd.org/bundles/olpublic/images/horizons-logo.jpg'
|
||||||
|
ignore_duplicate_articles = {'url'}
|
||||||
|
extra_css = 'em{color:#404040;}'
|
||||||
|
|
||||||
|
keep_only_tags = [
|
||||||
|
dict(name='div', attrs={'class':'article'})
|
||||||
|
]
|
||||||
|
remove_tags = [
|
||||||
|
classes('back-link'),
|
||||||
|
dict(name='div', attrs={'class':'single-post-footer'})
|
||||||
|
]
|
||||||
|
|
||||||
|
def parse_index(self):
|
||||||
|
soup = self.index_to_soup('https://www.cirsd.org/en/horizons')
|
||||||
|
a = soup.findAll('a', href=True, attrs={'class':'horizon-gallery-box'})[0] #use 1 for previous edition
|
||||||
|
url = a['href']
|
||||||
|
if url.startswith('/'):
|
||||||
|
url = 'https://www.cirsd.org' + url
|
||||||
|
self.cover_url = a.find('img')['src']
|
||||||
|
self.log(self.cover_url)
|
||||||
|
issue = a.find('div', attrs={'class':'horizon-gallery-title'})
|
||||||
|
if issue:
|
||||||
|
self.timefmt = ' [' + self.tag_to_string(issue).strip() + ']'
|
||||||
|
self.log('Downloading Issue: ', self.timefmt)
|
||||||
|
soup = self.index_to_soup(url)
|
||||||
|
|
||||||
|
feeds = []
|
||||||
|
for section in soup.findAll('h2', attrs={'class':'mt-3'}):
|
||||||
|
secname = self.tag_to_string(section).strip()
|
||||||
|
self.log(secname)
|
||||||
|
articles = []
|
||||||
|
div = section.findNext('div', attrs={'class':'mb-3'})
|
||||||
|
for li in div.findAll('li', attrs={'class':'mb-2'}):
|
||||||
|
a = li.find('a', href=True)
|
||||||
|
url = a['href']
|
||||||
|
if url.startswith('/'):
|
||||||
|
url = 'https://www.cirsd.org' + url
|
||||||
|
title = self.tag_to_string(a)
|
||||||
|
span = li.find('span', attrs={'class':'section-author'})
|
||||||
|
desc = ''
|
||||||
|
if span:
|
||||||
|
desc = self.tag_to_string(span).strip()
|
||||||
|
self.log('\t', title, '\n\t', desc, '\n\t\t', url)
|
||||||
|
articles.append({
|
||||||
|
'title': title,
|
||||||
|
'url': url,
|
||||||
|
'description': desc})
|
||||||
|
if articles:
|
||||||
|
feeds.append((secname, articles))
|
||||||
|
return feeds
|
Loading…
x
Reference in New Issue
Block a user