Как зеркалить медиавики-сайты?
2014-Nov-24, Monday 03:33![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
UPD3: Кажется, я решил эту задачку. :)
http://farstars.arda.ru/ - Проверять можно целиком. Служебные страницы по большей части не валидны, так как не работают. Содержательная часть и обсуждения вроде все скопированы (2454 страниц всего в этой Вики, считая многие служебные).
Да - при проверке обращать внимание только на содержательную часть сайта!
К сожалению, новостная лента сайта (farstars.ru /live/ )заспамлена, и копия честно это воспроизводит.
Вот есть - http://farstars.ru/ - Легенды далёких звёзд.
Из-за особенностей движка на wget + тривиальная обработка получается http://farstars.arda.ru/ - с недостатками:
- полная потеря стилевых файлов
- невозможно сотворить index.php (SqFilePage index чтобы он показывал URI /index.php?...)так как уже есть каталог /index.php/
- часть страниц без очевидной причины "отсутствует":
-- Эта зеленая планета - есть (оригинал).
-- Прекрасное далеко - нету (оригинал.
Может у кого есть уже готовое решение?
UPD1: Капитан Очевидность предложил поискать perl Mediawiki::API - помедитируйте на страницу http://farstars.ru/w/api.php
UPD2: строка wget --mirror --no-parent --page-requisites --convert-links --no-host-directories --cut-dirs=2 --load-cookies cookies.txt --directory-prefix=. http://farstars.ru/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0
делает вроде бы всё замечательно, но вместо контента имеем "список связанных правок" на каждой странице. :)
http://farstars.arda.ru/ - Проверять можно целиком. Служебные страницы по большей части не валидны, так как не работают. Содержательная часть и обсуждения вроде все скопированы (2454 страниц всего в этой Вики, считая многие служебные).
Да - при проверке обращать внимание только на содержательную часть сайта!
К сожалению, новостная лента сайта (farstars.ru /live/ )заспамлена, и копия честно это воспроизводит.
Вот есть - http://farstars.ru/ - Легенды далёких звёзд.
Из-за особенностей движка на wget + тривиальная обработка получается http://farstars.arda.ru/ - с недостатками:
- полная потеря стилевых файлов
- невозможно сотворить index.php (SqFilePage index чтобы он показывал URI /index.php?...)так как уже есть каталог /index.php/
- часть страниц без очевидной причины "отсутствует":
-- Эта зеленая планета - есть (оригинал).
-- Прекрасное далеко - нету (оригинал.
Может у кого есть уже готовое решение?
UPD1: Капитан Очевидность предложил поискать perl Mediawiki::API - помедитируйте на страницу http://farstars.ru/w/api.php
UPD2: строка wget --mirror --no-parent --page-requisites --convert-links --no-host-directories --cut-dirs=2 --load-cookies cookies.txt --directory-prefix=. http://farstars.ru/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0
делает вроде бы всё замечательно, но вместо контента имеем "список связанных правок" на каждой странице. :)
no subject
Date: 2014-Nov-24, Monday 20:19 (UTC)use strict;
use URI::Encode;
my @l = (
"http://farstars.ru/wiki/%D0%9F%D1%80%D0%B5%D0%BA%D1%80%D0%B0%D1%81%D0%BD%D0%BE%D0%B5_%D0%B4%D0%B0%D0%BB%D0%B5%D0%BA%D0%BE/%D0%9C%D0%B5%D0%BD%D1%8E",
"http://farstars.ru/wiki/%D0%9F%D1%80%D0%B5%D0%BA%D1%80%D0%B0%D1%81%D0%BD%D0%BE%D0%B5_%D0%B4%D0%B0%D0%BB%D0%B5%D0%BA%D0%BE",
"http://farstars.ru/wiki/%D0%9F%D1%80%D0%B0%D0%B2%D0%BE_%D0%BD%D0%B0_%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D0%B4%D0%B8%D1%86%D0%B8%D0%BD%D1%81%D0%BA%D0%BE%D0%B9_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D0%B8"
);
`rm -r cache`;
`rm -r res`;
`mkdir res`;
foreach my $url (@l)
{
`mkdir cache`;
`cd cache; wget -p '$url'`;
my $file = './cache/farstars.ru/wiki';
while (1)
{
$file .= '/'.`ls $file`; # Мы точно знаем что там только один(!) файл или директория;
chomp $file;
die "Все плохо" if $file =~/\n/; # если вдруг файл оказался не один
last if ! -d $file
}
$url =~ m{^http://farstars\.ru/wiki/(.*)$};
my $real_name = "./res/farstars.ru/wiki/".URI::Encode::uri_decode($1);
`mkdir -p $real_name`;
`mv $file $real_name/index.html`;
`rm -r ./cache/farstars.ru/wiki`;
`cp -r ./cache/farstars.ru/* ./res/farstars.ru/`;
`rm -r cache`;
}
no subject
Date: 2014-Nov-24, Monday 21:30 (UTC)- Проблему "файл-директория" оно решает
- Проблему скачки и доступности сгенерённых стилей и скриптов оно решает
- Проблему внутренних ссылок и адекватного их направления - решает
- Проблему обхода всех статей всех пространств оно НЕ решает на автомате, но позволяет решить её достаточно легко руками (пространства делятся на "пагинутые" и "непагинутые" - одни вносятся в один список, другие в другой. на farstars - в первом списке 0 и 6, во втором - 1 2 3 4 5 7 8 9 10 11 12 13 14 15 102 103 104 105)
- API (которое не везде доступно) не использует
- Сверх того, что ранее я применял, используется только preg_match в том index.php, что показывает содержимое лежащих на диске файлов по принятым урлам.
- никаких отдельных urlencode/urldecode не применяет - только то, что встроено в wget
no subject
Date: 2014-Nov-25, Tuesday 00:05 (UTC)