Kirjoittaja Aihe: SEBIA - Simple Event Based Image Archive  (Luettu 6600 kertaa)

Tuxer

  • Käyttäjä
  • Viestejä: 657
  • Debian 7.0, Sailfish
    • Profiili
    • opendimension.org
SEBIA - Simple Event Based Image Archive
« : 20.08.13 - klo:10.07 »
huomio:tämä tuskin kiinnostaa graafisten käyttöliittymien ystäviä!

SEBIA - Simple Event Based Image Archive

Valokuvasekamelska alkoi olla omalla koneella jo mahdoton, joten jotain piti tehdä. Halusin hyvin simppelin systeemin, jolla kuvia voisi järjestää ajallisesti ja joka myös takaisi että tiedot on käytettävissä tulevaisuudessa.

Systeemi on todellakin simppeli, joten ei kannata odottaa hienouksia. (tosin yksinkertaisuus != helppokäyttöisyys )

Idea
Python-skripti kaivaa esiin *EXIF-dataa sisältävät* kuvat annetusta hakemistosta ja laittaa tiedot XML-tiedostoon. Toinen skripti luo pikkukuvat yhteen hakemistoon. Näistä tuotetaan selattava sivusto XSL-muunnoksilla. Sivusto sisältää linkit alkuperäisiin kuviin.

Sivustoa katsellaan *lokaalisti* normaalilla selaimella. Näkymiä on kaksi, hakemistot ja tapahtumat.
HUOM. Chrome ja Chromium vaativat käynnistämisen  --allow-file-access-from-files optiolla

Tapahtumat
Tapahtuma (event) on esimerkiksi matka Roomaan. Sen alla on "kuvaussessioita" (session), joilla on begin ja end -arvo. Näin voidaan tallentaa esimerkiksi talon remontti, lomamatka, synttärit yms.
- Tapahtumat määritellään *käsin kirjoittamalla* events.xml-tiedostoon.
- Käytännössä siis hakemistonäkymästä kopioidaan halutut EXIF-aikaleimat begin ja end -arvoiksi. Katso readme.txt

Vaatimukset:
- SEBIA käyttää seuraavia python moduuleja: pyexiv2 ja pil
- palvelinta, Mysql-tietokantaa yms. *EI* tarvita

Lataus
readme.txt löytyy tuolta
http://opendimension.org/projects/sebia/readme.txt

Tuolta voi ladata beta-version:
http://opendimension.org/projects/sebia/


Omalla vastuulla voi kokeilla, jos jotain tällainen lähestymistapa kiinnostaa.
Parempaa dokumentaatiota on tarkoitus kirjoitella.

Kommentteja ja palautetta otetaan vastaan mielihyvin.

« Viimeksi muokattu: 20.08.13 - klo:10.16 kirjoittanut Tuxer »
"Menehän Tonttu Tomera tarkastamaan ollaanko korsuissa kiltisti."
Fingerpori

Tuxer

  • Käyttäjä
  • Viestejä: 657
  • Debian 7.0, Sailfish
    • Profiili
    • opendimension.org
Vs: SEBIA - Simple Event Based Image Archive
« Vastaus #1 : 22.08.13 - klo:14.04 »
sb_scanexif.py etsii oletuksena kaikki jpeg ja tiff -kuvat, joilla on EXIF-dataa. Muutama lisäoptio:

Koodia: [Valitse]
-a --all-images  ottaa mukaan myös kuvat, joilla ei ole exif-dataa

Koodia: [Valitse]
-f --formats    <format1,format2> voi määrittää mitä päätteitä hyväksytään. Tuo on siis pääte, ei kuvatyyppi, joten esim. jpeg pitää kirjoittaa muodossa [jpg,jpeg]

Esimerkki:
Koodia: [Valitse]
sb_scanexif -d /home/user/Picture -a -f jpeg,jpghakee kaikki jpegit riippumatta onko niillä exif-dataa vai ei. Tapahtumia ei tietenkään voi käyttää näiden kuvien kanssa.

Kuvien selailussa on usemman sekunnin viive kun kuvia > 200 000, mutta silti ihan käytettävissä.


"Menehän Tonttu Tomera tarkastamaan ollaanko korsuissa kiltisti."
Fingerpori

Tuxer

  • Käyttäjä
  • Viestejä: 657
  • Debian 7.0, Sailfish
    • Profiili
    • opendimension.org
Vs: SEBIA - Simple Event Based Image Archive
« Vastaus #2 : 25.08.13 - klo:20.11 »
Kirjoittelin vähän kotisivun tapaista:

http://opendimension.org/projects/sebia/

Jos jotakuta kiinnostaa mutta englanti ei taivu, niin voin suomeksi tänne kirjoitella. Mutta oletettavasti mahdollinen käyttäjäkunta on sen verran pieni, ettei siihen montaa suomenkielistä mahdu :)
"Menehän Tonttu Tomera tarkastamaan ollaanko korsuissa kiltisti."
Fingerpori

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: SEBIA - Simple Event Based Image Archive
« Vastaus #3 : 26.08.13 - klo:21.41 »
Ehdottomasti tervetullut lisä tarjolla olevien ohjelmien täydentäjäksi!

Mutta pikaisesti vilkaisin tuon sb_scanexif.py:n läpi (juuei, en osaa Pythonia, korkeintaan perusteiden alkeet ;)
Enkä saanut kokeiltua kun tältä konelta puuttuu ilmeisen tärkiä moduli:

Koodia: [Valitse]

ImportError: No module named pyexiv2


Pari kysymystä nousi hetioitis mieleeni:

- onko tuolle palikalle jpg ja JPG sama asia?
Aika moni kamera tuuppaa nimettynä *.JPG.

- onko Pythonille vastaavaa funktiota kuin bashin 'file'?
(Kun nimeen en oikein osaa luottaa...)

Esim:
../sebia$ file jouko2.10.08.2013*
jouko2.10.08.2013:     JPEG image data, JFIF standard 1.01
jouko2.10.08.2013.jpg: JPEG image data, JFIF standard 1.01
jouko2.10.08.2013.JPG: JPEG image data, JFIF standard 1.01


Tuxer

  • Käyttäjä
  • Viestejä: 657
  • Debian 7.0, Sailfish
    • Profiili
    • opendimension.org
Vs: SEBIA - Simple Event Based Image Archive
« Vastaus #4 : 26.08.13 - klo:22.24 »

Mutta pikaisesti vilkaisin tuon sb_scanexif.py:n läpi (juuei, en osaa Pythonia, korkeintaan perusteiden alkeet ;)
Enkä saanut kokeiltua kun tältä konelta puuttuu ilmeisen tärkiä moduli:

Koodia: [Valitse]

ImportError: No module named pyexiv2


Tuo pitäisi löytyä nimellä python-pyexiv2

Lainaus

Pari kysymystä nousi hetioitis mieleeni:

- onko tuolle palikalle jpg ja JPG sama asia?
Aika moni kamera tuuppaa nimettynä *.JPG.

jpg ja jpeg, isolla tai pienellä, kaikki käy.

Lainaus
- onko Pythonille vastaavaa funktiota kuin bashin 'file'?
(Kun nimeen en oikein osaa luottaa...)

Käytän imghdr-moduulia, joka tekee juurikin saman kuin file. Tosin se tunnisti .3DS -tiedoston tiff-tiedostoksi, joten skripti katsoo ensin päätteen ja sitten etsii EXIF-dataa vain jos imghdr sanoo että kuva on jpeg tai tiff.


"Menehän Tonttu Tomera tarkastamaan ollaanko korsuissa kiltisti."
Fingerpori

K-Veikko

  • Käyttäjä
  • Viestejä: 309
    • Profiili
Vs: SEBIA - Simple Event Based Image Archive
« Vastaus #5 : 27.08.13 - klo:10.36 »
Pikaisesti testasin omalla koneella.

  • Itselläni tuon index.html sivun sisältö on tyhjä.
  • Kätevästi sillä saa tehtyä thumbnailit.
  • Useamman eri sijainneissa olevien kuvahakemistojen indeksointi ei onnistu.
  • Jos polut olisivat suhteellisia, voisi tuo skripti (sitten lopullisessa versiossa) sijaita [kuvakansion juuressa], jolloinka kuvakansion siirtely paikasta toiseen kuljettaisi mukanaan tämän indeksoinnin.

Tuxer

  • Käyttäjä
  • Viestejä: 657
  • Debian 7.0, Sailfish
    • Profiili
    • opendimension.org
Vs: SEBIA - Simple Event Based Image Archive
« Vastaus #6 : 27.08.13 - klo:13.17 »
  • Itselläni tuon index.html sivun sisältö on tyhjä.
Mitä selainta käytät? Luultavasti selain ei anna avata lokaaleja tiedostoja. Voit kokeilla esi. Chromen käynnistämistä seuraavasti:
Koodia: [Valitse]
google-chrome --allow-file-access-from-filesTätä ennen pitää sammuttaa *kaikki* käynnissä olevat Chromet.
Lainaus
  • Kätevästi sillä saa tehtyä thumbnailit.
  • Useamman eri sijainneissa olevien kuvahakemistojen indeksointi ei onnistu.
Tätä pähkäilin jonkin verran. Itse olen käyttänyt tuota esimerksi niin, että ulkoisella kovalevyllä olevat kuvat on indeksoitu eri hakemistoon koneen levyllä. Voisi kyllä olla järkevää, että voisi ajaa tavallaan yhteen kuvia useista lähteistä.
Lainaus
  • Jos polut olisivat suhteellisia, voisi tuo skripti (sitten lopullisessa versiossa) sijaita [kuvakansion juuressa], jolloinka kuvakansion siirtely paikasta toiseen kuljettaisi mukanaan tämän indeksoinnin.

Juurikin näin. Tarkoitus on lisätä vielä skripti, jolla voisi tehdä tehdä erilaisia versioita (esitys, online, käyttökuva yms.).
"Menehän Tonttu Tomera tarkastamaan ollaanko korsuissa kiltisti."
Fingerpori

K-Veikko

  • Käyttäjä
  • Viestejä: 309
    • Profiili
Vs: SEBIA - Simple Event Based Image Archive
« Vastaus #7 : 28.08.13 - klo:21.16 »
> Mitä selainta käytät? Luultavasti selain ei anna
> avata lokaaleja tiedostoja. Voit kokeilla esi.
> Chromen käynnistämistä seuraavasti:

Kokeilin operalla, firefoxilla ja tällä google-chrome --allow-file-access-from-files
- index.html on tyhjä, otsikot näkyy
Osa kuvatiedostoistani ei sisällä mitään exif -tietoja, ovat skannattuja ja gimp yms. kuvia

> Jos polut olisivat suhteellisia, voisi tuo
> skripti (sitten lopullisessa versiossa) sijaita
> [kuvakansion juuressa]
Tarkemmin ajatellen tuo skripti saa olla missä vain, mutta se tekisi valitun kuvakansion juureen tuon index.html tiedoston sekä thumbnail hakemiston. + ehkä "root" index.html tiedoston sinne missä skripti ajetaan. Tässä olisi linkit kuvakansioissa oleviin index.html tiedostoihin.

Mielestäni tämän kaltainen kuvien indeksoitiohjelma on erinomainen idea. Jopa niin hyvä, että joku on jo joskus tullut tehneeksi samankaltaisen skriptin – löytyisiköhän repositoreista? En ole tutkinut asiaa.

Edit:
google-chrome --allow-file-access-from-files antoi sittenkin alihakemistolinkin!
Tosin olin jo siirtänyt kuvat tällä välin pitkäaikaisvarastointiin ulkoiselle kovalevylle, joten en osaa toimivuudesta nyt sanoa sen enempää.
(– Juuri tämän pitkäaikaisvarastoinnin takia toivonkin noiden polkujen olevan suhteellisia.)
« Viimeksi muokattu: 28.08.13 - klo:21.23 kirjoittanut K-Veikko »

Tuxer

  • Käyttäjä
  • Viestejä: 657
  • Debian 7.0, Sailfish
    • Profiili
    • opendimension.org
Vs: SEBIA - Simple Event Based Image Archive
« Vastaus #8 : 03.09.13 - klo:22.19 »
    Beta 2 sisältää seuraavaa:

    - uusi aikaperusteinen selailumahdollisuus (vuosi/kuukausi)
    - hakemistonäkymässä on nyt sivutus, jonka kokoa voi muuttaa (kts. options alla)
    - linkit alkuperäisiin kuviin voivat ollat suhteellisia tai absoluuttisia (kts. options alla)
    - indeksointi luodaan *annettuun kuvahakemistoon* sebia.index -nimiseen hakemistoon
    - options.xml, jossa voi määritellä :
      -- pikkukuvien koon (ajonaikainen, näin systeemi "muistaa" kuvien koon)
      -- käytetäänkö suhteellisia vai absoluuttisia polkuja (selailunaikainen)
      -- sivutus eli kuinka monta kuvaa hakemistonäkymässä näytetään kerrallaan (selailunaikainen)[/li]


options.xml näyttää tältä:
Koodia: [Valitse]
<options>
<!-- path: relative or absolute -->
<path>relative</path>
<!-- thumbnailsize: max thumbnail size (height or width) in pixels -->
<thumbnailsize>300</thumbnailsize>
<!-- path: how many images are presented per page in directory view -->
<pagersize>100</pagersize>
</options>
 
miniohje:
- hae SEBIA esim. wgetillä:
Koodia: [Valitse]
wget http://opendimension.org/projects/sebia/downloads/sebia_beta2.1.tar.gz- pura paketti (paketti sisältää sebia_beta2 -nimisen hakemiston)
Koodia: [Valitse]
tar xzvf sebia_beta2.1.tar.gz- siirry sebia_beta2/python -hakemistoon
- aja sb_scanexif.py ja määrittele kuvahakemisto d- optiolla:
Koodia: [Valitse]
./sb_scanexif.py -d /home/arihayri/Pictures- Kuvahakemistoon ilmestyy sebia.index -niminen hakemisto
- Luo pikkukuvat sb_thumbnails.py -skriptillä ja määrittele kuvahakemisto samoin:
Koodia: [Valitse]
./sb_thumbnails.py -d /home/arihayri/Pictures- avaa selaimella kuvahakemistosta index.html hakemistosta sebia.index


Firefox toimii paremmin kuin Chrome/Chromium. Chromen XSLT-tuki on vähän buginen ja hidas. Muista selaimista en tiedä.


Edelleen, omalla vastuulla voi kokeilla. Kokemuksia ja palautetta otetaan mielellään vastaan.

Testattu: Debian Wheezy, Iceweasel, Chrome Version 29.0.1547.57 ja Chromium
« Viimeksi muokattu: 05.09.13 - klo:12.51 kirjoittanut Tuxer »
"Menehän Tonttu Tomera tarkastamaan ollaanko korsuissa kiltisti."
Fingerpori

Tuxer

  • Käyttäjä
  • Viestejä: 657
  • Debian 7.0, Sailfish
    • Profiili
    • opendimension.org
Vs: SEBIA - Simple Event Based Image Archive
« Vastaus #9 : 05.09.13 - klo:12.50 »
Beta 2.1

- lisätty -o (--output) optio sb_scanexif.py -skriptiin. Näin voi määrittää indeksoinnin sijainniksi jonkin muun kuin kuvahakemiston. Samalla polut asetetaan absoluuttisiksi. Tämä pitää sitten antaa sitten sb_thumbnails.py -skriptille hakemistoksi optiolla -d
- piilotiedostoja (.) ei enää indeksoida

Output tuli tarpeelliseksi kun ulkoinen kovalevy meni kesken skannauksen (joka kesti aika kauan) read-only tilaan.
"Menehän Tonttu Tomera tarkastamaan ollaanko korsuissa kiltisti."
Fingerpori

K-Veikko

  • Käyttäjä
  • Viestejä: 309
    • Profiili
Vs: SEBIA - Simple Event Based Image Archive
« Vastaus #10 : 05.09.13 - klo:14.10 »
Kokeilin skriptiä hakemistoon, jossa oli myös muita kuin kuvahakemistoja.  ./sb_scanexif.py -d pysähtyi tähän:

Traceback (most recent call last):
  File "./sb_scanexif.py", line 226, in <module>
    main(sys.argv[1:])
  File "./sb_scanexif.py", line 94, in main
    readDir(imgDir, imgTypes, allImages)
  File "./sb_scanexif.py", line 134, in readDir
    utf8_fileName = unicode(fileName, 'utf-8')
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe2 in position 31: invalid continuation byte

Tuxer

  • Käyttäjä
  • Viestejä: 657
  • Debian 7.0, Sailfish
    • Profiili
    • opendimension.org
Vs: SEBIA - Simple Event Based Image Archive
« Vastaus #11 : 05.09.13 - klo:22.50 »
Kiitos raportista!

Onnistuin saamaan saman virheen aikaan kun vaihdoin tiedoston tai hakemiston nimen joksikin muuksi kuin UTF-8 -merkistöä käyttäväksi.

Nyt SEBIAn pitäisi yksinkertaisesti vain ohittaa tuollaiset tiedostot:

http://opendimension.org/projects/sebia/downloads/sebia_beta2.1b.tar.gz
« Viimeksi muokattu: 05.09.13 - klo:22.52 kirjoittanut Tuxer »
"Menehän Tonttu Tomera tarkastamaan ollaanko korsuissa kiltisti."
Fingerpori