Lisää kuvablogista

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?

  1. 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.
  2. 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”.
  3. 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.
  4. 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
  5. Ohjelma testaa, ovatko tarvittavat hakmeistot olemassa. Jos niit� ei l�ydy, ne luodaan.
  6. 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.
  7. 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

One thought on “Lisää kuvablogista

Leave a Reply

Your email address will not be published. Required fields are marked *