Aller au contenu principal

Fournisseurs de l'agrégateur d'actualités

NewsService (news/news_service.py) interroge en parallèle les sept fournisseurs de news/providers/ pour GET /news/{ticker}.

ModuleSourceMéthodeLangue
yfinance_news.pyYahoo Financeyfinance (ticker.news), ticker tel que saisien
google_finance_news.pyGoogle FinanceJSON intégré, HTML en solution de repliDéduite du suffixe du ticker
zonebourse_news.pyZoneBourseHTMLfr
boursorama_news.pyBoursoramaHTMLfr
investing_news.pyInvesting.comHTML, nécessite une correspondanceen
marketwatch_news.pyMarketWatchHTMLen
msn_finance_news.pyMSN FinanceEndpoint JSON, HTML en solution de replien

Correspondances​

Trois fournisseurs lisent une correspondance de l'instrument, par nom de fournisseur en minuscules : ZoneBourse (zonebourse) et Boursorama (boursorama) partagent la correspondance du fournisseur de données fondamentales du même nom ; Investing.com a besoin d'une correspondance nommée investing_com et ne renvoie rien sans elle. Les quatre autres construisent leur requête à partir du ticker.

Déduplication​

  1. URL : mise en minuscules, suppression des paramètres utm_*, du fragment et de la barre oblique finale ; le premier article reçu est conservé.
  2. Titre : difflib.SequenceMatcher sur les titres normalisés (minuscules, sans ponctuation) ; à partir de NEWS_DEDUP_SIMILARITY (0,85), l'article le plus récent est conservé.

Avec language, les articles dont la langue est connue et différente sont supprimés avant la déduplication. Les articles sont triés du plus récent au plus ancien et tronqués à limit ; chaque fournisseur est sollicité pour deux fois ce nombre.

Stockage​

Les articles des instruments présents dans le catalogue sont insérés ou mis à jour dans news_articles (ON CONFLICT (url) DO UPDATE) ; GET /news/feed et GET /news/stats lisent cette table. Les anciens articles ne sont pas purgés automatiquement.

Un fournisseur en échec renvoie une liste vide sans bloquer les autres.