URL: https://linuxfr.org/users/jobpilot/journaux/traduire-un-flux-rss-a-la-volee Title: Traduire un flux rss à la volée Authors: Ecran Plat Date: 2024年09月18日T12:12:36+02:00 License: CC By-SA Tags: intelligence_artificielle, rss, freshrss et python3 Score: 14 Bonjour à tous, Dans le cadre de ma veille technologique, je suis abonné à plusieurs flux RSS anglophones. Bien que la lecture en anglais ne me pose pas de problème majeur, elle nécessite néanmoins une concentration accrue, ce qui demande plus d'énergie et de temps. Un flux RSS étant une liste d'articles parmi lesquels on sélectionne ceux qui nous intéressent, la navigation est rapide en français dans mon agrégateur (FreshRSS). En revanche, le processus est plus lent pour les contenus en anglais. J'ai donc eu l'idée de créer une version traduite en français de ces flux. La solution s'est avérée étonnamment simple à mettre en place. Les prérequis sont : 1. Un système Linux (dans un Docker, un VPS ou autre) 2. Python 3.x 3. Un endpoint d'inférence (Ollama, Groq, Together AI, OpenAI, etc.) 4. Un serveur web basique (Apache suffit) 5. Le script que je vais vous présenter Dans mon cas, Linux tourne sur la même machine physique que mon instance FreshRSS (un Proxmox hébergé chez moi qui gère plusieurs services). Pour l'inférence, j'utilise habituellement une instance d'Ollama sur une machine Linux puissante équipée de deux cartes NVIDIA Quadro Pro 5000. Cependant, cette configuration étant énergivore, je ne l'active qu'en cas de besoin. Pour ce script, j'ai donc opté pour l'API compatible OpenAI de Groq, qui est gratuite et fonctionne bien avec le modèle LLaMA 3.1 70B (la version 8B devrait également convenir, moyennant un ajustement du prompt). Voici le script en question : ```python import requests import json import sys # Configuration de l'API compatible OpenAI API_KEY = 'VOTRE CLE' # Remplacez par votre clé API OpenAI MODEL = 'llama-3.1-70b-versatile' # Modèle de traduction à utiliser #URL = 'https://api.openai.com/v1/chat/completions' URL = 'https://api.groq.com/openai/v1/chat/completions' #fonction de traduction def traduire_texte(texte): headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {API_KEY}', } data = { 'model': MODEL, 'messages': [{ 'role': 'user', 'content': f'Voici un flux rss à traduire en français. Ne traduis pas les balises. Retourne le résultat sous format RSS brut sans formatage Markdown, retourne le texte encodé en utf-8: {texte}' }] } #print(texte) response = requests.post(URL, headers=headers, json=data) #print(response.text) return response.json()['choices'][0]['message']['content'] #fonction qui écrit le fichier rss def ecrire_fichier_rss(articles, nom_fichier): with open(nom_fichier, 'w', encoding='utf-8') as f: f.write(articles) if __name__ == "__main__": if len(sys.argv) != 3: print("Usage: python script.py ") sys.exit(1) url_flux = sys.argv[1] nom_fichier_sortie = sys.argv[2] # Faire une requête GET à l'URL spécifiée response = requests.get(url_flux) # Vérifier si la requête a réussi if response.status_code == 200: # Charger le contenu de la page dans une variable page_content = response.text print("Contenu de la page chargé avec succès.") else: print(f"Erreur lors du chargement de la page : {response.status_code}") articles_traduit = traduire_texte(page_content) ecrire_fichier_rss(articles_traduit, nom_fichier_sortie) ``` voici ma ligne de crontab pour l'appeler: 10 * * * * /usr/bin/python3 /opt/scripts/traductionrss.py https://techcrunch.com/feed /home/docker-data/apache/techcrunch.rss 2>&1 Une fois le script en place, il suffit de s'abonner à l'URL http://192.168.2.202:8880/techcrunch.rss dans FreshRSS, par exemple. Ce script, bien que rudimentaire, me rend déjà un grand service. Je surveillerai son efficacité et sa fiabilité à l'usage, et l'améliorerai si nécessaire. N'hésitez pas à partager vos retours ou suggestions d'amélioration !

AltStyle によって変換されたページ (->オリジナル) /