Když nedávno Palm zprovoznil synchronizaci Pre s iTunes, všichni se zadrženým dechem čekali, co Apple udělá. A Apple? Podle očekávání synchronizaci zarazil. Okamžitě se vyrojila armáda, která začla Applu nadávat, že se chová monopolně. Jsou snad ale iTunes jedinou cestou, jak synchronizovat? Brání Apple synchronizaci PIM dat v Macu se zařízeními třetích stran?
Pojďme se podívat na to, jak Apple svoje data ukládá a jak těžké asi musí pro schopného programátora být taková data synchronizovat.
Začněme iCalem, tedy defaultní kalendářovou aplikací v Mac OS X. V tomto případě by to snad víde standardně ani nešlo. Když se podíváme do ~/Library/Calendars, uvidíme kromě souborů s cache a Inboxu pro pozvánky sadu adresářů s příponou calendar. V nich najdeme v každém jeden standardní property list s celkem rychle pochopitelnou strukturou a pak adresář Events, který neobsahuje nic jiného, než kupu standardních ICS souborů s akcemi v daném kalendáři. I kdyby tedy člověk nechtěl použít oficiální Objective-C API pro práci s kalendářem, k datům se dostat je záležitost pro začátečníka.
Pokračujme Mailem. ~/Library/Mail je plný převážně plistů a také obsahuje složku pro každý váš mailový účet (např. IMAP-vas.mail@gmail.com@imap.gmail.com). Ta obsahuje adresáře s příponou imapbox (v případě IMAPu), z nichž každý obsahuje jeden plist a složky Messages a Attachments. V Messages jsou maily v souborech s příponou emlx (trošku nešikovná kombinace XML a čistého textu, avšak obsah mailů je 100% čitelný) a v druhé složce jsou pochopitelně přílohy, organizované podle čísel mailů. Nastavení účtů v Mailu pak najdete v ~/Library/Preferences/com.apple.mail.plist a troufám si říci, že tam najdete prakticky veškerá nastavení -- kromě hesel pochopitelně. Opět jsme tedy v situaci, kdy naprogramování synchronizace nastavení i obsahu mailových účtů nestojí témeř nic v cestě.
Data Address Booku najdete v ~/Library/Application Support/AddressBook. Ten největší soubor s příponou abcddb je obsah vašeho adresáře. A nejde o nic jiného, než o SQLite databázi. Sice její struktura není úplně přímočará, ale nepochopitelná také není. Další data najdete v adresáři Metadata, který je plný binárních plistů (které převedete na XML příkazem plutil, viz. http://www.manpagez.com/man/1/plutil/) s daty vašich adresátů.
Poslední je iTunes, jehož knihovnu najdete primárně v přehledném a pochopitelném ~/Music/iTunes/iTunes Music Library.xml, a pak také ve dvou SQLite databázích umístěných ve stejném adresáři (iTunes Library Extras.itdb a iTunes Library Genius.itdb) a v jednom souboru bez přípony (iTunes Library), jehož formát mi není znám, ale pro nějž existuje již několik open source knihoven (pokud vím, tak minimálně pro Perl a Javu). Základní data o všech skladbách ale najdete ve zmíněném XML souboru.
Sečteno a podtrženo: i když bez iTunes nebude synchronizace asi nikdy dokonalá, způsob, jakým Apple zmíněná data ukládá, dává schopným programátorům při psaní synchronizačních aplikací obrovské pole působnosti (nemluvě o tom, že velký kus práce lze udělat přes oficiální Objective-C API).
Pánové z RIM nezahálí a možností poskytovaných Mac OS X využívají. Co kdyby se kolegové z Palmu inspirovali a místo píchání do vosího hnízda pro své klienty napsali nějaký pěkný sync tool?
Přidat komentář