cwg- bash skripta za pravljenje web albuma (v0.3.0b4)

1

cwg- bash skripta za pravljenje web albuma (v0.3.0b4)

offline
  • Pridružio: 20 Feb 2005
  • Poruke: 4505
  • Gde živiš: planeta Zemlja

Ova skripta je prešla dug put od ovog prvog teksta pa bih da naglasim gde se može videti poslednja verzija skripte:

Veb strana projekta: http://cwg.sourceforge.net (strana na Engleskom)
Test galerije: [1] [2]
Adresa za preuzimanje skripte: https://sourceforge.net/projects/cwg/files/



[nastavak originalnog teksta]
Ok trebala bi mi pomoc. Naime imam ideju a evo i kako sam ja to zamislio:

1. Unesete putanju do foldera u kome se nalaze slike
2. Skripta sve te slike smanji (ubacio sam da korisnik sam izabere velicinu)
+ da stavim opciju za brz resize slika
3. Da se iz svake slike izvuce najosnovniji info (koriscenjem file komande putem koje se da videt ime, vrsta i datum kreiranja fajla. Mogu eventualno da ubacim du komandu za velicinu mada mi to ne treba)
4. Kada se izvuce info iz svake slike da se svaka slika preimenuje u nesto tipa: slika-xx.* kako bi bilo to sve mnogo vise clean.
5. Da se kreira lista svih slika i da se za svaku tu sliku kreira link (thumbnail bi bio link a destinacija linka bi bila slika u punoj velicini)
6. Da se linkovi ubace u nekakavu bazu
7. Da se kreira index.html i da se kreiraju posebne strane za svaku sliku u punoj velicini.

Jednostavno je zar ne? Medjutim mene sada muce neka pitanja a evo i koja:
1. Kako da resim da se pojavljuju linkovi poput: predhodna slika, sledeca slika?
2. Kakav layout koristiti na sajtu?


Na drugo pitanje imam odgovor ali ne znam koliko bi to bilo dobro. Naime album moze da ima 2 kolone (zvacemo ih leva i desna kolona). U levoj koloni moze da bude lista slika (mali thumbnailovi) i ta kolona bi zauzimala 20% ekrana. Desna kolona bi posluzila za prikazivanje slika. Ja sam video na netu ideju da se koristi hover efekat (u css-u) kako bi se prikazala slika u punoj velicini. Kako to funkcionise? Pa:
1. U levoj koloni vi vidite neki thumbnail koji vam se svidja
2. Kada predjete misem preko tog thumbnaila u desnoj koloni se automatski prikazuje slika u punoj velicini.
3. Kada zelite da vidite drugu sliku onda je neophodno da samo predjete misem preko nje

Ovo je jako jednostavno napraviti pa bih time resio problem broj 1 (kreiranje linkova za "Sledecu sliku, Predhodnu sliku"...) no ipak bih da cujem ima li koj boljih ideja.

Hvala

p.s. za sada skripta ima samo 2 "tacke" stoga je skripta trenutno neupotrebljiva i ne bih jos da je kacim ovde. Rade opcije za prebacivanje u foldr sa slikama i opcija za umanjivanje slika. Na 3-oj tacki radim i ne bi trebalo da bude velikih problema.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12520
  • Gde živiš: Južni pol

Zanimljivo. Smile Nego, da li si ovo započeo zbog vežbanja BASH skriptinga? Postoji baš podosta gotovih rešenja za kreiranje web galerija.

Videću ako nađem malo vremena danas da dam mali doprinos.



offline
  • Pridružio: 20 Feb 2005
  • Poruke: 4505
  • Gde živiš: planeta Zemlja

blah... nisam nasao na netu ni jednu jedinu galeriju koja se kreira u bashu (mozda ne znam da pitam mr. google-ta kako treba). A uvek je lepo imati svoj alat Mr. Green

Salu na stranu ako ovako nesto postoji ostavite linkove ovde. Ja ih nisam nasao.

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12520
  • Gde živiš: Južni pol

Meni je nekako prirodnije za tu svrhu koristiti perl ili python.

Evo ti mala pomoć za Google:
http://www.google.com/search?q=(perl|python|bash)+gallery+script

Dopuna: 01 Nov 2008 20:24

Razmišljao sam malo o ovome. Izneću ti ideju kada razradim do kraja. Ukoliko si izabrao neko gotovo rešenje, javi da ne lupam glavu bezveze.

Mali hint: zašto generisana galerija ne bi mogla biti skinabilna. Napr: mogućnost izabira teme?

offline
  • Pridružio: 20 Feb 2005
  • Poruke: 4505
  • Gde živiš: planeta Zemlja

Moze... Juce sam se zezao sa tim (umesto da ucim za faks ja pisem skripte... blah...) i dosao sam do resenja. E sad ajmo da objasnim kako i sta sam uradio:

1. Napisao sam prvo fensi upitnike (read $ans) buduci da se od necega mora poceti. Pitanja su standardna tipa "Velicina thumbnailova, kvalitet konvertovanih slika, velicina

full slika i sl.)
2. Malo sam procackao po svojim skriptama koje sam davno pisao za batch konvertovanje slika pomocu ImageMagicka. I tako sam ubacio opciju da se u zadatom folderu

uradi sledece:
- kopiraju slike sa originalne destinacije u radni folder
- u radnom folderu da se slike konvertuju u thumbnailove i da se tim slikama doda prefix: umanjene
- u radnom folderu da se slike konvertuju u jpeg u odredjenom kvalitetu (jedan deo) da bi se potom prebacile u zeljenu rezoluciju (drugi deo). Ovaj korak pokrece 2 naredbe

(mada mislim da sam mogao i paralelno ovo da izvrsim no nema veze)
- Dalje je trebalo da se prebroje slike u direktorijumu. Za ovo sam nasao jedno gotovo resenje na netu no hteo sam da malo zasucem rukave. Buduci da sam radio u APT-u

(masinski programski jezik) vise od godinu dana ideje su mi i dalje ostale odatle pa sam se malo zamarao sa matematickim proracunima. Konkretno evo kako je izgledala

prva ideja:
- Napraviti while loop koji ce da izvrsava naredbe sve dok ciljni broj ne bude 0. ovo je malo zeznuto buduci da while nije najbolje obradio bc komandu u kombinaciji sa expr

(zadao sam opciju da dokle god broj iz tog i tog fajla bude > od nule da se while izvrsava) ovaj info pa sam tako dosao do beskonacne petlje (i sada mogu da rusim linuxe sa

ovom idejom Mr. Green ). Trebalo mi je neko malo prakticnije resenje. I onda mi je sinulo:
1. Koristicu ls -l za listanje slika u tom i tom fajlu
2. zatim cu da koristim wc za brojanje redova u tom fajlu (buduci da ce svaki red da sadrzi ime samo jednog fajla) i te vrednosti cu da dodelim nekim a i b
3. ls -1 je ravio jedan red vise pa je u pomoc dosao bc za proracunavanje pravog broja fajlova. Evo i kako:

a=`cat ./broj`
b="1"
rezultat=$(echo "scale=0; $a-$b" | bc)
echo "$bslika" > ./broj"

Ideja je inace iz Advanced Bash Shell Scripting Guide-a!
Tako sam dobio Pravi broj fajlova u galeriji i taj broj ce da stoji na svim stranama galerije.

Nakon ovoga Je neophodno da se generise lista linkova. Prvobitna ideja je bila ovakva:
1. Koristiti [g]tail -1[/b] za citanje poslednjeg reda u fajlu ./broj i ubacivanje istog u link
2. Listu linkova ubaciti u neki fajl
3. Kada se ubaci 1 link da se pozove tail -1 i da se izbrise taj red
Posto nisam znao kako da izbrisem poslednji red u fajlu ja sam potrazio drugo resenje. Razmisljao sam i razmisljao i pala mi je na pamet jedna ideja: kada sam pisao

skriptu za batch konvert audio fajlova u konzoli koristio sam komandu for * in *;... i odlucio da probam nju. Ispostavilo se da zaista radi pa sam odlucio da tako i

odradim taj deo posla. Evo koda:

for o in *; do echo "<a href=\"./fulslika-$o.html\"><img src=\"./umanjena-$o\"></a>&nbsp;" >> ./hover-linkovi; done
mv ./hover-linkovi ./../hover-linkovi

Sam link u ovom kodu je koncipiran kao u Google Picasi: slika je thumbnail a link vodi do posebne strane (kooja je ujedno i permalink te slike) gde se nalazi ta slika u punoj

velicini.

Nakon ovoga je trebalo da odradim html kod a buduci da ja volim da se zezam sa tim to je bio laksi deo posla. radi veceg fenseraja albuma je ubacen i opacity 0.5 za slike

(na hover-u je opacity 1.0) medjutim samo na glavnoj strani gde se nalaze thumbnailovi. U permalinkovima nema opacity-ja (to bi bilo pogresno iz vise razloga).

I tako sam dosao do samog kraja skripte. Na kraju sam odlucio da ovu skriptu obogatim jos jednim dodatkom: ftp uploadom! Naime, u Septembru sam editovao bashblogger

0.2 i od njega napravio jako fin blog cms (konzolni jel?) u kojem mi je na kraju uvek nesto falilo. I razmisljao sam duze vreme sve dok mi nije sinulo da mu fali upload

manager i to sam dodao. Tako sam gledao da ne gresim dusu i da odmah ubacim ftp upload. Princip je vrlo jednostavan:
1. Bicete pitani za:
- password
- ime
- server
2. Koriscenjem ncftp-a (ftp nece da uraqdi ono sto mu kazem i kod mu je prilicno "striktan" tj. previse ga tupe sa ftp komandama pa ne moze da izvrsi neke

jednostavne radnje) ce fajlovi biti prebaceni na net. U skripti vi bi trebalo da editujete putanju na vasem serveru (skripta kaze ncftp-u da, kada se uspesno konektuje, ukljuci

bell mod (da cujete bell kada se digne neki fajl), da ukljuci binaran mod (standard ali za svaki slucaj neka stoji tu) i da uradi cd u folder na serveru (kod mene on cd-uje

u folder sa fajlovima gde ce da dize sve te galerije).

Naravno ne moram da pominjem da ce skripta da sredi imena fajlova (kakao god da se fajl zove, koje god karaktere da ima oni ce da budu promenjeni u "safe web imena"

tipa: umanjena-slika-11.jpeg i fulslika-slika-12.jpeg). Mozda je glupo sto ce ovako "bedna imena" biti na svakoj strani ali to se moze promeniti (malo hackujte ono sto vam se

ne svidja). Za imena sam koristio sledeci kod:

echo "0" > ./../magija
for f in *; do a="1"; b="`cat ./../magija`"; xxx=$(echo "scale=0; $a+$b" | bc); mv "$f" slika-$xxx.jpg; echo "$xxx" > ./../magija; done
rm ./../magija


U ovoj skripti je vise matematike nego bash-a Laughing

I to je to. Kod u mojim skriptama je oduvek bio nikakav, prljav i u nekim delovima ima mnogo nepotrebnih stvari ali je uvek radio Smile

Evo jednog shoota galerije izradjene ovom skriptom:


Evo i linka do skripte:
https://www.mycity.rs/must-login.png

U ovom fajlu imate i jedan besplatan primerak glaerije Razz

p.s. Bocke, moze i ta opcija medjutim ja sam kreirao skriptu za sebe (naravno to uvek tako i pocne) pa mi ne treba vise od jednog stila. Ako pak zelis to onda bi to izgledalo

ovako (bar u ovoj skripti):
1. Izdefinisao bi vise funkcija ili nekih varijabila (valjda se ovo ovako zove)
2. Nakon toga bi napravio meni (koriscenjem case-a buduci da je on lagan za upotrebu) i pre generisanja html-ova bi izabrao taj neki stil. No verujem da si vec imao

nesto slicno na umu Smile (ili bolje buduci da duze koristis bash).

Ako budes ovo ubacio okaci skriptu ovde posto mene malko mrzi sada da to dodajem (sagoreo sam svu zelju za pisanjem bash skripta za narednih 50dana).

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12520
  • Gde živiš: Južni pol

Skinuću da vidim šta si uradio. Ako budem imao neki komentar ili primetim neki bug javljam.

A ako budem imao vremena za hakovanje, dopunjujem. Wink

Dopuna: 02 Nov 2008 16:12

.::Wizard::. ::Bocke, moze i ta opcija medjutim ja sam kreirao skriptu za sebe (naravno to uvek tako i pocne) pa mi ne treba vise od jednog stila. Ako pak zelis to onda bi to izgledalo

ovako (bar u ovoj skripti):
1. Izdefinisao bi vise funkcija ili nekih varijabila (valjda se ovo ovako zove)
2. Nakon toga bi napravio meni (koriscenjem case-a buduci da je on lagan za upotrebu) i pre generisanja html-ova bi izabrao taj neki stil. No verujem da si vec imao

nesto slicno na umu Smile (ili bolje buduci da duze koristis bash).

Ako budes ovo ubacio okaci skriptu ovde posto mene malko mrzi sada da to dodajem (sagoreo sam svu zelju za pisanjem bash skripta za narednih 50dana).


Prvo da pogledam skript. Smile

Dopuna: 05 Nov 2008 19:21

Krenuo sam nešto da petljam oko ovoga prekjuče (tačnije sve ispočetka, ali koristim i nekoliko ideja iz tvog koda), ali nikako da uhvatim vremena da završim. U nekoj sam gužvi. Kad i ako završim postavljam.

Vrlo bi me zanimalo mišljenje o kodu. Wink

offline
  • Pridružio: 20 Feb 2005
  • Poruke: 4505
  • Gde živiš: planeta Zemlja

OK... Cekamo.
Jel kod tebe radi ovo sto sam ja petljao?

Da li kod ostalih radi ova skripta?

p.s. Padaju mi na pamet "oneliner" ideje gde bi uradio svega 3-4 "for this do that" komadi. AKo budem imao zelje uradicu jos jednu verziju skripte.

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12520
  • Gde živiš: Južni pol

Napravio sam samo skelet. Ne radi jos uvek nista svrsihodno. Ali ako hoces da vidis glavnu ideju, ostavi mi email na PP. Necu da objavljujem javno nista sto nije bar delimicno gotovo. Wink

Sto se tice gornje skripte. Mrzelo me da prolazim kroz ceo proces. Samo sam pokrenuo i video da gnjavi sa pitanjima, a zatim lupio ctrl+c. Smile Ali sam zato proucio malo kod. Wink

Dopuna: 07 Nov 2008 8:50

Mislim da sam se krivo izrazio. Pod skeletom sam mislio na ovo:

.
|-- ballery
|-- ballery.conf
|-- doc
|   |-- AUTHORS
|   |-- COPYING
|   |-- ChangeLog
|   |-- INSTALL
|   |-- README
|   |-- TODO
|   `-- man
|       |-- ballery.1
|       `-- ballery.conf.1
|-- includes
|   |-- define_functions
|   |-- define_variables
|   |-- functions
|   |   |-- cmdline_opts
|   |   |-- mktemp
|   |   |-- mktempdirs
|   |   `-- usage
|   |-- release_variables
|   `-- unset_functions
`-- themes
    `-- default
        |-- css
        |   `-- style.css
        |-- footer
        |-- gallery
        |-- header
        |-- image
        |-- images
        `-- javascript

9 directories, 23 files


Sadasnji "ballery" skript:
#!/bin/sh

## Includes
if [ -e $HOME/.ballery.conf ]
then
   . $HOME/.ballery.conf
else
    . $PREFIX/ballery.conf
fi

 . $INCLUDE_DIR/define_variables
 . $INCLUDE_DIR/define_functions

## Defining the main function
main(){
   usage
}

## Calling the main function
main

## Unsetting the variables
 . $INCLUDE_DIR/release_variables
 . $INCLUDE_DIR/unset_functions


Zainteresovan sad?

offline
  • Pridružio: 20 Feb 2005
  • Poruke: 4505
  • Gde živiš: planeta Zemlja

E sad ako me ovo malo bash iskustva ne vara ti zelis da veci deo stvari definises preko funkcija jel? Ovo je meni palo na pamet i to zato sto sam mogao tako da lako dodam upite za sve (da li zelis da se konvertuje slika, da li zelis da se sacuva format slike ili da se prebaci u novi, da li zelis da primenis niz nekih image filtera (ima u imagemagicku zapanjujuce mnogo alata i opcija), da li zelis da dodas watermark...) medjutim nisam navikao na ovakvo petljanje pa... No izgleda interesantno. E sad mene zanima zasto bi pozivao eksterni fajl? Koje su prednosti takve skripte (nemoj pogresno da me razumes. Mene zanima kako da poboljsam svoj rad u bashu pa zato i pitam)?

btw pre par dana sam doradio skriptu:
- dodate su 2 teme (i naravno, sablon za dodavanje istih je glupav ali funkcionise)
- Ispravljene su neke greske ali sada ne znam koje... Nazalost jako sam lenj kada su u pitanju logovi promena.
- skripti sada ne treba nikakav eksterni fajl! Sada se sve nalazi u samoj skripti i vi treba da samo pokrenete skriptu odkle hocete (moj savet vam je da pravite sym link u /usr/bin radi brzeg pokretanja).

Link: https://www.mycity.rs/must-login.png

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12520
  • Gde živiš: Južni pol

Pogledaću. U međuvremenu proveri PP. Wink

Ko je trenutno na forumu
 

Ukupno su 987 korisnika na forumu :: 35 registrovanih, 5 sakrivenih i 947 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., asdfjklc, Bobrock1, bojankrstc, Boris90, Brana01, djuradj, FileFinder, Fog of War, HogarStrashni, HrcAk47, ivan1973, jackreacher011011, Japidson, Kibice, kikisp, Kubovac, Magistar78, Marko Marković, mercedesamg, milutin134, MiroslavD, Nikolaa11, novator, Panter, pein, pirke96, Prašinar, proka89, raptorsi, rodoljub, S2M, tomigun, virked, zbazin