Создание ссылок в html странице, на основе содержащихся файлов вместе с ней в папке

Изображение пользователя Xenomorph.

Скрипт позволяющий создать одним движением командной строки (:-) ) HTML страничку с содержимым этого каталога.

Был создан по заказу просьбе Balamutick -а. А так же с целью совершенствования собственных навыков. Ну и собственно выложен с комментариями и под открытой лицензией для сообщества.

Скрипт позволяющий создать одним движением командной строки (:-) ) HTML страничку с содержимым этого каталога.

Был создан по заказу просьбе Balamutick -а. А так же с целью совершенствования собственных навыков. Ну и собственно выложен с комментариями и под открытой лицензией для сообщества.

#!/usr/bin/perl -w
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Copyright (C) 2010  Igor Gritsenko <[email protected]>      #
# This script may be copied and modified                                #
# under the terms of the GNU General Public License.                    #
# Version 0.0.1.5,                              2010-02-24 03:42:46 #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#Подключаем библиотеку для определения типа mime файла
#File::Magic заменено на File::MMagic для поддержки старых версий *buntu
use File::MMagic;
use IO::Pipe;
##Поддержка ввода директории как аргумента и через pipe
$dir=".";
$pipe = new IO::Pipe;
if(@ARGV){$dir=shift;
}elsif($pid = fork()){$pipe->reader();
    while(<$pipe>) {$dir=$_;
      chomp($dir);
    }
}
if(!$dir){$dir=".";
}
if($dir!~/\/$/){$dir=sprintf("$dir/");
}
opendir(DIR, $dir);
@files = readdir(DIR);
closedir(DIR);
$htmlbody='';
$imgbody='';
$sizeH="100";
$sizeW="100";
#функция для определения типа mime файла
sub mimetype{$file = shift;
      $mm = new File::MMagic;
      $result = $mm->checktype_filename($file);
      return $result;
}
foreach $file (@files) {
  if ($file!~/^\./){
    if ($dir!~/\./) {$file=sprintf("$dir$file");
    }
#Если наш файл - изображение, выводим его как изображение
if (mimetype($file)=~m/image/)
{    $imgbody=sprintf("$imgbody<a href=\"$file\"><img src=\"$file\"
      width=\"$sizeW\" \"height=$sizeH\" border=\"2\"></a>\n") ;
}
#иначе просто делаем ссылку на него
else
{    $htmlbody=sprintf("$htmlbody<br/><a href='$file'>$file</a>\n") ;
}
}
}
my $now = localtime;
my $rlfile = "index.html";
#Открываем файл index.html и пишем в него всё, что мы нагенерировали.
open FILE, ">$rlfile" or die "unable to open $rlfile $!";
print FILE <<EOF;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Page generated by ls2html.pl</title>
<meta name="generator" content="ls2html.pl">
<meta name="author" content="Xenomorph">
<meta name="date" content=$now>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
$htmlbody
$imgbody
</body>
</html>

EOF

#Конец! :)

Скрипт в глубокой бете Version 0.0.1.0 поэтому со всеми косяками отписываемся мне, я буду править.

  • Версия 0.0.1.5:
    • Библиотека File::Magic(libfile-magic-perl) заменена на File::MMagic(libfile-mmagic-perl) для поддержки старых версий дистрибутивов
    • Добавлена возможность передачи имени папки как аргумента или через pipe
    • Прочие незначительные изменения и улучшения

Комментарии (5)

0
balamutick - 22 Февраль, 2010 - 18:21
Изображение пользователя balamutick.

Будет очень полезно :-)

0
balamutick - 24 Февраль, 2010 - 03:07
Изображение пользователя balamutick.

Так под либу библиотеку в 3.5 кде переписал ?

З.Ы.

0
Xenomorph - 25 Февраль, 2010 - 13:09
Изображение пользователя Xenomorph.

Готово, шкипер!

0
balamutick - 25 Февраль, 2010 - 13:27
Изображение пользователя balamutick.
0
Xenomorph - 25 Февраль, 2010 - 13:51
Изображение пользователя Xenomorph.

Йумор понял, шкипер!

Отправить комментарий