[[ハム関連]]
*CirQダウンロードサイトの作り方とメンテナンス 備忘録 [#g468b189]
-1、CirQ-index.cgi~
最初にココに来ます。~
ココでは、検索するか全てか、検索するなら検索の文字 この2項目を取得します。~
最初ですから、全てその値はありません。
ですから、全ての目次テキストを表示します。
検索の文字があれば、シェルコマンドのgrepを使って検索します。~
Grepですから、ヒットした情報は、「ファイル名、行番号」。
これを一時ファイルに保存して、表示させます
検索 実際のソースコードは
sub kensaku{
my ($kensaku_str) = @_;
my $kensaku_path = $cirq_path . "*-1.txt";
my $kekka_path = $cirq_path . "kekka.txt";
my @mokuji_array;
`grep -rni $kensaku_str $kensaku_path > $kekka_path`;
open(MOKUJI, "<$kekka_path") || &msg("エラー報告","$kekka_path 読み込み オープンエラー");
my @mokuji_list = <MOKUJI>;
close MOKUJI;
foreach my $mokuji_rec(@mokuji_list){
#CirQ041-1.txt:11:6 地面アンテナの情 のように入っているので
$mokuji_rec =~ /(.\/pdf\/)(Cirq\d+)(-1.txt:)/i;
my $mokuji_str = $2 . "<>" . $';
push(@mokuji_array, $mokuji_str);#CirQ010<>マッチ文字を返す
}
return @mokuji_array;
}
全ての目次 ソースコードは
sub kensaku_all{
my @mokuji_list;
# 全てのテキストファイルを読み込んで表示する
my @cirq_dir_list=glob($cirq_path . "*-1.txt");
@cirq_dir_list = sort { $a cmp $b } @cirq_dir_list;
#&msg("デバッグ","@cirq_dir_list");
#globデーターからテキストファイルを次々に読み込む
foreach my $fn(@cirq_dir_list){
open(MOKUJI, "<$fn") || &msg("エラー報告","$fn 読み込み オープンエラー");
my @text_array = <MOKUJI>;
close MOKUJI;
#CirQ番号
$fn =~ /(.\/PDF\/)(CirQ\d+)(-1.txt)/i;
my $cirq_num = $2; #CirQ番号
my $cirq_str; #目次保存用
foreach my $rec(@text_array){
#スペース文字だけの行は削除
$rec =~ s/ //g;
$rec =~ s/ //g;
$rec =~ s/。//g;
$rec =~ s/\f//g;
my $temp=$rec;
chomp($temp);
if($temp eq "") {next;}
#改行は。にする
$rec =~ s/\n/。/;
$cirq_str .= $rec;
} #foreach my $rec(@text_array){
push(@mokuji_list, $cirq_num . "<>" . $cirq_str);
} #foreach my $fn
return @mokuji_list;
} #sub end
*前準備 [#l0a7de05]
新たにPDFを登録する場合の手順 備忘録
-------------------------------------------------
#!/usr/bin/perl
#/PDF/内のPDF全てから1ページ目をテキストにする
#これはサーバー上では動かないので、マニュアル操作、コマンド操作でテキスト化する
use strict;
use Jcode;
use CGI;
use DBI;
use File::Basename;
my $cirq_path="./PDF/";
#月刊誌ホルダー中味をBLOGする
my @cirq_dir_list=glob($cirq_path."*.pdf");
#-------------------------------------CIRQ cirq -->CirQに統一する
#foreach my $fn2(@cirq_dir_list){
# my $re_fn=$fn2;
# $re_fn =~ s/CIRQ/CirQ/;
# `mv $fn2 $re_fn`;
#}
@cirq_dir_list = sort { $a cmp $b } @cirq_dir_list;
#Blogして、PDF1ページ目をテキスト化する。
foreach my $fn(@cirq_dir_list){
`/usr/local/bin/pdftotext -f 1 -l 1 $fn | head`; #pdftotext 1Page only
print ("$fn\n");
}
my $ct= @cirq_dir_list;
print("$ct\n");
#テキストの余分な改行(空白行)を削除する
my @text_list=glob($cirq_path."*.txt");
foreach my $fn(@text_list){
my $fn3=$fn;
$fn3 =~ s/.txt/-1.txt/;
`gawk 'NF > 0' $fn > $fn3`;
print ("$fn\n");
}