[[ハム関連]]
*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");
 }

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS