qkowlew: (ветка)
[personal profile] qkowlew
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
делает вроде бы всё замечательно, но вместо контента имеем "список связанных правок" на каждой странице. :)

Date: 2014-Nov-24, Monday 00:57 (UTC)
From: [identity profile] prividen.livejournal.com
Исходники тырить?
типа http://farstars.ru/index.php?title=%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&action=edit

если сайтиков таких много, можно наверное для них и вики поднять

А вообще у mediawiki должно нехилое API быть для всякой автоматизации

Date: 2014-Nov-24, Monday 03:07 (UTC)
From: [identity profile] qkowlew.livejournal.com
Капитан очевидность с тобой вполне согласен.

Date: 2014-Nov-24, Monday 06:39 (UTC)
ext_613079: Default userpic (Бритый небритый)
From: [identity profile] shaplov.livejournal.com
Для случая медиавики стили можно мастерским произволом побирать из медиавиковских исходников. Их почти никто почти никогда не меняет.

Вообще конкретно под медиавики есть какие-то полуготовые решения которые позволяют переносить данные между движками, прямо с историей изменений, когда к источнику есть только веб доступ. Если хочется разворачивать медиавики у себя, могу неспешно изучить этот вопрос, у меня это знание стоит в очереди неспешных задач на освоение. Могу подвинуть вперед

Чисто наблюдение, возможно очивидное: Прекрасное далеко отличается от Зеленой планеты наличием слеша в конце.

Date: 2014-Nov-24, Monday 06:43 (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Ну то есть проблема та же, что и с index.php - некоторые страницы миррорятся в страницы и с ними все нормально. Некоторые - в каталоги, и тогда содержимое собственно страницы (которое должно бы стать в этом каталоге index.html) куда-то девается. wget, кстати, по-моему в таких случаях именно в index.html его и пишет.

Date: 2014-Nov-27, Thursday 12:29 (UTC)
From: [identity profile] aywen.livejournal.com
http://rpg.shaplov.arda.ru/MySongs.html. Ссылка внизу страницы на Песня манчкина неролеплэйного ведёт вникуда. На оригинальном сайте тоже. Пофиксишь?

Date: 2014-Nov-24, Monday 06:48 (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
http://www.sciencemedianetwork.org/wiki/Mediawiki_mirror

Вот это смотрел? На первый взгляд похоже на то, что надо.
Глубоко не копался и запускать не пробовал.

Date: 2014-Nov-24, Monday 08:50 (UTC)
From: [identity profile] qkowlew.livejournal.com
не похоже.
2009 год - последняя правка страницы.
Почти все ссылки на сторонние ресурсы, на первый взгляд - битые.

Ну и капитан очевидность, опять же с нами, конечно же - без ссылок и конкретного скрипта:


http://www.sciencemedianetwork.org/wiki/Offline_mediawiki#Offline_html_copies

* It's easy to make a solution with wget, that allows the mirroring of a wiki. (Updated) pages are retrieved, and a perl script reconstructs all the links. This could be run every night on a remote server to update the master wiki (as read-only copy) to that remote server. (No admin access needed.)

* The wiki can also be dumped to html using tools in the wiki maintenance directory. (Admin access needed.)

Date: 2014-Nov-24, Monday 09:06 (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Да, значит это типичное не то.

Нашел еще вот это https://github.com/samuell/mw2html
запустил, работает пока. Доработает - посмотрю что получилось.

Оно, правда, похоже и не пытается сохранять URL на внутренние страницы. При наличии таких ссылок на других копируемых сайтах это может быть неприятно.

Хм, поработало-поработало и на середине выпало в осадок по причине некорректного ответа сервера "Bad Status Line" говорит.
Edited Date: 2014-Nov-24, Monday 09:08 (UTC)

Date: 2014-Nov-24, Monday 09:43 (UTC)
From: [identity profile] qkowlew.livejournal.com
Ну вариант без сохранения внутренних урл я рассматриваю уже как допустимый (ибо связность всё равно плохо достижима при смене доменного имени).

Date: 2014-Nov-24, Monday 09:02 (UTC)
From: [identity profile] qkowlew.livejournal.com
Этот набор страниц является годной иллюстрацией к утверждению "сайты умирают" - раскопать осмысленное РЕАЛЬНО СЛОЖНО.

Date: 2014-Nov-24, Monday 09:07 (UTC)
From: [identity profile] qkowlew.livejournal.com
Разве что попытаться задействовать OpenZim...
http://openzim.org/wiki/Main_Page

Но в случае задействования его под public вебсервер - это означает "влезть в зависимость" уже от этого проекта, и секс с возможным взломом.

Date: 2014-Nov-24, Monday 09:13 (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Штука интересная, но, по-моему для несколько других целей. Оно скорее википедию на флэшке носить.

Я там нашел только writer, который из базы данных пишет, через публичный веб-интерфейс, даже без админ-доступа, оно вроде как zim-файл не соберет.

Что касается зависимости от этого проекта, то там как я погляжу. имеется пачка независимых реализаций - как минимум C++, Java и Perl. Что несколько обнадеживает.

Date: 2014-Nov-24, Monday 08:27 (UTC)
ext_613079: Default userpic (Бритый небритый)
From: [identity profile] shaplov.livejournal.com
А еще в медиавики есть волшебная страница
http://farstars.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:AllPages
Из нее можно названия всех интересующих страниц выпарсить, и потом для каждой сделать wget -p без рекурсии. Тогда гарантированно будут созданы сами страницы, а не одноименные каталоги

Date: 2014-Nov-24, Monday 10:49 (UTC)
From: [identity profile] qkowlew.livejournal.com
пожалуй, этот путь потенциально наиболее конструктивен и наименее зависит от версии mediawiki (в отличие от попыток работать через API)

Date: 2014-Nov-24, Monday 11:57 (UTC)
From: [identity profile] qkowlew.livejournal.com
Ага. Надо парсить эту страницу, только на ней нет полного списка - есть ссылки на пагинацию, разбирать эту часть и парсить отдельные странички пагинации...

Date: 2014-Nov-24, Monday 17:24 (UTC)
From: [identity profile] qkowlew.livejournal.com
ага.
1. все имена страниц преобразованы - например "Ахерон" - на самом деле "Ахерон" - то есть брать имена страниц бесполезно, ибо я не знаю, как оно ещё там отконверчено. Брать урлы....
2. Есть например страница Прекрасное_далеко - но нет страницы Прекрасное_далеко/ - зато в подкаталоге Прекрасное_далеко/ есть страницы. Попробуйте wget ага. :)

Date: 2014-Nov-24, Monday 20:19 (UTC)
ext_613079: Default userpic (Бритый небритый)
From: [identity profile] shaplov.livejournal.com
#!/usr/bin/perl

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`;

}

Date: 2014-Nov-24, Monday 21:30 (UTC)
From: [identity profile] qkowlew.livejournal.com
Я таки сделал вариант круче (но хитрее и распереподвывернутее), и сейчас оно скопируется...
- Проблему "файл-директория" оно решает
- Проблему скачки и доступности сгенерённых стилей и скриптов оно решает
- Проблему внутренних ссылок и адекватного их направления - решает
- Проблему обхода всех статей всех пространств оно НЕ решает на автомате, но позволяет решить её достаточно легко руками (пространства делятся на "пагинутые" и "непагинутые" - одни вносятся в один список, другие в другой. на 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
Edited Date: 2014-Nov-24, Monday 21:31 (UTC)

Date: 2014-Nov-25, Tuesday 00:05 (UTC)
From: [identity profile] qkowlew.livejournal.com
http://mirrorpg.arda.ru/mirrorpg/mirrorpg-abandoned - тут найти farstars.ru и заценить. :)

Date: 2014-Nov-24, Monday 20:20 (UTC)
ext_613079: Default userpic (Бритый небритый)
From: [identity profile] shaplov.livejournal.com
Это пруф оф концепт.
Там надо чуть аккуратнее с кавычками...

Date: 2014-Nov-24, Monday 09:15 (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
А вот тут:
http://www.noah.org/wiki/MediaWiki_notes#Static_HTML_dump_of_MediaWiki

предлагают миррорить wget-ом с опциями несколько отличающимися от твоих.

Date: 2014-Nov-24, Monday 09:34 (UTC)
From: [identity profile] qkowlew.livejournal.com
Ага. Интересно. Щас попробую...

Date: 2014-Nov-24, Monday 10:21 (UTC)
From: [identity profile] qkowlew.livejournal.com
Мдя. Получаются странички связанных правок... http://farstars.arda.ru/Yotee