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!

Lhetn valokuvan sisltvn shkpostin omaan shkpostiosoitteeseeni. 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. Tm siksi, ettei mik tahansa minulle lhetetty shkpostiliite ptyisi 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 ~/.$$

Nytt ehk monimutkaiselta, mutta kytnnss se ei ole sit lainkaan. Mit ohjelma siis tekee?

  1. Ohjelma purkaa munpack-komennolla sille annetun shkpostiviestin paloiksi. Liitteet otetaan erilleen ja samoin varsinainen viestin runko. Tuloksena on joukko tiedostoja, esim. kuva1.jpg ja kuva1.desc. Desc-tiedosto sislt viestin runkoon kirjoitetun selitystekstin. Kaikki tiedostot laitetaan niit varten luotuun vliaikaiseen hakemistoon.
  2. Seuraavaksi ohjelma ky lpi hakemistossa olevat jpg-tiedostot. Ensi tikseen se siivoaa tiedostojen nimet. Kameraknnykss tiedostojen nimet sisltvt 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 myhemmin viel alleviivausmerkin vlilynniksi, joten kuvagalleriassa se nkyy muodossa “Kuva 1”.
  3. Sitten kuvista otetaan tiedostonnimet talteen. Muuttuja i sislt kuvatiedoston alkuperisen nimen, ii siivotun nimen. Muuttuja a sislt nimen ilman jpg-tarkenninta, aa saman siivotussa muodossa.
  4. Sen jlkeen valmistetaan hakemistojen nimet pivmri varten. Kuvathan tallennetaan pivkohtaisiin hakemistoihin, joten niiden nimet tytyy luoda. Toiseen tulee kuukausi, vliviiva ja vuosi, toiseen taas pivn numero. Eli esim. kuvakansio/Kuvablogi/12-2002/27
  5. Ohjelma testaa, ovatko tarvittavat hakmeistot olemassa. Jos niit ei lydy, ne luodaan.
  6. Lopuksi tiedostot siirretn IDS:n kansioihin. IDS:lle riitt, kunhan jpg-kuva siirretn varsinaiseen kuvahakemistoon ja selitysteksti vastaavaan selitystekstihakemistoon. Kuvagalleriasofta tekee loput. Kamerasta tuleva selitysteksti on UTF-8 -muodossa, joka ei oikein sovellu Pinseriss esitettvksi. Sen vuoksi selitysteksti muunnetaan hurjan nkisell Perl-koodin ptkll oikeaan muotoon.
  7. Lopuksi viel vliaikaishakemisto siivotaan pois ja kaikki on valmista.

Jos haluat itsellesi vastaavan systeemin, kannattaa ensin tarkistaa ett kytsssi on kaikki tarvittava:

  • Kameraknnykk, johon on tehty tarpeelliset shkpostiasetukset (tmn systeemi on testattu Nokia 7650:lla, en tied miten muunmerkkiset puhelimet lhettvt kuvia)
  • Unix-pohjainen shkpostipalvelin, jossa on kytss procmail tai vastaava suodatinjrjestelm.
  • 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 *