WikipediaFS

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 18:41, 20 июня 2017.
WikipediaFS
Features
Дедупликация данных (single_instance_storage)
Другие
Операционная система Mac OS X, Linux, FreeBSD
Веб-сайт wikipediafs.sourceforge.net

WikipediaFS - это виртуальная файловая система, которая позволяет пользователям просматривать и редактировать статьи любого сайта на основе MediaWiki, как если бы они были реальными файлы на локальном диске. Это позволяет пользователю редактировать статьи непосредственно с помощью любого текстового редактора. WikipediaFS разработана Матье Блонделом на SourceForge.net.

WikipediaFS реализован на Python и использует модуль FUSE. Файловая система работает лениво скачав и загрузив статьи sourcetexts - только отправка HTTP-запросы к выбранному участку при обращении к файлу. (Чтению файла соответствует запрос HTTP GET, записи - запрос POST HTTP.)

WikipediaFS позволяет просматривать и редактировать статьи Википедии, как если бы они были реальными файлами. mount.wikipediafs монтирует файловую систему WikipediaFS.

Работа над проектом с 2007 года приостановлена.

Инсталляция и начальная настройка

Устанавливается из архива исходных текстов или как пакет, принятым в дистрибутиве способом:

%# apt-get install wikipediafs

Как зависимости также будут установлены пакеты:

  • libfuse2
  • fuse-utils
  • python-fuse

После инсталляции можно выполнить первый запуск:

%$ mount.wikipediafs 
fuse: missing mountpoint
filesystem initialization failed

Несмотря на то, что программа выдала сообщение об ошибке, был создан конфигурационный файл, который можно изменить, и указать параметры подключения к интересующему вас mediawiki-сайту:

igor@chub:~$ ls /home/igor/.wikipediafs/
config.xml  wikipediafs.log

Например, для работы с bmstu.wiki конфигурационный файл будет выглядеть так:

<?xml version="1.0" encoding="UTF-8"?>
<wfs-config>
    <general>
        <article-cache-time>30</article-cache-time>
    </general>
    <sites>
        <site>
            <dirname>xgu.ru</dirname>
            <host>ru.bmstu.wiki</host>
            <basename>/w/index.php</basename>
            <username>user</username>
            <password>password</password>
        </site>
    </sites>
</wfs-config>

Вместо слов user и password вы должны указать имя и пароль своего пользователя для подключения.

Пример использования

Для того чтобы можно было выполнять монтирование от имени простого пользователя, его необходимо включить в группу fuse и перерегистрироваться.

   %$ sudo useradd -a -G fuse user

После этого можно выполнять монтирование файловой системы:

   $ mount.wikipediafs /mnt/wfs/
   $ ls /mnt/wfs/
   ru.bmstu.wiki
   $ cd /mnt/wfs/ru.bmstu.wiki
   

Пусто, потому что мы ни к одному файлу ещё не обращались.

Обратимся:

   $ cat WikipediaFS.mw | less

И увидим код этой страницы.

Попробуем её поправить:

   $ vi WikipediaFS.mw

Страница будет изменена.

Автоматизация работы

Если вики-проект не очень большой, то можно вытащить имена всех его страниц с помощью маленького скрипта:

SITE=ru.bmstu.wiki
INDEX=/w/index.php
wget -O - 'http://'$SITE$INDEX'?title=Special:Popularpages&limit=1000&offset=0' 2>/dev/null \
| grep 'li..a.href=..wiki' \
| perl -p -e 's@.*?/wiki/@@; s@".*@@' \
| perl -p -e 's/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;'

Сделать так чтобы в каталоге появились первые из 100 страниц в этом списке можно так:

Очень медленно на медленном канале и просто медленно на быстром

wpfs-all-pages \
| head -100 \
| grep -v / \
| while read name 
do 
    head -1 wfs/ru.bmstu.wiki/$name.mw > /dev/null 
    echo $name 
done
#!/bin/sh

set -x

filename=$1
cat $filename >/tmp/wpfs-perl-i-$$
shift
cat /tmp/wpfs-perl-i-$$ | perl -i "$@" > $filename
rm /tmp/wpfs-perl-i-$$
 for i in *.mw ; do wpfs-perl-i $i -p -e "s@Короткая ссылка: http://ru.bmstu.wiki/wiki/([^'< \n]*)@{{коротко|\$1}}@"  ; done

Литература