Projet

Général

Profil

Fichiers evopedia offline

Le site du projet evopedia http://www.evopedia.info/ propose de télécharger des dump compressés de wikipédia ... mais ça serait mieux si on pouvait faire nous-même ces fichiers compressés ... aucun problème, evopedia propose de télécharger le "client" pour créer des dump compressés de manière collaborative. Après avoir un peu participé je constate que leur serveur ne réponds plus (panne récurrentes) et qu'ils ne répondent pas à mes mails ... je décortique donc le client http://dumpathome.evopedia.info/contribute (copie de sauvegarde dans l'espace fichiers de ce projet) pour en arriver ici:

Modification du script

Pour éviter d'aller pourrir le serveur d'evopedia, on modifie scripts/settings.sh

DUMPATHOMESERVER="/tmp" 

Et on modifie également le script scripts/dumpathome.sh pour éviter la boucle infinie et le request vers le serveur evopedia (on fera le reverse engineering de la partie serveur une autre fois)

#while true                                                                                                                                                                                                                                  
#do                                                                                                                                                                                              
.../...
  #jobdesc=($($CURL -f "$DUMPATHOMESERVER/request_job" -F commonsdate="$commonsdate" -F wikidate="$wikidate" -F wikilang="$wikilang" -F clientrevision="$client_revision" -F user_id="$user_id" -F processes="$processes"))
  #on mettra ici en dur les commandes qu'on veut (voir la suite)
.../...
#done

1er tour : on importe le wiki

Par exemple pour le dictionnaire, on repère sur la page http://dumps.wikimedia.org/ la date de dernier dump et c'est tout:

jobdesc[0]="importwiki" 
jobdesc[1]="frwiktionary" 
jobdesc[2]="20130209" 

2e tour : on exporte

Si vous avez un proc a 8 coeurs vous pouvez les faire bosser en //

jobdesc[0]="createdump" 
jobdesc[1]="8" 
jobdesc[2]="1 2 3 4 5 6 7 8" 

J'ai du bricoler pour avoir un truc qui marche, entre autre, des erreurs liées à la table "images" -> création manuelle de la table. Puis des pb d'interclassement -> migration manuelle de la base et des tables en collate utf-8.

Pour info, je suis passé par une étape d'export manuel pour tester (documentation au fil de l'eau) après avoir modifié le fichier SkinOffline.php pour ne pas exporter les liens externes (il reste encore à supprimer les traductions et la table des matières):

php -d open_basedir= -d mysql.default_socket=mysql/mysqld.sock mediawiki-1.20.2/extensions/DumpHTML/dumpHTML.php -d /tmp/client2/data/dumps_temp/1 --image-snapshot --force-copy -k offline --slice 1/8
php -d open_basedir= -d mysql.default_socket=mysql/mysqld.sock mediawiki-1.20.2/extensions/DumpHTML/dumpHTML.php -d /tmp/client2/data/dumps_temp/2 --image-snapshot --force-copy -k offline --slice 2/8
.../...

Attention, c'est looooong:

  • real 1539m58.989s
  • user 9541m41.375s
  • sys 340m6.647s

3° tour : on package

Magique l'export au format evopedia est même inclus dans le script "client" :)

jobdesc[0]="package" 
jobdesc[1]="data/dumps" 
jobdesc[2]="20130209" 
jobdesc[3]="frwiktionary" 
jobdesc[4]="/tmp/toto" 
jobdesc[5]="frwiktionary" 
jobdesc[6]="data/dumps" 
jobdesc[7]="frwiktionary" 
jobdesc[8]="20130209" 

On peut même lancer directement le script python:

python /media/data/wikipedia-offline/client2/scripts/datafile_storage.py --convert data/dumps 20130209 frwiktionary /tmp/toto

Ça génère les fichiers dans le répertoire courant et c'est directement utilisable dans evopedia !!!!

Redmine Appliance - Powered by TurnKey Linux