Manipuler les projets Wikimedia à distance
avec les API de MediaWiki


© Anthere, Eloquence. Aka, Chrkl, DP

User:Arkanosis — WikiConvention francophone 2019

MediaWiki et les projets Wikimedia


© Wikimedia contributors, CC-BY-SA 3.0

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

MediaWiki et les projets Wikimedia


© Wikimedia contributors, CC-BY-SA 3.0

  • Différent sur le fond et parfois sur la forme
  • Pour des êtres humains

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

API ?


© National Fruit Collection, OGL 2.0

  • Application Programming Interface / interface de programmation d'application
  • API HTTP (HyperText Transport Protocol)
  • API REST (REpresentational State Transfer)

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Les projets Wikimedia sur mobile


© Wikimedia Foundation

  • Basé sur les API !

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

VisualEditor


© Wikimedia Foundation, DP


© Jdforrester, Gabriel Wicke, Trevor Parscal, CC-BY-SA 3.0

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

ContentTranslation


© Pau Giner et al., CC-BY-SA 3.0 + GFDL

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Interfaces alternatives


© George Shuklin, CC-BY-SA 1.0

  • Applications mobiles
  • VisualEditor
  • ContentTranslation
  • Flow
  • Pageview

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Meilleures performances


© Morio, CC-BY-SA 3.0

  • Moins de données à transférer
  • Asynchronisme
  • Pas de page blanche

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Wikimedia REST API


© Geoff Gallice, CC-BY 2.0

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Différentes API


© Mariofergo, CC-BY-SA 4.0

  • Wikimedia REST API (RESTBase)
  • Wikimedia RC API (EventStreams)

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Wikimedia RC API


© Donnovello617, CC-BY-SA 3.0

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Différentes API


© Mariofergo, CC-BY-SA 4.0

  • Wikimedia REST API (RESTBase)
  • Wikimedia RC API (EventStreams)
  • Wikidata Query Service (SPARQL)

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Wikidata Query Service


© W3C, Bill Schwappacher, DP

  • Données de Wikidata
  • Vous restez à la présentation suivante !

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Différentes API


© Mariofergo, CC-BY-SA 4.0

  • Wikimedia REST API (RESTBase)
  • Wikimedia RC API (EventStreams)
  • Wikidata Query Service (SPARQL)
  • MediaWiki Action API

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

MediaWiki Action API


© KUHT, DP

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

MediaWiki Action API
[[Special:ApiHelp]]


© Draper Laboratory, Adam Cuerden, DP

  • Documentation de référence
  • Complète et à jour
  • Générée par le code lui-même
  • En pratique d'une utilité moindre grâce à…

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

MediaWiki Action API
[[Special:ApiSandbox]]


© Jessie Tarbox Beals, DP

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Dans le navigateur


© Pei-Yuan Wei

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Hors du navigateur

© Soft Dreams, CC-BY-SA 4.0 © Stephen Dolan, CC-BY 3.0

Dans le navigateur, avec JavaScript


© Chris Williams, DP

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Programmation


© Msoos, CC-BA-SA 3.0

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Programmation : exemple de Python


© Tango! Project, GPLv2+

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Programmation : exemple de Python


© Tango! Project, GPLv2+

  • Créer un venv
    python -m venv mon_venv
  • Activer le venv
    • source ./mon_venv/bin/activate # Linux / macOS
    • mon_venv\Scripts\activate.bat # Windows
  • Installer requests
    python -m pip install requests

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Programmation : exemple de Python


© Tango! Project, GPLv2+

  • Exécuter un script
    python mon_script.py

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Pour résumer : dans le navigateur


© Paul Irish, Google, Microsoft, Mozilla, Opera, Apple

  • Avantages
    • Authentification gérée par MediaWiki
    • Disponible partout
  • Inconvénients
    • Uniquement sur les sites Wikimedia
    • Difficilement automatisable
    • JavaScript uniquement

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Pour résumer : hors du navigateur


© Arkanosis, DP

  • Avantages
    • Choix de la techno (Python, Java, shell…)
    • Choix de la plate-forme (PC, mobile, Raspberry Pi)
    • 100 % automatisable
  • Inconvénients
    • Gestion de l'authentification
    • Besoin d'environnement approprié

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

Troisième option : via un service tiers


© EpochFail, CC-BY-SA 3.0

  • Typiquement avec OAuth2
  • Avantages
    • Authentification partiellement gérée par MediaWiki
    • Disponible partout
    • Choix de la techno (Python, Ruby, Elixir…)
    • 100 % automatisable
  • Inconvénients
    • Complexe à mettre en place
    • Besoin d'un serveur

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

== Voir aussi ==


© Ivar Leidus, CC-BY-SA 4.0

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2019

~~~~


© Richard Cyganiak, Anja Jentzsch, CC-BY-SA 3.0