#!/usr/bin/perl $VERSIJA = '0.05.15 © Karlo no DAC 2021.02.15 09:20'; $LICENCE = 'GPLv3'; $APRAKSTS = 'Veido HTML lapas balstoties uz video, titru un attēlu failiem'; sub paskaidro { &versija; print "\n" . '-' x 60 . "\n" . ' ' x 9 . "$vide{ColourInfo}-h$vide{ColourReset}\tšis teksts;\n" . ' ' x 9 . "$vide{ColourInfo}no=CELS1$vide{ColourReset}\tkur atrodami izejas faili;\n" . ' ' x 9 . "$vide{ColourInfo}uz=CELS2$vide{ColourReset}\tkur veido pamācību;\n" . ' ' x 9 . "$vide{ColourInfo}kp=CELS3$vide{ColourReset}\tkur atrodas koplietojami faili (relatīvi pret gatavo direktoriju);\n" . ' ' x 9 . "$vide{ColourInfo}l=N$vide{ColourReset}\tapstrādā failus, kuri jaunāki par 'N' minūtēm;\n" . '-' x 60 . "\n"; print "\n"; } sub versija { print "\nVersija:\t$VERSIJA\nLicence\t$LICENCE\n$vide{ColourName}$APRAKSTS$vide{ColourReset}\n"; } use Text::Markdown 'markdown'; use Image::ExifTool; # NOKLUSĒTIE MANĪGIE =======================================================# # # # # $vide{ColourAlert} = "\e[91m\e[44m"; $vide{ColourInfo} = "\e[92m"; $vide{ColourName} = "\e[93m"; $vide{ColourReset} = "\e[m"; $vide{pap_html} = 'html'; $vide{SaakumFails} = 'index.' . $vide{pap_html}; $vide{VaarduFails} = 'vaardi.' . $vide{pap_html}; $vide{AprakstuFails} = '__dirinfo'; $vide{jaunsSaturs} = '__dirinfoS'; $vide{Stilulapa} = 'css/sarakstam.css'; $vide{Virsraksts} = 'Padomi LU Dabasmājas IT lietotājiem'; $vide{Licence} = 'CC-BY-SA licence'; $vide{Autors} = 'karlis.kalviskis@lu.lv'; # Cik "runātīgam" jābūt skriptam. # 0 - Nearaksta neko. # 1 - Tika sākuma un beigu paziņojumi. # 2 - Kurā direktorijā darbojas. # 3 - Kurus failus apstrādā. $vide{RaadiKoDari} = 2; # Nosaka, kura līmeņa satura rādītāju veido. Cik dziļi atrodas, attiecībā # pret galveno satura rādītāju. $vide{KursSaturs} = 0; # Esošo un veidojamo failu atrašanās. Jaaizpilda no komandrindas. $vide{NoKurienes} = '.'; $vide{UzKurieni} = '.'; $vide{Kopdirektorija} = '.'; $vide{prgdirektorija} = '../PRG'; # Sagatavojamais video fails ar titriem $vide{pap_titri_lasa} = 'ass'; $vide{pap_titri_raksta} = 'vtt'; $vide{pap_video} = 'webm'; $vide{pap_atteeli} = ['jpg', 'png', 'gif']; $vide{pap_doc} = 'md'; $vide{pap_pdf} = 'pdf'; $vide{IconHome} = '🏠'; $vide{IconVaardi} = '📑'; $vide{IconArAtteelu} = '📷'; $vide{IconSkaidro} = '📜'; $vide{IconVideo} = '📺'; $vide{IconScenarijs} = '📖'; #ASS stilu atbilstība VTT iestatījumiem $stili{'Default'} = ''; $stili{'Default-LV'} = 'line:50% position:100% align:end size:50%'; $stili{'Default-CV'} = 'line:50% aposition:50% align:middle size:80%'; $stili{'Default-KV'} = 'line:50% position:0% align:start size:50%'; $stili{'Default-LAu'} = 'line:1 position:100% align:end size:50%'; $stili{'Default-CAu'} = 'line:1 position:50% align:middle size:80%'; $stili{'Default-KAu'} = 'line:1 position:0% align:start size:50%'; $stili{'Default-LAp'} = 'Region:LAp align:end'; $stili{'Default-KAp'} = 'Region:KAp align:start'; $vide{Vid_apaksha}=' Region: id=KAp width=50% lines=0 regionanchor=0%,100% viewportanchor=0%,100% scroll=none Region: id=LAp width=50% lines=0 regionanchor=100%,100% viewportanchor=100%,100% scroll=none '; $vide{Vid_licence}=' CC-BY-SA licence karlis.kalviskis@lu.lv '; # Masīvs atslēgvārduy satura rādītāajam #? Nav pat vēl sākts veidot. %AtsleegVaardi; # # # MAINĪGO BEIGAS ===========================================================# # Izpēta komandrindas parametrus ======================================= &paskaidro if !@ARGV; foreach (@ARGV){ if ($_ eq '-h' || $_ eq '-help' || $_ eq '--help'){ &paskaidro; exit; } elsif ($_ eq '-v'){ &versija; exit; } elsif (/^no=/){ $vide{NoKurienes} = substr ($_,3); } elsif (/^uz=/){ $vide{UzKurieni} = substr ($_,3); } elsif (/^kp=/){ $vide{Kopdirektorija} = substr ($_,3); } elsif (/^l=(\d+)/){ $vide{neVecaakiPar} = $1; } else { print "$vide{ColourInfo} Šo parametru es nepazīstu: $vide{ColourName}$_$vide{ColourReset}\n"; } } { my $kljuuda=0; if (!$vide{NoKurienes}){ print "$vide{ColourAlert} Nav norādīts, kur atrodas saveidotie faili.$vide{ColourReset}\n"; $kljuuda=1; } elsif (! -d $vide{NoKurienes}){ print "$vide{ColourAlert} Saveidoto failu direktorija „$vide{NoKurienes}” nav atrodama.$vide{ColourReset}\n" ; $kljuuda=1; } if (!$vide{UzKurieni}){ print "$vide{ColourAlert} Nav norādīts, kur veido aprakstus.$vide{ColourReset}\n"; $kljuuda=1; } elsif (! -d $vide{UzKurieni}){ print "$vide{ColourAlert} Aprakstu direktorija „$vide{UzKurieni}” nav atrodama.$vide{ColourReset}\n"; $kljuuda=1; } if ($kljuuda){ &paskaidro; exit 1 } } # --= Programmas sākums ========---------------------------------------# # # print "\nSagatavotie: $vide{NoKurienes}\nGatavie: $vide{UzKurieni}\nKopdirektorija: $vide{Kopdirektorija}\n" if $vide{RaadiKoDari}; # Apstrādāto failu skaitītājs $vide{apstraadaati_faili} = 0; $vide{izlaisti_faili} = 0; $vide{kluuda_atverot} = 0; # Veido lapas &saturam( &sameklee_failus ( 0, $vide{NoKurienes}, $vide{UzKurieni}, $vide{Kopdirektorija} ), $vide{NoKurienes}, $vide{UzKurieni}, $vide{SaakumFails} ); #? &vaardiem; print "\n\n Apstrādāto failu skaits: $vide{apstraadaati_faili}\n" if $vide{RaadiKoDari}; print "Nelaboti faili: $vide{izlaisti_faili}\n" if $vide{izlaisti_faili} && $vide{RaadiKoDari}; print "Kļūdu skaits: $vide{kluuda_atverot}\n" if $vide{kluuda_atverot} && $vide{RaadiKoDari}; print "\n\n" if $vide{RaadiKoDari}; # # # --= Programmas beigas =======----------------------------------------# # Staigā pa direktorijām un meklē failus # Apakšprogramma, kas izsauc pati sevi, līdz visas direktorijas izlasītas # Parametri: # $dziljums - cik dziļi apakšdirektorijās jau ir nokļūts; # $pusgatavi - sagatavoto failu direktorija; # $gatavi - gala rezultāta direktorija; # $kopdirektorija - koplietošans (css utt.) direktorija; # $saturs_ref - hash masīvs satura rādītajam; # $jauns - vai veido jaunu satura rādītāju. sub sameklee_failus { my ($dziljums, $pusgatavi, $gatavi, $kopdirektorija, $saturs_ref, $jauns) = @_; my %saturs = %$saturs_ref; my(@failu_saraksts, $fails); print "Skatos $pusgatavi\n" if $vide{RaadiKoDari} > 1; if (!opendir(DIREKTORIJA_NR, $pusgatavi)) { print "Diemžēl neizdevās atvērt $pusgatavi\n"; return; } # Vai dotai direktorijai javeido pašai savs satura rādītājs if (!$jauns && -e "$pusgatavi/$vide{jaunsSaturs}") { close(DIREKTORIJA_NR); my %zinas; my $zinas_ref = &par_direktoriju ("$pusgatavi/$vide{jaunsSaturs}", \%zinas); $saturs{"$gatavi/$vide{SaakumFails}"} = ($$zinas_ref{title} || $gatavi); $saturs{"$gatavi/$vide{SaakumFails}"}{citsSR} = 1; my %tukss; $tukss{'.'} = $dziljums - $saturs{'.'}; my $KursSaturs = $vide{KursSaturs}; $vide{KursSaturs} = $dziljums; &saturam(&sameklee_failus ($dziljums, $pusgatavi, $gatavi, '../'x$dziljums . $vide{Kopdirektorija}, \%tukss, 1), $pusgatavi, $gatavi, $vide{SaakumFails}, $dziljums); $vide{KursSaturs} = $KursSaturs; } else { @failu_saraksts = readdir(DIREKTORIJA_NR); close(DIREKTORIJA_NR); foreach $fails (@failu_saraksts) { if ($fails =~ /^\./) { next; } # Vai parasts fails if (-f "$pusgatavi/$fails"){ # Failus salīdzina ar zināmiem failu paplašinājumiem. # Netiks ņemti vērā lielie/mazie burti # Titru fails if ($fails =~ /\.$vide{pap_titri_lasa}$/i) { $saturs_ref = &paarveido ($fails, $dziljums, $pusgatavi, $gatavi, $kopdirektorija, \%saturs); %saturs = %$saturs_ref; } } # Lai lieki negrabinātu disku, izmanto mainīgo _, ko saguva ar if salīdzinājumu # Pārbauda, vai dotajā direktorijā nav apakšdirektoriju elsif (-d _){ $saturs_ref = &sameklee_failus($dziljums + 1, "$pusgatavi/$fails", "$gatavi/$fails", "$kopdirektorija/$fails", \%saturs); %saturs = %$saturs_ref; } } $saturs_ref = &vai_pdf($gatavi, \%saturs); %saturs = %$saturs_ref; } return \%saturs; } # Veido video failu HTML lapas # Parametri: # $kuru - kuru video failu apstrādāt # $dziljums - cik dziļi apakšdirektorijās jau ir nokļūts; # $pusgatavi- sagatavoto failu direktorija; # $gatavi- gala rezultāta direktorija; # $kopdirektorija - koplietošans (css utt.) direktorija; # $saturs_ref - hash masīvs satura rādītajam; sub paarveido { my ($kuru, $dziljums, $pusgatavi, $gatavi, $kopdirektorija, $saturs_ref) = @_; my %saturs = %$saturs_ref; my (@teksts, $rinda, $Nr, $Virsraksts, $failavards, $labotspirms, @apraksti); my($Layer, $Start, $End, $Style, $Name, $MarginL, $MarginR, $MarginV, $Effect, $Text); my $neVecaakiParDotais = $vide{neVecaakiPar}; $kuru =~ /(.*)\.$vide{pap_titri_lasa}$/i; $failavards = $1; # Vai jāpārbauda labotā faila vecums if ($neVecaakiParDotais){ my($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat("$pusgatavi/$kuru"); print 'Labots pirms ' . (time - $mtime) / 60 . " minūtēm\n"; $labotspirms = (time - $mtime) / 60; } else { $neVecaakiParDotais = 1; $labotspirms = 0; } if ($neVecaakiParDotais > $labotspirms){ if (open FAILS, "<$pusgatavi/$kuru") { @teksts = ; close FAILS; # Atver failu, kur ierakstiit print "Veido: $gatavi/$failavards.$vide{pap_titri_raksta}\n" if $vide{RaadiKoDari} > 2; if (open(JAUNAIS, ">$gatavi/$failavards.$vide{pap_titri_raksta}")) { $vide{apstraadaati_faili} += 1; my $kursieraksts; foreach $rinda (@teksts){ if ($rinda =~ /^\s*Dialogue:\s*(.*)$/i){ # Slīpraksts, trekns utt. ($Layer, $Start, $End, $Style, $Name, $MarginL, $MarginR, $MarginV, $Effect, $Text) = split /,/, $1, 10; $Text =~ s/{\\(.)1}/<$1>/gims; $Text =~ s/{\\(.)1\\(.)1}/<$1><$2>/gims; $Text =~ s/{\\(.)0}/<\/$1>/gims; $Text =~ s/{\\(.)0\\(.)0}/<\/$1><\/$2>/gims; # Pāreja uz jaunu rindu $Text =~ s/\\n/\n
/gims; $apraksti[0][$kursieraksts] = "$Start"; $apraksti[2][$kursieraksts] = "$End"; $apraksti[1][$kursieraksts++] = $Text; $Text =~ s/
//gims; print JAUNAIS $Nr++ . "\n0$Start" . "0 --> 0$End" . "0 $stili{$Style}\n$Text\n\n"; } elsif ($rinda =~ /^\s*Title:\s*(.*)$/i){ $Virsraksts = $1; print JAUNAIS "WEBVTT - $Virsraksts\n\n"; print JAUNAIS "NOTE $vide{Vid_licence} $vide{Vid_apaksha}\n\n"; } } close JAUNAIS; # Veido HTML failus if ($vide{pap_html}){ my $atteli_ref = &vai_atteeli ($failavards, $dziljums, $pusgatavi, $gatavi, $kopdirektorija); my $htmlfails = "$gatavi/$failavards.$vide{pap_html}"; if (open(JAUNAIS, ">$htmlfails")) { $direktorija =~ /.*\/([^\/]+)\/$/; $vieta = $1; my %paarsuuti; $paarsuuti{title} = $Virsraksts; $paarsuuti{dziljums} = $dziljums; $paarsuuti{dziljums_maajai} = $dziljums - $vide{KursSaturs}; $paarsuuti{maajup} = "./$vide{SaakumFails}"; $paarsuuti{izdrukaajams} = "$failavards\[\].$vide{pap_html}" if %$atteli_ref; print JAUNAIS &galvinja(\%paarsuuti); print JAUNAIS &saakums(\%paarsuuti); print JAUNAIS " \n
"; my @atteelu_laiki = sort {$a <=> $b} keys %$atteli_ref; my ($laiks1, $laiks2, $laiks0); for ($i = 0; $i < $kursieraksts; $i++){ if (@atteelu_laiki) { $apraksti[0][$i] =~ /(\d+)\:(\d+):(\d+\.\d+)/; $laiks1 = (3600 * $1) + (60 * $2) + $3; $apraksti[2][$i] =~ /(\d+):(\d+):(\d+\.\d+)/; $laiks2 = (3600 * $1) + (60 * $2) + $3; while (@atteelu_laiki && $atteelu_laiki[0] < $laiks1) { $laiks0 = shift @atteelu_laiki; print JAUNAIS "\n"; } } print JAUNAIS "\n"; } if (@atteelu_laiki) { while ($atteelu_laiki[0]) { $laiks0 = shift @atteelu_laiki; print JAUNAIS "\n"; } } print JAUNAIS "
$vide{IconArAtteelu}$$atteli_ref{$laiks0}{title}
$apraksti[0][$i]
$apraksti[2][$i]
"; if (@atteelu_laiki) { if ($atteelu_laiki[0] < $laiks2) { $laiks0 = shift @atteelu_laiki; print JAUNAIS "$vide{IconArAtteelu}"; } } print JAUNAIS "$apraksti[1][$i]
$vide{IconArAtteelu}$$atteli_ref{$laiks0}{title}
\n
\n
\n"; print JAUNAIS &aste (\%paarsuuti); close JAUNAIS; # Reģistrē failu satura rādītājam $htmlfails =~ s@^$vide{UzKurieni}/@@; $saturs{$htmlfails}=$Virsraksts; } } } else { print "Nevar ierakstīt failā $gatavi/$failavards.$vide{pap_titri_raksta}\n"; $vide{kluuda_atverot}++; } } else { print "Nevar atvērt failu $gatavi/$kuru \n"; $vide{kluuda_atverot}++; } } else{ $vide{izlaisti_faili}++; } return \%saturs; } # Meklē attēlus # Parametri: # $kuru - kuram video failam meklēt # $dziljums - cik dziļi apakšdirektorijās jau ir nokļūts; # $pusgatavi- sagatavoto failu direktorija; # $gatavi- gala rezultāta direktorija; # $kopdirektorija - koplietošans (css utt.) direktorija. # Atgriež atsauci uz vārdisko masīvu ar pieejamiem attēliem. sub vai_atteeli{ my ($kuru, $dziljums, $pusgatavi, $gatavi, $kopdirektorija) = @_; my ($fails, @failu_saraksts, $pap, %atrastie); if (opendir(DIREKTORIJA_NR, $pusgatavi)) { @failu_saraksts = readdir(DIREKTORIJA_NR); close(DIREKTORIJA_NR); foreach $fails (@failu_saraksts) { if ($fails =~ /^\./) { next; } # Vai parasts fails if (-f "$pusgatavi/$fails"){ # Failus salīdzina ar zināmiem failu paplašinājumiem. foreach $pap (@{$vide{pap_atteeli}}){ if ($fails =~ /^$kuru\[(.*)\]\.$pap$/) { my $sekundes = $1; my $html; print "Atradu: $pusgatavi/$fails\n" if $vide{RaadiKoDari} > 2; if (open (APRAKSTS, "<$pusgatavi/$kuru\[$sekundes\].$vide{pap_doc}")) { my $viss_teksts = join "\n", ; close APRAKSTS; $html = markdown($viss_teksts); } # Attēlam nav apraksata faila else { $html = "

$fails

"; } if (open (APRAKSTS, ">$gatavi/$kuru\[$sekundes\].$vide{pap_html}")) { $html =~ s/

(.*?)<\/h1>//i; my $Virsraksts = $1; my %paarsuuti = ( title => $Virsraksts, dziljums => $dziljums, video => "./$kuru.$vide{pap_html}", att => $fails, izdrukaajams => "$kuru\[\].$vide{pap_html}" ); print APRAKSTS &galvinja(\%paarsuuti); print APRAKSTS &saakums(\%paarsuuti); my $paarsuuti_ref = &kuri_atteeli ("$kuru\[$sekundes\]", $gatavi, \%paarsuuti); print APRAKSTS &ievieto_ateelu($$paarsuuti_ref{att}, $$paarsuuti_ref{att_p}, 'Att_viens'); print APRAKSTS "
\n$html\n
"; print APRAKSTS &aste($paarsuuti_ref); close APRAKSTS; $atrastie{$sekundes}{pamats} = $kuru; $atrastie{$sekundes}{title} = $$paarsuuti_ref{title}; $atrastie{$sekundes}{teksts} = $html; my $pagaidu; foreach $pagaidu (keys %$paarsuuti_ref) { if ($pagaidu =~ /^att/) { $atrastie{$sekundes}{$pagaidu} = $$paarsuuti_ref{$pagaidu}; } } } last; } } } } } else { print "Diemžēl neizdevās atvērt $pusgatavi\n"; return; } # Izveido kopējo lapu ar attēliem if (open (APRAKSTS, ">$gatavi/$kuru\[\].$vide{pap_html}")) { my %paarsuuti; my $paarsuuti_ref = &par_direktoriju ("$pusgatavi/$vide{AprakstuFails}", \%paarsuuti); $$paarsuuti_ref{dziljums} = $dziljums; $$paarsuuti_ref{video} = "./$kuru.$vide{pap_html}"; print APRAKSTS &galvinja($paarsuuti_ref); print APRAKSTS &saakums($paarsuuti_ref); print APRAKSTS "\n"; my $pagaidu; foreach $pagaidu (sort {$a <=> $b} keys %atrastie) { print APRAKSTS "\n"; } print APRAKSTS "
" . &ievieto_ateelu("$atrastie{$pagaidu}{pamats}\[$pagaidu\].$vide{pap_html}", $atrastie{$pagaidu}{att_m}); print APRAKSTS "

$atrastie{$pagaidu}{title}

$atrastie{$pagaidu}{teksts}
\n"; print APRAKSTS &aste($paarsuuti_ref); close APRAKSTS; } return \%atrastie; } #Vai ir citi attēla izmēri # Mekle punktu un burtus pirms palašinajuma, piemeram, 'vaards.p.png' # bez - attēls labakā kvalitatē. # .p - vidēja izmēra un kvalitātes attēls (800×). # .m - atēls kopskatam (200×). # .s - sīkattēls satra rādītājam (99×). # Saņem: # $kuru - faila vārds (bez paplašinajuma); # $vieta - kurā diirektorijā. # Saņem un nosūta: # $mainiigie_ref - atsauce uz vārdisko masīvu, kurā ievietot atrasto # attēlu vārdus. sub kuri_atteeli { my ($kuru, $vieta, $mainiigie_ref) = @_; foreach $p ('s', 'p', 'm') { foreach $pap (@{$vide{pap_atteeli}}){ $$mainiigie_ref{'att_' . $p} = "$kuru.$p.$pap" if -e "$vieta/$kuru.$p.$pap"; } } return $mainiigie_ref; } # Meklē pdf failus # Parametri: # $gatavi- gala rezultāta direktorija; # $saturs_ref - atsauce uz # Atgriež atsauci uz statura rādītāja masīvu. sub vai_pdf{ my ( $gatavi, $saturs_ref) = @_; my ($fails, @failu_saraksts); my %saturs = %$saturs_ref; my $atsleegai = $gatavi; $atsleegai =~ s/^$vide{UzKurieni}\///; my $exifTool = new Image::ExifTool; $exifTool->Options(Unknown => 1); if (opendir(DIREKTORIJA_NR, $gatavi)) { @failu_saraksts = readdir(DIREKTORIJA_NR); close(DIREKTORIJA_NR); foreach $fails (@failu_saraksts) { # Vai parasts un nepaslēpts fails if ($fails =~ /^\./) { next; } elsif (-f "$gatavi/$fails"){ if ($fails =~ /\.$vide{pap_pdf}$/) { print "Atrasts $atsleegai/$fails\n" if $vide{RaadiKoDari} > 2; my $info = $exifTool->ImageInfo("$gatavi/$fails"); my $virsraksts = $exifTool->GetValue('Title'); my $teema = $exifTool->GetValue('Subject'); my $nosaukums; if ($virsraksts) { $nosaukums = $virsraksts; if ($teema) { $nosaukums .= " ($teema)"; } } elsif ($teema) { $nosaukums = "$teema"; } else { $nosaukums = $fails; } $saturs{"$atsleegai/$fails"} = $nosaukums; } } } } return \%saturs; } # Veido satura rādītāju # Parametri: # $saturs_ref - atsauce uz statura rādītāja masīvu # $no_kurienes - kurā direktorijā ir izejas faili # $kura_dir - kurā direktorijā veidot # $kurs_fails - kā nosaukt failu # $dziljums - cik talu no pamatdirektorijas sub saturam { my ($saturs_ref, $no_kurienes, $kura_dir, $kurs_fails, $dziljums) = @_; my %saturs = %$saturs_ref; my $kur_rakstiit = "$kura_dir/$kurs_fails"; if (open(JAUNAIS, ">$kur_rakstiit")) { my ($direktorija, $direktorijaV, $direktorijaVcSR, $fails); my (%paarsuuti, %pagaidu); my $pagaidu_ref = &par_direktoriju ("$no_kurienes/$vide{jaunsSaturs}", \%pagaidu); $paarsuuti{dziljums} = $dziljums; $paarsuuti{title} = ($$pagaidu_ref{title} || $vide{Virsraksts}); if ($dziljums > 0) { $paarsuuti{maajup} = $vide{SaakumFails}; $paarsuuti{dziljums_maajai} = $$saturs_ref{'.'}; } print JAUNAIS &galvinja(\%paarsuuti); print JAUNAIS &saakums(\%paarsuuti); print JAUNAIS "
\n"; print JAUNAIS "
    \n"; delete($saturs{'.'}); my (@SadaliitaAtsleega1, @SadaliitaAtsleega2, $liimenis, $ni, $atslega, %dirsaturs, $dirsaturs_ref, $atsauce, $uzzinjai); foreach $fails (sort(keys %saturs)){ #Atslēgu veido faila ceļš $direktorija = $fails; $direktorija =~ s@[^/]*$@@; $atsauce = "$saturs{$fails}"; # Norāde uz citu satura rādītaju if ($saturs{$fails}{citsSR}){ print JAUNAIS "

    $atsauce

    \n"; } else { # Pirmā reize if (@SadaliitaAtsleega1 == 0){ @SadaliitaAtsleega1 = split '/', $direktorija; @SadaliitaAtsleega2 = @SadaliitaAtsleega1; $liimenis = @SadaliitaAtsleega1 - 1; for ($ni = ($dziljums || 0) ; $ni <= $liimenis; $ni++){ $atslega = join '/', @SadaliitaAtsleega1[($dziljums || 0)..$ni]; $uzzinjai = join '/', @SadaliitaAtsleega1[0..$ni]; %dirsaturs = (); $dirsaturs_ref = &par_direktoriju ("$vide{NoKurienes}/$uzzinjai/$vide{AprakstuFails}", \%dirsaturs); print JAUNAIS "
  • \n
      \n"; } } else { @SadaliitaAtsleega1 = (); @SadaliitaAtsleega1 = split /\//, $direktorija; my $atshkjiras = &nav_vienaadi (\@SadaliitaAtsleega1, \@SadaliitaAtsleega2); if ($atshkjiras ne 'F') { for ($ni = ($liimenis) ; $ni >= $atshkjiras; $ni--){ print JAUNAIS "
    \n
  • \n"; } $liimenis = @SadaliitaAtsleega1 - 1; @SadaliitaAtsleega2 = @SadaliitaAtsleega1; for ($ni = $atshkjiras ; $ni <= $liimenis; $ni++){ $atslega = join '/', @SadaliitaAtsleega1[($dziljums || 0)..$ni]; $uzzinjai = join '/', @SadaliitaAtsleega1[0..$ni]; %dirsaturs = (); $dirsaturs_ref = &par_direktoriju ("$vide{NoKurienes}/$uzzinjai/$vide{AprakstuFails}", \%dirsaturs); print JAUNAIS "
  • \n
      \n"; } } } print JAUNAIS "
    • $atsauce
    • \n"; } } for ($ni = ($liimenis) ; $ni >= ($dziljums || 0); $ni--){ print JAUNAIS "
    \n
  • \n"; } print JAUNAIS "
\n
\n"; print JAUNAIS &aste (\%paarsuuti); close JAUNAIS; } else { print "$vide{ColourAlert}Nevar izveidot satura rādītāju «$vide{ColourName}$kur_rakstiit$vide{ColourAlert}»$vide{ColourReset}\n" } } # Veido vārdisko satura rādītaju #? Nav sākts veidot. sub vaardiem{ my ($saturs_ref, $kur_rakstiit, $dziljums) = @_; my %saturs = %$saturs_ref; if (open(JAUNAIS, ">$kur_rakstiit")) { close JAUNAIS; } else { print "$vide{ColourAlert}Nevar izveidot vārdisko rādītāju «$vide{ColourName}$kur_rakstiit$vide{ColourAlert}».$vide{ColourReset}\n" } } # Izlasa dirinfo failu # $fails - kuru lasīt # $saturs_ref - atsauce uz vardisko masīvu saturam sub par_direktoriju { my ($fails, $saturs_ref) = @_; local *FAILS; if (open(FAILS, "<$fails")) { my @saturs1 = ; close FAILS; chomp @saturs1; my @saturs = grep (!/^\s*$/, @saturs1); foreach (@saturs){ /\s*(\S*)\s+(.*)$/; $$saturs_ref{$1} = $2; } } return $saturs_ref; } # Pārbauda, vai masīvi atšķiras # Nosūta salīdzinamos masīvus # Atgriež pirmā ieraksta, kurš atšķiras, kārtas numuru, vai # 'F', ja masīvi vienādi. sub nav_vienaadi { my($m1, $m2) = @_; my $l1 = @$m1; my $l2 = @$m2; my ($mazs, $ni); my $atskiras = 'F'; $l1 < $l2 ? $mazs = $l1 : $mazs = $l2; $atskiras = $mazs if $l1 != $l2; for ($ni = 0 ; $ni < $mazs; $ni++){ if ($$m1[$ni] ne $$m2[$ni]) { $atskiras = $ni; last; } } return $atskiras; } # Izveido html lapas galviņas tekstu # $mainiigie_ref - atsauce uz vardisko masīvu, kurā: # dziljums - cik tālu no pamatdirektorijas; # keywords - atslēgvārdi; # stils - stilu lapa, kurai jaatrodos kopēja direktorijā; # title - lapas virsraksts. sub galvinja { my ($mainiigie_ref) = @_; $$mainiigie_ref{stils} = ($$mainiigie_ref{stils} || $vide{Stilulapa}); my $teksts; $teksts .= "\n\n" . ($$mainiigie_ref{title} || $vide{Virsraksts}) . "\n" . "\n" . "\n"; $teksts .= "\n"; $teksts .= "\n\n"; return $teksts; } # Izveido html lapas sākuma tekstu # $mainiigie_ref - atsauce uz vardisko masīvu, kurā: # dziljums - cik tālu no pamatdirektorijas; # dziljums_maajai - majas lapas dziljums; # maajup - norāde uz mājas lapu; # title - lapas virsraksts; # video - lapa ar video. sub saakums { my ($mainiigie_ref) = @_; my $teksts = "
\n"; if ($$mainiigie_ref{maajup}) { $teksts .= " $vide{IconHome} "; } if ($$mainiigie_ref{video}) { $teksts .= " $vide{IconVideo} "; } if ($$mainiigie_ref{izdrukaajams}) { $teksts .= " $vide{IconSkaidro} "; } $teksts .= "
\n"; $teksts .= "

" . ($$mainiigie_ref{title} || $vide{Virsraksts}) . "

\n"; return $teksts; } # Izveido attēla ievietošanas tekstu # Saņem: # $att - labākās kvalitātes attēls; # $att_p - attēls, kuru jāievieto; # $klase - stila klase, kuru piešķirt. # Nosūta sagatavotu html tekstu. sub ievieto_ateelu { my ($att, $att_p, $klase) = @_; my $teksts; if ($klase) { $teksts = "
\n"; } if ($att && $att_p) { $teksts .= "\n"; } $teksts .= "\n"; if ($att && $att_p) { $teksts .= "\n"; } if ($klase) { $teksts .= "
\n"; } return $teksts; } # Izveido html lapas nobeiguma tekstu # $mainiigie_ref - atsauce uz vardisko masīvu, kurā: # autors - lapas autors; # datumsA - attēla izveides laiks; # datumsT - teksta izveides laiks; # datumsV - video izveides laiks; # dziljums - cik tālu no pamatdirektorijas; # licence - ar kādu licenci saturs izplatāms. sub aste { my ($mainiigie_ref) = @_; my $teksts .= "\n" . "\n" . "\n" . "
Lapu izstrāde izmantota programmatūra
Lapu izskatam izmantotie stili
$vide{Licence} © $vide{Autors}
\n" . "\n\n"; return $teksts; }