Majandus, pildimajandus

Alljärgnev on siis minu ülestähendus sellest, kuidas taastata F-spot andmebaas. Ehk läheb kellelgi veel vaja.

Käisin sügishooajal koolis – pilditegemise ja töötlemise põhitõed – ja sellest peaks kohe eraldi pikemalt kirjutama. Kuid üks asi millele ma nüüd olen rõhunud on piltide haldus. Kuidas hoida, kuidas märgistada, jne… Pisipehme toodete kasutajana jõudsin kunagi filmiteemal g-punkti juurde. Nüüd linuxi inimesena variante otsides muutus käegakatsutavaks ja nähtavasti ka jõukohaseks F-punkt.

Sipsik

Importisin ca 2000 pilti ja kergelt väänasin ja lõikasin ka kus vaja. Aga mängu tulid Murphy seadused. Ühel hetkel jooksis programm kokku (nähtavasti just sqlite3 osa) ja avastasin, et piltide andmebaasi fail oli tühi. Noh oleks ju nagu katastroof sest backupi mul ka polnud tehtud. Kuid ometi ei osutunud probleem nii ületamatuks.

F-spot’ile on nimelt teada tuntud oskus hoida piltide kohta infot pildi enda sees. Pildid lihtsalt uuesti importida ja sildid hiirega õigesse kohta vedada. Aga üks konks ikkagi oli. Nimelt, on F-spotil lisaks kõigile muudele omadustele ka suurepärane omadus – pilti toimetades jäetakse originaalfail puutumata ja tehakse pildist versioon ehk uus fail. Kuid seda, et üks pilt on teise versioon faili sisse ei kirjutata. Tuli käsitsi asjale kallale minna ja vaadata, kuidas patsient tagant poolt välja paistab. Paistab sedasi, et andmebaasi fail on lihtne SQLite3 andmebaas. Natuke tuli SQLi meelde tuletada ja selle tulemusean mõtlesin välja järgmised read:

– Samas kaustas, sama ajaga failid on versioonid.
CREATE TEMP TABLE dp AS SELECT max(id) AS ‘oid’, min(id) AS ‘vid’ FROM photos GROUP BY time, base_uri HAVING COUNT(*) > 1;
– Lisame versioonid versioonide tabelisse.
INSERT INTO photo_versions (photo_id, version_id, name, base_uri, filename, md5_sum, protected)
SELECT orig.id, 2, ‘Modified’, vers.base_uri, vers.filename, vers.md5_sum, 0 FROM photos AS orig, photos AS vers, dp WHERE orig.id = dp.oid AND vers.id = dp.vid;
– Kustutame versiooni failid päris piltide seast.
DELETE FROM photos WHERE id IN (SELECT vid FROM dp);
– Versiooni saanud failide vaikimisi aktiivne versiooni number on 2
UPDATE photos SET default_version_id = 2 WHERE id IN (SELECT oid FROM dp);

Millis siis konks? F-spot impordib kõik (ka varem versioonina loodud failid) uute originaalfailidena. Kui ühestki pildist ei ole rohkem kui ühte lisa versiooni, siis saab ülal toodud skriptiga versiooni failid õige peafaili alla liigutatud ja aktiivseks versiooniks just teine pilt. Nagu poleks midagi juhtunudki. Njah, muidugi oleks lihtsam ~/.config/f-spot/photos.db failist backup teatava regulaarsusega teha.

Trackback URI | Sõnavõttude RSS

Kirjuta vastus