WikipediaFS
Материал из Xgu.ru
WikipediaFS — программа, позволяющая через FUSE монтировать как файловую систему Wikipedia, Xgu.ru или любой сайт, использующий Mediawiki. Она может пригодиться для автоматизации операций с wiki-страницами.
Содержание |
[править] Инсталляция и начальная настройка
Устанавливается из архива исходных текстов или как пакет, принятым в дистрибутиве способом:
%# 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
Например, для работы с Xgu.ru конфигурационный файл будет выглядеть так:
<?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>xgu.ru</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/ xgu.ru $ cd /mnt/wfs/xgu.ru
Пусто, потому что мы ни к одному файлу ещё не обращались.
Обратимся:
$ cat WikipediaFS.mw | less
И увидим код этой страницы.
Попробуем её поправить:
$ vi WikipediaFS.mw
Страница будет изменена.
[править] Автоматизация работы
Если вики-проект не очень большой, то можно вытащить имена всех его страниц с помощью маленького скрипта:
SITE=xgu.ru
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/xgu.ru/$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://xgu.ru/wiki/([^'< \n]*)@{{коротко|\$1}}@" ; done
[править] Дополнительная информация
- WikipediaFS (англ.) — домашний сайт проекта