Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Ахив форума

Модерирует : Antuan

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Jovani



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сейчас пытаюсь создать скрипт, который будет архивировать форум, вернее не архивировать, а создавать HTML-ки.
Одна HTML - содержание, и на каждую тему по HTML.
Сам скрипт для тем ниже, он работает, но нужна помощь в доделке. Сам я в PERL-е очень плох
Он создает файлы тем, но если темы нету(например была удалена администратором) на эту тему создается пустой файл, посему вопрос:
 
1. Как узнать, что файла темы не существует?
2. Куда-бы прикрутить эту проверку?
 
Вот скрипт:
 

Код:
 
#!/usr/bin/perl
 
use CGI::Carp "fatalsToBrowser";
use CGI qw(:standard);
 
require "ikon.lib";  
require "data/progs.cgi";  
require "data/boardinfo.cgi";
require "data/styles.cgi";
 
#####################    Настройки    ############################################
 
$myforum        = 1;    # Номер форума, который архивировать
$starttopic     = 911;  # с какого топика архивировать
$endtopic       = 919;  # по какой топик архивировать
$mydir = "d:/ikonboard/archiv/"; # Сюда все файлы будем кидать, его сделать заранее
 
##################################################################################
 
while ($starttopic  < ($endtopic + 1)){
 
# Узнаем название топика
$filetoopen = "$ikondir" . "forum$myforum/$starttopic.thd";
open(FILE, "$filetoopen");
@threads = <FILE>;
close(FILE);
($trash, $topictitle, $trash) = split(/\|/, @threads[0]);
$postdate = &dateformat($postdate + ($timedifferencevalue*3600) + ($timezone*3600));
 
 
# Узнаем описание топика
open (TMP, "$ikondir" . "forum$myforum/$starttopic.pl");  
@my = <TMP>;  
($topicid, $topictitle, $topicdescription, $threadstate, $threadposts, $threadviews, $startedby, $startedpostdate, $lastposter, $lastpostdate) = split (/\|/,@my[0]);  
close (TMP);  
 
 
# Печать заголовока темы  
$output .= qq~
<html>
<head>
<title>Тема - $starttopic</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
</head>
<body style="MARGIN-LEFT: 50px; MARGIN-RIGHT: 50px">
~;
$output .= qq~<h3 align=center><font color="#800000"><a href="$boardurl/$threadprog?forum=$myforum&topic=$starttopic"><b>$topictitle</b></a></font>~;
$output .= qq~<br>$topicdescription~ if $topicdescription;
$output .= qq~</h3>~;
$output .= qq~<table width="90%" align="center" BORDER="0" cellspacing="1" cellpadding="6" bgcolor="#999999">~;
 
# Печать темы с ответами
foreach $line (@threads) {
($postermembername, $topictitle, $postipaddress, $showemoticons, $showsignature, $postdate, $post) = split(/\|/,$line);
$post = &ikoncode("$post");
$post =~ s/&lt\;/\</g;
$post =~ s/&gt\;/\>/g;
$post =~ s/&quot\;/\"/g;
$postdate = &dateformat($postdate + ($timedifferencevalue*3600) + ($timezone*3600));
$output .= qq~<tr bgcolor="#ffffff">~;
$output .= qq~<td valign="top"><b>$postermembername</b></td> ~;
$output .= qq~<td valign="top">$post</p><p align=right>$postdate</p></td></tr>~;
}
     
# Конец топика
$output .= qq~</table><p align=center>конец темы</p>~;
&filecreate;    # Создаем файл          
} continue {    
$starttopic++; # Увеличиваем номер топика
}
 
# конец работы
print "Content-type:  text/html\n";
print "Pragma: no-cache\n\n";
print "<HTML><HEAD>";
print "</HEAD><BODY>";
print "Работа скрипта выполнена";
print "</BODY></HTML>";  
exit;
 
sub filecreate {                     # Создание файла
$file = "$mydir/$starttopic.html";
open (FILE,"> $file");
print FILE "$output";
print FILE "</body></html>";
close (FILE);
$output = "";
}
 
 


Всего записей: 205 | Зарегистр. 23-07-2001 | Отправлено: 16:35 31-08-2002
ivank



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
if( -e "файл" ) проверяет существование файла. Дальше сам дотукаешь? А делать надо было по-другому...

----------
ivank
http://ivank.oszone.net

Всего записей: 553 | Зарегистр. 24-01-2002 | Отправлено: 21:09 31-08-2002
suslik_s_gitaroy



Хомяк под кайфом
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jovani
после

Цитата:
$filetoopen = "$ikondir" . "forum$myforum/$starttopic.thd";  

вставляешь

Код:
 
if (-e "$filetoopen"){
 

ну и закрыть потом не забудь...

Всего записей: 1791 | Зарегистр. 23-12-2001 | Отправлено: 22:24 31-08-2002
ivank



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
suslik_s_gitaroy
Лучше всунуть
Код:
next unless -e $filetoopen;

Читается на порядок легче. (Меньше вложенностей потому что)

----------
ivank
http://ivank.oszone.net

Всего записей: 553 | Зарегистр. 24-01-2002 | Отправлено: 23:05 31-08-2002
Jovani



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо - все получилось.

Всего записей: 205 | Зарегистр. 23-07-2001 | Отправлено: 14:39 01-09-2002
suslik_s_gitaroy



Хомяк под кайфом
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ivank
читается легче, но разници никакой...
Jovani
в виде хака сделашь?

Всего записей: 1791 | Зарегистр. 23-12-2001 | Отправлено: 15:24 01-09-2002
Jovani



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
в виде хака сделашь?  

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

Всего записей: 205 | Зарегистр. 23-07-2001 | Отправлено: 15:41 01-09-2002
suslik_s_gitaroy



Хомяк под кайфом
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jovani
а мона где посмотреть, как он страницы нагенерил?

Всего записей: 1791 | Зарегистр. 23-12-2001 | Отправлено: 15:56 01-09-2002
Jovani



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Извини, долго не смотрел, я думал, что тема исчерпана ...
Вот для образца можно посмотреть, один файл:
http://monitor.ti.ru/file/856.html
Переменные и дизайн можно использовать любые, по желанию.
 
А так вобще-то планирую все эти HTML и содержание в ZIP, для чтения в OFLINE.

Всего записей: 205 | Зарегистр. 23-07-2001 | Отправлено: 18:25 03-09-2002 | Исправлено: Jovani, 18:34 03-09-2002
suslik_s_gitaroy



Хомяк под кайфом
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jovani
ты это тему на локале генерил?
там ссылка на локалхост получилась...

Всего записей: 1791 | Зарегистр. 23-12-2001 | Отправлено: 11:55 04-09-2002
Jovani



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
suslik_s_gitaroy
Да, это самый первый вариант - генерил на локале, я всего одну HTML закинул для показа.
Сейчас пока делаю приличный дизайн для архива, и в скрипте содержание на страницы разобью, тогда прямо на сайте сгенерю.

Всего записей: 205 | Зарегистр. 23-07-2001 | Отправлено: 14:00 04-09-2002
suslik_s_gitaroy



Хомяк под кайфом
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jovani
ну дерзай! потом покожи, что получилось!

Всего записей: 1791 | Зарегистр. 23-12-2001 | Отправлено: 15:17 04-09-2002
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Ахив форума


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru