|
|||||||
![]() |
|
|
Thread Tools | Search this Thread |
|
|
#1 |
|
Member
![]() Posts: 13
Karma: 10
Join Date: Dec 2024
Device: kindle scribe
|
Orient XXI - Magazine en ligne sur le Monde arabe et musulman (French) - UPDATE
#!/usr/bin/env python
''' orientxxi.info ''' from calibre.web.feeds.news import BasicNewsRecipe from datetime import datetime, timedelta from zoneinfo import ZoneInfo import urllib.request import tempfile import os class OrientXXIRecipe(BasicNewsRecipe): title = 'Orient XXI' __author__ = 'Votre Nom' description = 'Magazine en ligne sur le Monde arabe et musulman' 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 = [ ('Orient XXI', 'https://orientxxi.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 pour Orient XXI """ from qt.core import QFont, QImage, QPainter, QPen, QRect, Qt, QColor from calibre.gui2 import ensure_app, load_builtin_fonts, pixmap_to_data try: # Préparation de l'environnement Qt ensure_app() load_builtin_fonts() # Date en français today = datetime.now(ZoneInfo('Europe/Paris')) wkd = today.weekday() french_weekday = {0:'Lundi',1:'Mardi',2:'Mercredi',3:'Jeudi',4:'Ven dredi',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%M') # Création de l'image de base (ratio ~1.6 pour format livre) img = QImage(1200, 1920, QImage.Format_RGB888) img.fill(QColor(255, 140, 0)) # Fond orange tangerine (darkorange) # Télécharger le logo logo_url = "https://upload.wikimedia.org/wikipedia/fr/1/15/Orient_XXI.png" # Utiliser urllib pour télécharger l'image try: temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.png') temp_file.close() urllib.request.urlretrieve(logo_url, temp_file.name) # Charger le logo téléchargé logo_img = QImage(temp_file.name) if not logo_img.isNull(): # Calculer la largeur proportionnelle pour une hauteur de 300px logo_height = 300 logo_width = int(logo_img.width() * (logo_height / logo_img.height())) # Texte du titre p = QPainter(img) # Centrer le logo logo_x = (1200 - logo_width) // 2 logo_y = 300 # Positionnement au-dessus du titre # Dessiner le logo p.drawImage(QRect(logo_x, logo_y, logo_width, logo_height), logo_img) # Couleur texte (noir) pen = QPen(QColor('black')) p.setPen(pen) # Titre principal font = QFont() font.setFamily('Liberation Sans') font.setPointSize(60) font.setBold(True) p.setFont(font) # Ajuster la position du titre pour être sous le logo title_rect = QRect(0, 700, 1200, 100) p.drawText(title_rect, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter, 'ORIENT') # Sous-titre font.setPointSize(40) p.setFont(font) subtitle_rect = QRect(0, 800, 1200, 100) p.drawText(subtitle_rect, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter, 'XXI') # Date et édition font.setPointSize(36) font.setBold(False) p.setFont(font) date_rect = QRect(0, 950, 1200, 100) p.drawText(date_rect, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter, date_str) font.setPointSize(32) font.setItalic(True) p.setFont(font) edition_rect = QRect(0, 1050, 1200, 100) p.drawText(edition_rect, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter, edition) p.end() # Supprimer le fichier temporaire try: os.unlink(temp_file.name) except: pass except Exception as e: self.log.error(f"Erreur lors du téléchargement ou du traitement du logo: {e}") # Si échec du téléchargement du logo, créer quand même la couverture sans logo p = QPainter(img) pen = QPen(QColor('black')) p.setPen(pen) # Titre principal font = QFont() font.setFamily('Liberation Sans') font.setPointSize(60) font.setBold(True) p.setFont(font) # Positions standard sans logo title_rect = QRect(0, 700, 1200, 100) p.drawText(title_rect, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter, 'ORIENT') # Sous-titre font.setPointSize(40) p.setFont(font) subtitle_rect = QRect(0, 800, 1200, 100) p.drawText(subtitle_rect, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter, 'XXI') # Date et édition font.setPointSize(36) font.setBold(False) p.setFont(font) date_rect = QRect(0, 950, 1200, 100) p.drawText(date_rect, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter, date_str) font.setPointSize(32) font.setItalic(True) p.setFont(font) edition_rect = QRect(0, 1050, 1200, 100) p.drawText(edition_rect, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter, edition) p.end() # Sauvegarde de l'image 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 |
|
|
|
![]() |
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Orient XXI - Magazine en ligne sur le Monde arabe et musulman (French) - Recipe | alphonk | Recipes | 0 | 01-18-2025 12:05 PM |
| Afrique XXI - Journal panafricain en ligne (French) - Recipe | alphonk | Recipes | 0 | 01-18-2025 12:03 PM |
| Le Monde Diplomatique Cono Sur | pidief | Recipes | 4 | 11-10-2020 03:58 PM |
| Recipe for Le Monde Diplomatique, edición Cono Sur (Argentina) | tdido | Recipes | 7 | 01-05-2013 01:59 PM |
| E-Books Le monde du 6 Novembre sur les livres numériques | aceflor | Forum Français | 5 | 11-15-2010 07:46 AM |