Kuvablogisoftan ensimmäinen kunnollinen versio alkaa nyt olla valmis. Monia kiinnostanee, miten koko blogi on tehty, joten tässä jutussa on hieman teknisempää kuvausta koko systeemin toiminnasta.
Otan kuvat Nokia 7650 -kamerakännykällä ja lähetän ne edelleen eteenpäin sähköpostina. Koska kuvat lähtevät GPRS-datayhteyden yli, tiedonsiirtokulut eivät tule kovin kalliiksi. Yhden valokuvan lähettämiseen kuluu kaistaa kuvasta riippuen noin 30-50 kilotavua – rahassa siis n. 5-15 senttia (liittymätyypistä riippuen). Huomattava ero 59 sentin hintaiseen MMS-viestiin verrattuna!
L�het�n valokuvan sis�lt�v�n s�hk�postin omaan s�hk�postiosoitteeseeni. Kun se saapuu palvelimelle, viesti viedään ohjelmallisesti käsiteltäväksi. Olen tehnyt sähköpostipalvelimelleni procmaililla suodattimen, joka vie tietyllä otsikolla varustetut viestit ohjelmalle. Muut postit menevät edelleen normaalisti sähköpostilaatikkooni.
Suodattimen asetuksia sisältävä .procmailrc -tiedosto näyttää tältä:
:0:
* ^Subject:.*taikasana
| 7650.sh
Taikasanan paikalla on salainen sana, jolla otsikolla lähetetyt postit lisätään kuvakansioon. T�m� siksi, ettei mik� tahansa minulle l�hetetty s�hk�postiliite p��tyisi Pinseriin.
Seuraavaksi viesti siirretään käsiteltäväksi skriptille nimeltään 7650.sh. Se näyttää tällaiselta:
#!/bin/sh
#
# purkaa kamerakännykästä tulevan sähköpostin (kuva liitteenä)
# ja sijoittaa kuvan selityksineen IDS:n kuva-albumiin.
# sähköpostin rungosta tulee kuvateksti.
#
# pohjautuu pekka haaviston ja mika niemisen koodiin
# samik 24-26.12.2002
# IDS:n kansion sijainti
root="vaihda tähän kuvakansion sijainti"
descroot="vaihda tähän kuvatekstikansion sijainti (album-data)"
# väliaikaiskansio
mkdir ~/.$$
cd ~/.$$
# puretaan viestin sisältö sinne
~/munpack
# käydään läpi tuloksena tulleet tiedostot
for i in *.jpg
do
# korjataan sulkujen tilalle tulevat X-kirjaimet nätimmiksi
ii=`echo $i | perl -p -e 's/X(\d+)X/_$1/g'`
# otetaan nimi erilleen
a=`basename $i .jpg`
aa=`basename $ii .jpg`
# tehdään kansionnimet päivämäärän mukaan
kk=`date "+%m-%Y"`
pp=`date "+%d"`
kkdir="${root}/${kk}"
ppdir="${root}/${kk}/${pp}"
dkkdir="${descroot}/${kk}"
dppdir="${descroot}/${kk}/${pp}"
# luodaan kansiot tarvittaessa
if [ ! -d $kkdir ]
then
mkdir $kkdir
chmod g+rwx,o+rx $kkdir
fi
if [ ! -d $ppdir ]
then
mkdir $ppdir
chmod g+rwx,o+rx $ppdir
fi
if [ ! -d $dkkdir ]
then
mkdir $dkkdir
chmod g+rwx,o+rx $dkkdir
fi
if [ ! -d $dppdir ]
then
mkdir $dppdir
chmod g+rwx,o+rx $dppdir
fi
# siirretään kuvat IDS:ään
mv $i ${ppdir}/$ii
cat $a.desc | perl -p -e \
's/\xc3\xa4/ä/g;s/\xc3\xb6/ö/g;s/\xc3\x84/Ä/g;s/\xc3\x96/Ö/g;' \
> ${dppdir}/${aa}_desc.txt
chmod 664 ${ppdir}/$ii
chmod 664 ${dppdir}/${aa}_desc.txt
done
# poistetaan väliaikaistiedostot
rm -rf ~/.$$
N�ytt�� ehk� monimutkaiselta, mutta k�yt�nn�ss� se ei ole sit� lainkaan. Mit� ohjelma siis tekee?
- Ohjelma purkaa munpack-komennolla sille annetun s�hk�postiviestin paloiksi. Liitteet otetaan erilleen ja samoin varsinainen viestin runko. Tuloksena on joukko tiedostoja, esim. kuva1.jpg ja kuva1.desc. Desc-tiedosto sis�lt�� viestin runkoon kirjoitetun selitystekstin. Kaikki tiedostot laitetaan niit� varten luotuun v�liaikaiseen hakemistoon.
- Seuraavaksi ohjelma k�y l�pi hakemistossa olevat jpg-tiedostot. Ensi t�ikseen se siivoaa tiedostojen nimet. Kamerak�nnyk�ss� tiedostojen nimet sis�lt�v�t sulkuja, ellei niit� ole erikseen nimetty joksikin muuksi. Munpack kuitenkin muuttaa sulut X-kirjaimiksi. Sen vuoksi tekstit tyyliin XnumeroX muutetaan muotoon _numero. Esim. Kuva(1).jpg muuttuu muotoon Kuva_1.jpg. IDS muuttaa my�hemmin viel� alleviivausmerkin v�lily�nniksi, joten kuvagalleriassa se n�kyy muodossa “Kuva 1”.
- Sitten kuvista otetaan tiedostonnimet talteen. Muuttuja i sis�lt�� kuvatiedoston alkuper�isen nimen, ii siivotun nimen. Muuttuja a sis�lt�� nimen ilman jpg-tarkenninta, aa saman siivotussa muodossa.
- Sen j�lkeen valmistetaan hakemistojen nimet p�iv�m��ri� varten. Kuvathan tallennetaan p�iv�kohtaisiin hakemistoihin, joten niiden nimet t�ytyy luoda. Toiseen tulee kuukausi, v�liviiva ja vuosi, toiseen taas p�iv�n numero. Eli esim. kuvakansio/Kuvablogi/12-2002/27
- Ohjelma testaa, ovatko tarvittavat hakmeistot olemassa. Jos niit� ei l�ydy, ne luodaan.
- Lopuksi tiedostot siirret��n IDS:n kansioihin. IDS:lle riitt��, kunhan jpg-kuva siirret��n varsinaiseen kuvahakemistoon ja selitysteksti vastaavaan selitystekstihakemistoon. Kuvagalleriasofta tekee loput. Kamerasta tuleva selitysteksti on UTF-8 -muodossa, joka ei oikein sovellu Pinseriss� esitett�v�ksi. Sen vuoksi selitysteksti muunnetaan hurjan n�k�isell� Perl-koodin p�tk�ll� oikeaan muotoon.
- Lopuksi viel� v�liaikaishakemisto siivotaan pois ja kaikki on valmista.
Jos haluat itsellesi vastaavan systeemin, kannattaa ensin tarkistaa ett� k�yt�ss�si on kaikki tarvittava:
- Kamerak�nnykk�, johon on tehty tarpeelliset s�hk�postiasetukset (t�m�n systeemi on testattu Nokia 7650:lla, en tied� miten muunmerkkiset puhelimet l�hett�v�t kuvia)
- Unix-pohjainen s�hk�postipalvelin, jossa on k�yt�ss� procmail tai vastaava suodatinj�rjestelm�.
- Munpack-ohjelma
- IDS-kuvagalleriaohjelma asennettuna toimivaksi
nice website :))
asianorgy_lettersfrom_us Utlosning