Nous avons la chance d’utiliser Wordpress, enfin, surtout le fait que celui-ci supporte XML-RPC. Ceci va nous faciliter le travail. Comme j’aime bien Python, allons y avec Python.

Tout d’abord, l’outillage :

pip3.3 show python-wordpress-xmlrpc

J’ai choisi cette mise en œuvre comme étant la plus complète, il fallait gérer à la fois des pages et des articles.

En route pour le code :

#!/usr/bin/python3
# coding: utf-8
import datetime
from wordpress_xmlrpc import WordPressPage
from wordpress_xmlrpc import WordPressPost
from wordpress_xmlrpc.methods import posts
from wordpress_xmlrpc.methods import pages
from wordpress_xmlrpc import Client
import locale


locale.setlocale(locale.LC_ALL, 'fr_FR.utf8')

def premier_samedi(type):
    y = datetime.date.today().year
    j = 1
    m = datetime.date.today().month
    if m == 12:
        y += 1

    while datetime.date(y, m + 1, j).strftime("%A") != 'samedi':
        j += 1

    if type == 'url':
        return datetime.date(y, m + 1, j).strftime("%B-%Y")
    elif type == 'court':
        return datetime.date(y, m + 1, j).strftime("%B %Y")
    else:
        return datetime.date(y, m + 1, j).strftime("%e %B %Y")


client = Client('https://premier-samedi.org/xmlrpc.php',User,Password)
accueil = client.call(posts.GetPost(730))
accueil.content = 'Un long texte qui présente les premier samedis \
le ' + premier_samedi('long') + \
'……’
client.call(posts.EditPost(accueil.id, accueil))

post = WordPressPost()
post.title = premier_samedi(’court’)
post.content = ’

Date : samedi’ + premier_samedi(’long’) + ’
\n\ Horaires : de 14h00 à 18h00
…’ post.id = client.call(posts.NewPost(post)) post.post_status = ’publish’ client.call(posts.EditPost(post.id, post))

Edit : Après cette première version, j’ai relu et on peut refactoriser le code avec l = list(map((lambda s: [s.year,s.month,s.day]), rrule(MONTHLY,byweekday=SA(1))[:5])) ou mieux encore : rrule(MONTHLY,dtstart=date.today(),byweekday=SA(1),count=1)[0]

La version complète se trouve sur un dépot git.