{{tag>Brouillon Python Prog}} = Notes DokuWiki API XML-RPC Voir : * https://www.dokuwiki.org/devel:xmlrpc * https://www.dokuwiki.org/devel:jsonrpc * https://www.patreon.com/posts/96036243 * dokujclient ** Il vaut mieux utiliser JSON-RPC ** Voir https://www.dokuwiki.org/devel:remote_api == Généralités Penser à restreindre l'accès à https://wiki.acme.fr/lib/exe/xmlrpc.php depuis le serveur web Il faut activer l'option : **remote** Active l'API système distante. Ceci permet à d'autres applications d'accéder au wiki via XML-RPC ou d'autres mécanismes. Voir aussi l'option : **remoteuser** Restreindre l'accès à l'API à une liste de groupes ou d'utilisateurs (séparés par une virgule). Laisser vide pour donner l'accès tout le monde. == Exemple en Python pip3 install --user dokuwiki import dokuwiki wiki=dokuwiki.DokuWiki('https://wiki.acme.fr', 'remoteuser', 'P@ssw0rd') wiki.version wiki.send('dokuwiki.getVersion') wiki.title wiki.pages.list() [page['id'] for page in wiki.pages.list('Tech')] # Info wiki.pages.info('Test') wiki.send('wiki.getPageInfo','Test') wiki.pages.versions('Test') # Modification, ajout à une page existente wiki.pages.append('Test', 'http://linuxfr.org/\n\n', sum='Via XML-RPC', minor=True) # Création nouvelle page avec son lien wiki.pages.set('Test1', 'Test1 : \n * http://linuxfr.org/') wiki.pages.append('Test', '[[Test1]]', sum='Via XML-RPC', minor=True) # Recherche motif textuel [x['id'] for x in wiki.pages.search('linuxfr')] # Effacement page ':Test1' et de son lien présent sur ':Test' import re wiki.pages.delete('Test1') newpage=re.sub('\[\[Test1\]\]', '', wiki.pages.get('Test')) wiki.pages.set('Test', newpage, sum='XML-RPC', minor=True) Recherche par date from datetime import datetime wiki.pages.changes(datetime(2023, 9, 1).timestamp()) == Trouver les pages non référencées Avec l'extension Dokuwiki * orphanswanted plugin Avec l'API no_backlink = [] for page in wiki.pages.list(): back_links = wiki.pages.backlinks(page['id']) #print(page['id'], '\t', back_links) if not back_links: no_backlink.append(page['id']) #print('\t\t\t', page['id']) print(no_backlink) En ligne de commande avec PHP su - dokuwiki -s /bin/bash -c "php ${DOKUROOT}/bin/wantedpages.php |egrep -v 'playground:playground|sidebar|some:namespaces|wiki:nonexisting|wiki:pagename'"