• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Skrypt BASHA do tworzenia albumu ze zdjęciami w html-u

VPS Starter Arubacloud
+4 głosów
517 wizyt
pytanie zadane 13 września 2016 w Nasze projekty przez obl Maniak (51,280 p.)
edycja 1 października 2016 przez obl

Napisałem sobie kiedyś ze dwie aplikacje, które tworzą album zdjęć html jedną w Qt pod Linuksa i jedną w C# pod Windowsa, zastanawiałem się jednak jakby to wyglądało (tak mniej więcej) w BASH-u i dlatego napisałem sobie taki mały skrypt, który zamieściłem na stronie tutaj.

Skrypt działa na Linuksie i trzeba go zapisać w pliku sh w miejscu zdjęć, na podstawie których ma być utworzony album. Uruchomienie z konsoli: sh ./html_gen2.sh

Edit:

Trochę podrasowałem skrypt teraz do jego poprawnego działania konieczna jest obecność w systemie powłoki BASH w wersji 4+, ale za to można zrobić coś takiego:

bash html_gen.sh body_color=#ff9955 nav_color=#ffccaa links_color=#c04d00 img_width=250 files_on_page=50

Czyli można zmienić domyślne ustawienia wyglądu strony oraz szerokości tworzonych miniatur zdjęć.

Kod skryptu wrzuciłem tutaj

1 odpowiedź

+1 głos
odpowiedź 13 września 2016 przez Benek Szeryf (90,690 p.)
wybrane 13 września 2016 przez obl
 
Najlepsza

Świetny, prosty skrypt. Mam kilka drobnych uwag. Linię 4. zmieniłbym na:

files_list=$(ls -R 2>/dev/null *.jpg *.JPG *.gif *.GIF *.png *.PNG); # tworzenie listy plików

Dzięki temu, jeśli w katalogu nie będzie zdjęć któregoś typu, to komunikaty polecenia ls zostaną przekierowane na standardowe wyjście błędów i nie będą widoczne na ekranie. Jeśli wypisujesz już jakieś komunikaty diagnostyczne na ekran, mowa o liniach: 10 i 12, to można by je opisać:

echo "Liczba plików: $val"; # wyświetlam ile plików znaleziono
...
echo "Liczba podstron: $nrof"; # wyświetlam liczbę podstron

Poza tym warto sprawdzić czy katalog o nazwie folder już nie istnieje, by go nie nadpisać:

if [ -d folder ]; then
  mkdir inna_nazwa
fi

Zmniejszyłbym też ilość maksymalnej liczby miniatur na podstronę, bo jest trochę przewijania. Ponadto liczba ta powinna być podzielna przez 3 bez reszty, tak by kompozycja była domknięta (miniatury tworzyły duży prostokąt) przy całej wypełnionej podstronie. By wywołać skrypt wystarczy użyć:

sh html_gen2.sh

Lub dodać do pierwszej linii skryptu dyrektywę interpretera, zmienić uprawnienia pliku i wywołać w bieżącym katalogu, kolejno:

#!/bin/bash
...
chmod 755 html_gen2.sh
./html_gen2.sh

Poza tym dobra robota.

komentarz 13 września 2016 przez obl Maniak (51,280 p.)
Dzięki za konstruktywną krytykę. Ten pierwszy sposób przekierowania wyświetlania komunikatów błędów muszę przetestować, jak okaże się, że działa to poprawię. Co do drugiego, to już takie proste nie jest bo np. niech będzie ten folder o nazwie "folder" i niech zaistnieje taka sytuacja, że ten folder już istnieje - to według twojego podejście powinienem utworzyć inny folder znów z podaną na sztywno nazwą. A co jak ktoś odpali skrypt podwójnie? Myślę, że trzeba by zapytać najpierw czy czasem użytkownik nie chce go nadpisać, jak chce to nadpisać ten folder. A jak nie to zapytać trzeba by o inną nazwę i w pętli sprawdzać, czy taki folder istnieje.

Przyznaję się szczerze to jest ta część roboty programisty, której nienawidzę.
komentarz 13 września 2016 przez Benek Szeryf (90,690 p.)

Ten pierwszy sposób przekierowania wyświetlania komunikatów błędów muszę przetestować, jak okaże się, że działa to poprawię.

Działa, bo sprawdzałem :)

Co do drugiego, to już takie proste nie jest bo np. niech będzie ten folder o nazwie "folder" i niech zaistnieje taka sytuacja, że ten folder już istnieje (...)

Zgadza się, w zasadzie nie chciałem Ci pisać jak ja bym to implementował, tylko raczej chodziło mi by zasygnalizować Ci problem. Oczywiście może się zdarzyć tak, że ten zapasowy katalog już istnieje. Najpierw zmieńmy nazwę folder na bardziej konkretną pod to zadanie, np. pictures. Zabezpieczyłbym się w ten sposób, że tworzyłbym kolejne katalogi z nazwą wzorcową, np. picturesNR, gdzie NR to konsekutywne liczby naturalne. Ten kod pozwoli Ci to zrealizować:

#!/bin/bash
cat=pictures
NR=1

if [ -d $cat ]
then
	while [ -d ${cat}${NR} ]
	do
		NR=$[NR + 1]
	done
	cat=${cat}${NR}
fi

mkdir $cat

Jest to gotowy skrypt. Jeśli w katalogu roboczym nie ma żadnego katalogu rozpoczynającego się od znaków pictures, to taki katalog zostanie utworzony. Jeśli jest, to utworzony zostanie pictures1. Jeśli istnieje ciąg katalogów pictures1, ..., pictures8, to skrypt utworzy katalog pictures9. A jeśli w podanym ciągu zabraknie np. pictures5, to właśnie ten katalog zostanie stworzony. Możesz sobie to przetestować i zaimplementować w swoim programie.

komentarz 13 września 2016 przez obl Maniak (51,280 p.)
A wiesz, ja to już obsłużyłem i wstawiłem u siebie na stronę, chociaż trochę inaczej bo żem użytkownika do roboty zaprzęgł, ale twój pomysł mi się też podoba. Mój jest gorszy bo użytkownik musi podać odpowiednią nazwę, a z drugiej strony lepszy bo daje użytkownikowi wolną wolę :)

Podobne pytania

0 głosów
0 odpowiedzi 225 wizyt
pytanie zadane 21 czerwca 2021 w Nasze projekty przez mattaha Użytkownik (690 p.)
0 głosów
0 odpowiedzi 165 wizyt
pytanie zadane 29 grudnia 2016 w Nasze projekty przez Michał Muzyka Pasjonat (24,080 p.)
0 głosów
1 odpowiedź 121 wizyt
pytanie zadane 24 marca 2018 w Inne języki przez focused Użytkownik (580 p.)

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...