From 337a0c352c4828ad6ebab2d38b37824471519bd0 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 19 Jan 2025 09:00:40 +0530 Subject: [PATCH] Afrique XXI by Kabonix --- recipes/afrique_21.recipe | 112 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 recipes/afrique_21.recipe diff --git a/recipes/afrique_21.recipe b/recipes/afrique_21.recipe new file mode 100644 index 0000000000..6f2c952d24 --- /dev/null +++ b/recipes/afrique_21.recipe @@ -0,0 +1,112 @@ +#!/usr/bin/env python + +''' +afriquexxi.info +''' + +from datetime import datetime + +from zoneinfo import ZoneInfo + +from calibre import browser +from calibre.web.feeds.news import BasicNewsRecipe + + +class AfriqueXXIRecipe(BasicNewsRecipe): + title = 'Afrique XXI' + __author__ = 'Kabonix' + description = 'Journal panafricain en ligne' + language = 'fr' + oldest_article = 30 + max_articles_per_feed = 50 + auto_cleanup = False + encoding = 'utf-8' + use_embedded_content = True + no_stylesheets = True + remove_javascript = True + scale_news_images_to_device = True + + feeds = [ + ('Afrique XXI', 'https://afriquexxi.info/?page=backend&lang=fr') + ] + + extra_css = ''' + img { max-width: 100%; height: auto; display: block; margin: 1em auto; } + h1 { font-size: 2em; margin: 1em 0; } + h2 { font-size: 1.5em; margin: 1em 0; } + ''' + + def default_cover(self, cover_file): + """ + Crée une couverture personnalisée avec le logo + """ + from qt.core import QColor, QFont, QImage, QPainter, QPen, QRect, Qt + + from calibre.gui2 import ensure_app, load_builtin_fonts, pixmap_to_data + try: + ensure_app() + load_builtin_fonts() + + today = datetime.now(ZoneInfo('Europe/Paris')) + wkd = today.weekday() + french_weekday = {0:'Lundi',1:'Mardi',2:'Mercredi',3:'Jeudi',4:'Vendredi',5:'Samedi',6:'Dimanche'} + french_month = {1:'janvier', 2:'février', 3:'mars', 4:'avril', 5:'mai', 6:'juin', + 7:'juillet', 8:'août', 9:'septembre', 10:'octobre', 11:'novembre', 12:'décembre'} + + weekday = french_weekday[wkd] + month = french_month[today.month] + date_str = f"{weekday} {today.day} {month} {today.year}" + edition = today.strftime('Édition de %Hh') + + # Image de base + img = QImage(1400, 1920, QImage.Format_RGB888) + img.fill(QColor('lightgreen')) + + # Charger le logo + logo_url = 'https://upload.wikimedia.org/wikipedia/fr/7/74/Afrique_xxi.png' + logo_data = browser().open(logo_url).read() + logo = QImage() + logo.loadFromData(logo_data) + + # Redimensionner le logo (garder les proportions) + logo_width = 800 # Largeur souhaitée + scaled_logo = logo.scaledToWidth(logo_width, Qt.SmoothTransformation) + + # Position du logo (centré) + x = (img.width() - scaled_logo.width()) // 2 + y = (img.height() - scaled_logo.height()) // 2 - 100 # Un peu au-dessus du centre + + # Dessiner le logo + p = QPainter(img) + p.drawImage(x, y, scaled_logo) + p.end() + + # Ajouter la date + p = QPainter(img) + p.setPen(QPen(QColor('black'))) + + font = QFont('Liberation Sans', 36) + p.setFont(font) + + r = QRect(0, y + scaled_logo.height() + 50, img.width(), 100) + p.drawText(r, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter, date_str) + + # Ajouter l'édition + font.setItalic(True) + font.setPointSize(32) + p.setFont(font) + + r = QRect(0, y + scaled_logo.height() + 150, img.width(), 100) + p.drawText(r, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter, edition) + + p.end() + + # Sauvegarder + img_data = pixmap_to_data(img) + cover_file.write(img_data) + cover_file.flush() + return True + + except Exception as e: + self.log.error(f'Erreur lors de la création de la couverture: {e}') + return False