Journal Wikipédia en mode offline

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
38
1
déc.
2021

Pour des tas de raisons dont je ne traiterais pas dans ce journal, j’ai pensé qu’il serait intéressant de pouvoir accéder à Wikipédia sans connexion.

Chance, c’est relativement simple et à la portée des disques durs modernes : Wikipédia francophone complet, avec les images, occupe moins de 30Go de disque dur.

Deux logiciels existent, à ma connaissance, pour cela, tous les deux permettant de télécharger une version .zim de Wikipédia (voire de d’autres bases de données) et d’y naviguer.

Le vénérable Kiwix :
https://www.kiwix.org/en/

Packagé dans Debian, Kiwix est, dans mon expérience, très buggué au niveau de la recherche. Impossible de trouver quoi que ce soit à moins d’avoir le nom exact d’une page (ou beaucoup de chance).

Une alternative existe, Webarchives, disponible sur Flathub :
https://github.com/birros/web-archives

Webarchives corrige bien des bugs de Kiwix et rend le tout utilisable.

Si c’est utilisable, on est encore loin de l’ergonomie du site web (par exemple, je n’ai pas trouvé comment afficher une image en plus grand, ce dont souffrait également Kiwix).

C’est un peu dommage d’avoir "moins bien que le site web" mais ça remplit son office.

Par contre, je n’ai toujours pas trouvé comment mettre à jour mon fichier .zim régulièrement sans tout retélécharger. Peut-être qu’un wget -C avec l’URL ad-hoc pourrait le faire mais je n’ai pas encore trouvé.

Bref, je suis preneur de conseil et de retour d’expérience de ceux qui auraient tenté ce genre de choses.

  • # Aard 2

    Posté par  . Évalué à 6 (+7/-1). Dernière modification le 01/12/21 à 17:09.

    Ensemble de logiciels Android, Java ou Python chargeant divers dictionnaires dont wiktionaries, wikipedia ou même C++ reference. Sans image néanmoins, ni mise-à-jour sans tout retélécharger à ma connaissance.

  • # Nous utilisons beaucoup kiwix !

    Posté par  (site Web personnel) . Évalué à 10 (+10/-0).

    Bonjour,

    Dans le cadre de mon travail au sein d’une association « à finalité sociale », nous utilisons déjà beaucoup Kiwix !

    Nous sommes très content de ce qu’il offre comme possibilités.

    Il faut veiller à avoir les index en plus des données. C’est cela qui permet de faire des recherches.

    Dans la zone de saisi, oui, les suggestions reposent sur le titre des articles. Dès lors que le texte saisi ne correspond plus à aucun début de titre d’article, il s‘agira d’une recherche sur base de mot clé dans l’ensemble des articles. C’est très différent. Il faut se dire que chaque mot clé se trouvera dans l’ensemble du texte d’un article, alors proposé dans les résultats, mais il pourront se trouver éparpillés dans le texte, éloignés les uns des autres et pas dans le même ordre.

    Nous préparons actuellement 140 ordinateurs portables avec notamment Kiwix et Wikipédia … ( Dual OSchool Free Software Pack )

    • [^] # Re: Nous utilisons beaucoup kiwix !

      Posté par  (site Web personnel) . Évalué à 3 (+1/-0).

      J'ai essayé Kiwix, c'est très bien, le seul problème c'est que les images sont beaucoup plus petites que les originales. Quand il s'agit d'une illustration, ce n'est pas très grave, mais lorsqu'il s'agit d'un schéma, c'est gênant, car il est parfois illisible !

      « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

    • [^] # Re: Nous utilisons beaucoup kiwix !

      Posté par  (site Web personnel) . Évalué à 6 (+4/-0).

      Il faut veiller à avoir les index en plus des données. C’est cela qui permet de faire des recherches.

      Cela fait un bout de temps que les index sont inclus dans les zims au moment de la création de ceux-ci. Il n'est plus nécessaire d'indexé les zims soi-même.

      Dans la zone de saisi, oui, les suggestions reposent sur le titre des articles. Dès lors que le texte saisi ne correspond plus à aucun début de titre d’article, il s‘agira d’une recherche sur base de mot clé dans l’ensemble des articles. C’est très différent. Il faut se dire que chaque mot clé se trouvera dans l’ensemble du texte d’un article, alors proposé dans les résultats, mais il pourront se trouver éparpillés dans le texte, éloignés les uns des autres et pas dans le même ordre.

      Dans les zims récents, on index les titres dans une base xapian à part, la recherche pour les suggestions ce fait sur cette base, donc les mots peuvent se trouver n'importe où dans le titre.
      On ne fait plus de recherche fulltext pour les suggestions.
      Si les zims sont trop vieux (pas d'index des titres) on se reporte effectivement sur les titre commençant par le texte cherché.

      Matthieu Gautier|irc:starmad

  • # mediawiki

    Posté par  . Évalué à 5 (+5/-0).

    Y'a pas moyen d'héberger une instance mediawiki locale et un miroir des données ? Comme ça tu aurais et les articles et l'IU de wikipedia

  • # Temps de recherche sur Kiwix

    Posté par  . Évalué à 2 (+1/-0).

    J'ai l'application Kiwix installée sur mon téléphone, avec une archive du wiktionnaire, pour pouvoir consulter des définitions quand je lis, sans être connecté. Toute l'application est géniale mais il y a un unique soucis qui casse un peu tout : les temps de recherche. Quand je tape mon mot, je peux avoir jusqu'à 5 secondes de chargement. Il y a pourtant autour de 30000 mots dans la langue française, avec un bon indexage ça devrait être parcouru en une fraction de seconde.
    Et tous les tickets à ce sujet ont été fermés sur github.

    • [^] # Re: Temps de recherche sur Kiwix

      Posté par  . Évalué à 2 (+2/-0).

      Si j'en crois Statistiques du Wiktionnaire, pour le Français, ce serait plutôt 1869953 entrées (609191 entrées non fléchies et 1836749 flexions de ces entrées). Ça doit pouvoir expliquer le délai :).

    • [^] # Re: Temps de recherche sur Kiwix

      Posté par  . Évalué à 3 (+1/-0).

      La dernière fois que j'avais essayé, Aard2, déjà évoqué, s'en sort mieux pour ce même usage.

      “It is seldom that liberty of any kind is lost all at once.” ― David Hume

    • [^] # Re: Temps de recherche sur Kiwix

      Posté par  (site Web personnel) . Évalué à 7 (+5/-0).

      Nous indexons les articles dans une base xapian, qui est embarqué dans le fichier zim.

      C'est xapian qui fait la recherche elle-même. Mais la base peut être relativement grosse. De mémoire, la base pour wikipedia en anglais fait plus de 4Go).
      Sur un téléphone (ou ailleurs), il faut un peu de temps, pour que le kernel monte ce qui est nécéssaire en mémoire vive. D’ailleurs, en générale, une deuxième recherche avec des mots similaire est bien plus rapide.

      Un plan d'action qu'on a serait d'ouvrir les bases à l'avance avant que l'utilisateur lance une recherche. Mais comme pour tout… c'est à faire :)

      Matthieu Gautier|irc:starmad

  • # Kiwix

    Posté par  (site Web personnel) . Évalué à 10 (+26/-0).

    Disclamer : Je suis le développeur principal et mainteneur du projet kiwix depuis quelques années (sans en être le créateur).

    La recherche dans les zim est clairement un point à améliorer.
    Et ça tombe bien on y travaille.

    On a fait pas mal d'améliorations sur le projet libzim qui est la bibliothèque bas-niveau pour lire et créer des zim (et donc indexer et rechercher dans les zims).

    Il y a une nouvelle version de libzim sortie il y a peu qui devrait pas mal améliorer la situation. Malheureusement, on est un peu bloqué avec la release de libkiwix qui prend un peu plus de temps. Du coup il n'y a pas eu de release des outils haut-niveau et les améliorations ne sont pas visible.
    Je vous invite à tester avec les nightlies : https://download.kiwix.org/nightly/ et remonter vous problèmes en ouvrant des bugs sur github.

    Au passage, WebArchive utilise des zim et la libzim pour les lire. Si il s'en sort mieux avec la recherche, on kiwix-desktop devrait y arriver aussi puisqu'il utilise les même données et algo.

    Si c’est utilisable, on est encore loin de l’ergonomie du site web (par exemple, je n’ai pas trouvé comment afficher une image en plus grand, ce dont souffrait également Kiwix).
    C’est un peu dommage d’avoir "moins bien que le site web" mais ça remplit son office.

    Tu peux utiliser l'outil kiwix-serve (dans https://github.com/kiwix/kiwix-tools) pour lancer un serveur local. En utilisant ton navigateur préféré, tu devrait arriver à afficher une image en grand (avec une résolution limitée toutefois, tu es limité à ce qui est dans le zim).

    Par contre, je n’ai toujours pas trouvé comment mettre à jour mon fichier .zim régulièrement sans tout retélécharger. Peut-être qu’un wget -C avec l’URL ad-hoc pourrait le faire mais je n’ai pas encore trouvé.

    Autre point noir du projet.
    Ça fait longtemps qu'on en parle mais on s'y est pas encore attelé. Et c'est un sujet pas si simple que ça. Ne serait-ce parce qu'on veut que ça soit transparent pour l'utilisateur (à l'exception du temps de téléchargement), que ça fonctionne avec tout nos outils (kiwix-desktop utilise aria2 en interne pour télécharger mais kiwix-android et kiwix-ios/macos utilisent leur propre solution) et que ça se déploie assez facilement sur nos miroirs et sans exploser nos disques (on en est à plus de 7To et on ne garde que les deux dernières versions de chaque zim)


    Enfin, pour donner un peu de contexte. Je suis pas loin d'être la seule personne payée pour travailler sur le projet kiwix (en tous cas la partie C++ et client) et je travaille pour le projet que 2 jours par semaine. On prend occasionnellement des prestas (dont un régulièrement depuis peu (hourra!)) pour des projets en particulier mais en moyenne sur les dernière années, on doit être à un mi-temps payé pour travailler sur l'ensemble des projets. Le reste des développements est fait pas des contributeurs bénévoles (un grand merci à eux!)
    Du coup vous êtes les bienvenus pour contribuer si vous avez du temps libre. Je me ferai un plaisir de reviewer votre code :D

    Matthieu Gautier|irc:starmad

    • [^] # Re: Kiwix

      Posté par  (site Web personnel) . Évalué à 8 (+6/-0).

      C’est quand même génial Linuxfr. On parle d’un projet et, paf, on est face à l’auteur.

      Tout d’abord, merci pour ton travail. Je ne savais pas que Kiwix était financé (je ne sais pas trop comment d’ailleurs).

      Je crois qu’il y’a deux problématiques différentes : d’une part l’UX de Kiwix qui pourrait être grandement améliorée (mais c’est un fameux travail de fond et de réflexion) et la fonctionnalité d’update des .zim.

      De ce côté là, il y’a plein de possibilités : wget, filetree (utilisé par Flatpak) ou tout simplement bitorrent.

      Je crois fournir une URL fixe des .zim permettrait déjà de savoir qu’il faut retélecharger avec wget.

      Au fait, existe-t-il une interface zim en ligne de commande ?

      • [^] # Re: Kiwix

        Posté par  (site Web personnel) . Évalué à 4 (+2/-0).

        existe-t-il une interface zim en ligne de commande ?

        ZIM tools ?

      • [^] # Re: Kiwix

        Posté par  (site Web personnel) . Évalué à 6 (+6/-0).

        Tout d’abord, merci pour ton travail. Je ne savais pas que Kiwix était financé (je ne sais pas trop comment d’ailleurs).

        Surtout par le mouvement Wikimédia qui sécurise le fonctionnement de base : infrastructure, maintenance de la pile logicielle essentielle, etc.

        Mais aussi par des financements externes: projets, contrats qui ont besoin de support et/ou de services autour de Kiwix.

        Je crois qu’il y’a deux problématiques différentes : d’une part l’UX de Kiwix qui pourrait être grandement améliorée (mais c’est un fameux travail de fond et de réflexion) et la fonctionnalité d’update des .zim.

        Il y a de nombreuses versions différentes de Kiwix suivant l'usage et l'OS. Mais il n'y a pas de mystère : il faut d'abord faire les rapports de bugs. C'est le cas pour les problèmes de recherche (nous en avons fixés des dizaines ces derniers mois), comme pour tout autre domaine.

        De ce côté là, il y’a plein de possibilités : wget, filetree (utilisé par Flatpak) ou tout simplement bitorrent.

        En fait il n'y a aucune solution simple car ce n'est pas juste un problème de concatenation de données.

        Je crois fournir une URL fixe des .zim permettrait déjà de savoir qu’il faut retélecharger avec wget.

        C'est déjà le cas, par exemple:
        * https://download.kiwix.org/zim/wikipedia_fr_all_maxi.zim
        * https://download.kiwix.org/zim/wikipedia_fr_all_maxi.zim.torrent

        Il y a aussi un feed: https://wiki.kiwix.org/wiki/OPDS

        Kiwix reste avant tout un projet qui existe grâce aux volontaires et ce n'est pas juste un lecteur hors-ligne de Wikipédia. L'activité est décentralisée sur plus d'une cinquantaine de logiciels différents dans 3 organisations Github:
        * openZIM (manipulation de ZIM, scrapers) : https://code.openzim.org
        * Kiwix (lecteurs) : https://code.kiwix.org
        * OffSpot (bibliothèque hors-ligne sur RPI) : https://code.offspot.it

        • [^] # Re: Kiwix

          Posté par  (site Web personnel) . Évalué à 3 (+1/-0).

          Merci pour le lien. J’utilisais les liens avec les dates, ce qui est ennuyeux.

          J’ai renommé mon zim de mars en retirant la date, j’ai lancé wget -c et, pof, je commence le téléchargement à 95%.

          C’est une méthode qui fonctionne qui mérite peut-être d’être un peu plus documentée, non ?

          • [^] # Re: Kiwix

            Posté par  (site Web personnel) . Évalué à 9 (+7/-0).

            Elle est pas documentée parce qu'elle marche pas :)

            wget -c fais "simplement" un diff sur la taille du fichier distant - taille du fichier local et télécharge la fin pour la rajouter au fichier local.

            Du coup, wget rajoute juste la fin d'un zim récent à un zim ancien.
            Et comme la libzim sait lire une archive zim embarquée dans un fichier plus gros, t'as l'impression que ça marche, mais t'es toujours en train de lire l'ancienne archive.

            Les 5% "manquant" que tu as téléchargé ne servent à rien.

            Matthieu Gautier|irc:starmad

  • # mise à jour

    Posté par  . Évalué à 3 (+3/-0). Dernière modification le 06/12/21 à 15:51.

    D'après un rapide test avec rsync sur un mise à jour d'un zim quelconque il est effectivement possible de gagner un peu et de ne pas tout re-télécharger [1].
    Cependant le calcul du delta à la demande est coûteux (en CPU) pour le serveur et probablement dans des proportions plus grandes que le surcoût évité de bande passante, toujours pour le serveur.
    Il existe des méthodes de distribution efficace de ce genre de delta par pré-calcul (par exemple avec zsync).
    La question s'est bien sûr posée pour le projet kiwix [2][3] mais les "delta-transfer" sur des binaires étant inefficace, il faudrait avoir une certaine stabilité dans la façon de regrouper les document pour créer les zim [3] ce qui impliquerait un modification profonde de libzim, ce qui ne serait probablement pas une mince affaire !

    [1] avec son algorithme de "delta-transfer" rsync "speedup is 1.31"
    entre https://archive.org/download/ekopedia_fr_all_maxi_2020-06.zim et https://archive.org/download/ekopedia_fr_all_maxi_2020-04.zim
    [2] https://github.com/kiwix/overview/issues/12
    [3] https://github.com/ipfs/distributed-wikipedia-mirror/issues/71#issuecomment-660609200

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.