calibre/recipes/singtaohk.recipe
unkn0w7n 69ba1b60c2 change google feeds based recipes..
..to parse their front pages instead.
2024-09-25 22:43:18 +05:30

58 lines
2.0 KiB
Python

#!/usr/bin/env python
from calibre.web.feeds.news import BasicNewsRecipe, classes
class STHKRecipe(BasicNewsRecipe):
title = '星島日報 (香港)'
__author__ = 'unkn0wn'
description = 'The Sing Tao Daily is among Hong Kong\'s oldest Chinese language newspapers. (https://std.stheadline.com/)'
category = 'Chinese, News, Hong Kong'
language = 'zh'
encoding = 'utf-8'
masthead_url = 'https://std.stheadline.com/dist/images/logo-v2@2x.png'
no_stylesheets = True
remove_javascript = True
ignore_duplicate_articles = {'title', 'url'}
remove_empty_feeds = True
use_embedded_content = False
remove_attributes = ['style', 'height', 'width']
extra_css = '''
img {display:block; margin:0 auto;}
.date { font-size:small; }
.caption-text, .media-library-item__attributes { font-size:small; text-align:center; }
'''
keep_only_tags = [
dict(name='article', attrs={'class':'content'})
]
remove_tags = [
dict(name=['video', 'svg', 'button']),
dict(attrs={'id':'articleShareIcons'}),
classes('in-article-banner stick-box-gray article-pagination comments')
]
def parse_index(self):
index = 'https://std.stheadline.com/'
sections = [
'daily', 'realtime', 'supplement'
]
feeds = []
soup = self.index_to_soup(index)
for sec in sections:
section = sec.capitalize()
self.log(section)
articles = []
for a in soup.findAll('a', attrs={'href':lambda x: x and x.startswith(index + sec + '/')}):
url = a['href']
if url in {index + sec + '/', index + sec}:
continue
if '/article/' not in url:
continue
title = self.tag_to_string(a)
self.log('\t', title, '\n\t\t', url)
articles.append({'title': title, 'url': url})
if articles:
feeds.append((section, articles))
return feeds