La problématique

Aujourd'hui, nous allons récupérer des nouvelles fraiches. J'ai trouvé un service web qui permets de lire des nouvelles du monde entiers, dans toutes les langues. Ce service n'est pas gratuit, sauf pour les développeurs. La modique somme de 449 $ (oui vous avez bien lu) vous permet, à ce prix, d'avoir de belles sources d'informations et d'intégrer à votre site des infos sur différents mots clefs. L'exemple que nous allons voir est un petit formulaire où vous saisissez vos termes recherchés et l'API répond en JSON à votre requête.

Le service interrogé

Le service interrogé s'appelle newsapi. Il porte bien son nom je trouve. Il possède 3 endpoints (nous n'en verrons qu'un)

  • Top headline : renvoie les titres les plus récents pour un pays et une catégorie, ou actuellement diffusés sur une ou plusieurs sources. Ceci est parfait pour une utilisation avec les tickers de nouvelles ou n'importe où vous voulez afficher en direct les titres et les images de nouvelles mises à jour.
  • Everything : ce service indexe chaque nouvelle récente et chaque article de blog publié par plus de 30 000 sources différentes, grandes et petites, et vous pouvez effectuer une recherche parmi elles grâce à ce endpoint. Ce endpoint est mieux adapté à l'analyse des actualités et à la découverte d'articles, mais peut également être utilisé pour récupérer des articles à afficher.
  • Sources / v2 / sources - renvoie des informations (y compris le nom, la description et la catégorie) sur les sources les plus remarquables que nous indexons. Cette liste peut être directement transmise à vos utilisateurs en leur montrant certaines des options disponibles.

J'ai choisi de regarder le point final  Everithing afin de lister le maximum d'articles de presse possible. Mais la documentation, plutôt boien faite, bien qu'en anglais, explique comment "filtrer" les requêtes afin de limiter les résultats. Plusieurs solutions sont possibles :

  • par mots cleffs bien sûr
  • par pays
  • par sources
  • par domaines
  • par dates
  • par langues

D'autres options sont proposés comme le nombre de résultats pas pages. Je ne peux que vous conseiller de lire cette doc pour prendre en compte ces criitères de filtres.

L'appel de l'API

Je ne peux détailler l'intégralité de l'API car la mixité des paramètres est monstrueuse. Les données sont retournées en JSON. Voyons quelques appels (vous devrez compléter ces lignes avec votre propre clef API évidemment): 

  • https://newsapi.org/v2/everything?q=houdemont&apiKey=[VOTRE CLEF API] : recherche des informations sur le terme houdemont (qui est une commune)
  • https://newsapi.org/v2/everything?q=houdemont&from=2018-31-12&apiKey=[VOTRE CLEF API] : recherche des articles sur houdemont parus depuis le 31 décembre 2018
  • https://newsapi.org/v2/everything?q=houdemont&from=2018-31-12&to=2019-01-06&apiKey=[VOTRE CLEF API] : recherche des articles sur houdemont parus entre le 31 décembre 2018 et le 6 janvier 2019
  • https://newsapi.org/v2/everything?q=houdemont&language=fr&apiKey=[VOTRE CLEF API] : les articles retournés doivents être écrits en francais
  • https://newsapi.org/v2/everything?q=houdemont&sortBy=publishedAt&apiKey=[VOTRE CLEF API] : les articles retournés doivents être riés sur la date de publication. D'autres critères de tris existent

D'autres critères comme le nombre de résultats renvoyés est spécifiable dans cette URL d'appel. La réponse retournées comportera toujours, pour chaque article :

  • status : un statut OK ou ERROR
  • totalResults : le nombre de résultats retournés
  • articles : un tableau des articles retournés
  • source : la source de l'article
  • author : l'auteur de l'article
  • title : le titre
  • description : l'article en lui même
  • URL : l'URL de l'artiicle "source"
  • URLToImage : L'URL d'une image pertinente pour l'article.
  • publishedAt : la date de publication de l'article
  • content : le contenu de l'article

Alors oui, je reconnais, j'accès de cette API est un peu chère, mais le contenu est très fourni.