- Michael Nord
- Medlem ●
- Malmö
Jag skulle vilja skriva ett litet program i AppleScript som låter användaren släppa en eller flera filer på det för att då få en pop-up meny ur vilken användare kan välja ett projektnamn. Det namnet ska sedan skrivas till kMDItemProjects för att kunna plockas upp i Spotlight-sökningar.
Men hur gör man???
Någon som jobbat med att lägga till fördefinierade metadata till filer? Är det ens möjligt med AppleScript?
Michael
Hmm...
Du väljer då dina utmaningar med omsorg - det här är inga lätta grejer...
Att läsa metadata via AS är busenkelt, eller att skriva en filkommentar, men all annan typ av metadata är klart besvärligt, eller riktigt besvärligt om man inte är en unix- eller cocoa-geek
I princip kan man inte skriva det med AppleScript, men det går gå via diverse Unix-tool. De är dock inte förinstallerade utan måste installeras separat, därefter får man bygga ett gränssnitt i AppleScript / AppleScript Studio etc.
Innan jag skulle ge mig på något sånt så skulle jag ifrågasätta om vinsten är så stor som man tänkt sig. Några dagars utvecklingstid för att få till en anständig Quick and dirty-lösning och ett par veckor för att få till det snygg, skulle jag gissa. Åtminstone för en sån som mig, en riktig cocoa-geek kanske skulle kunna lösa det snabbare, fast knappast dramatiskt.
Nej, jag har anat att det inte är helt lätt. Apple har ju inte heller gjort något för att underlätta...
Det tycks inte vara någon utvecklare som lyckats få till det än heller. De program jag hittat skriver egen-definierade metadata, och det är inte det jag är ute efter. MailTags-tillägget till Mail.app har dock lyckats få till det. Där kan man lägga till projektnamn så som jag vill.
Michael
Använd Finder-kommentaren då, den är ju sökbar, enkel att använda och kräver ingen rocket science på något sätt
Jo, problemet är bara att Finder-kommentarer är lite känsliga, de försvinner lätt.
Har mailat utvecklaren av SpotMeta för att se om han har någon idé...
Tack för hjälpen!
ALL metadata måste lagras någonstans. Vissa filformat har inbyggda, och utökningsbara "platser" för det, t.ex. Adobes filformat som har stöd för XMP-format.
De flesta filformat kan dock inte acceptera godtycklig metadata utan att det endera lagras i filsystemet, eller i en sidecar-fil. OS X har i viss mån stöd för båda varianterna, och det är bl.a. det som hänger med i form av ._-filer när man kopierar till en Windows-volym.
I det avseendet är inte Finder-kommentar känsligare än annan metadata som inte lagras i filen själv, annat än att användarna själva kan ta bort den förstås.
Den spotlight-data du lägger till kommer aldrig att vara oberoende av filformat och plattform - båda dessa saker utgör begränsningar som är praktiskt taget omöjligt att komma runt.
Får jag istället fråga vilka filformat det gäller? Det finns kanske bättre sätt att göra det?
Det kan vara vilka typer av filer som helst; textdokument, bilder etc. Det ska bara användas på Macar. Vad jag är ute efter är att kunna skriva till attributet kMDItemProjects som är fördefinierat i systemet. Det är det enda...
Och du är medveten om att i och med att sådan metadata inte kan lagras i filen så är den precis lika ömtålig som en Finder-kommentar?
Det finns dock flera fördelar med Finder-kommentaren, nämligen att den kan skrivas, läsas och visas av en massa program, inklusive Finder i list-vy, vilket gör att du t.ex. kan sortera en mapp på kommentaren (vilket i ditt fall blir projektet).
Likaså funkar Finder-kommentaren på alla Macar utan installation av någon extra programvara alls.
Inte lika elegant tekniskt sätt, men det förefaller ändå som om det uppnår väldigt mycket av det du vill på nolltid
Om du arbetar i ren projektform, och kanske tom. ger varje projekt ett projektnummer så är det ju lättast att döpa filen:
banner-P19292.flash
menystruktur-P19292.doc
osv.
Då hittar ju både spotlight och även en ful windowsburk alla filerna
Med väldigt långa projektnamn är det knappast en särskilt smidig lösning...
Är det inte så att de av systemet fördefinierade meta-attributen lagras i filen. Jag hade för mig att det var egen-definierade som inte gjorde det och då var "känsliga"...
Nej, spotlights metadata lagras i filsystemet, inte i filen. De flesta filformat har otroligt strikta regler för hur vad som konstituerar en giltig fil, vilket är orsaken att det inte går att trycka in valfria metadata i dem, för då förstörs de helt enkelt.
Somliga filformat är dock uppbyggt på ett lite mer förutsägbart sätt, där metadata kan sparas, i sådana fall lagras det i filsystemet OCH i filen, men det kräver en specialuppbyggd läsare och skrivare för varje filformat, och har filformatet inte stöd för det från början så är det kört. T.ex. kan du aldrig få en GIF-fil att stödja t.ex. EXIF-data, hur mycket du än försöker, för då är det inte längre en GIF-fil.
Det Spotlight gör då det tillåter godtycklig metadata att sparas för godtyckliga filtyper är att spara metadata i filsystemet. När en sån fil överförs till ett annat system så skapar Mac OS en ._-fil som innehåller den metadata som filen själv inte kan innehålla. Om båda filerna sedan kopieras tillbaka till Mac OS så kan systemet reversera processen och bygga ihop dem igen. Kopieras bara själva filen är all metadata oåterkallerligt förlorad
Det ovanstående gäller för all metadata som inte har direkt stöd i filformatet. Med andra ord så är kMDItemProjects precis lika bräckligt som Finder-kommentarer.
Om du är ute efter det jag tror, att enkelt kunna klassa och söka filer efter projekt så skulle jag personligen gå på Finder-kommentars-spåret, och möjligen lägga till "riktiga" (dvs filburna) metadata för de filtyper som stödjer det (vilket gäller t.ex. alla Adobe- och Microsoft-program, och alla moderna bildformat).
Det vore mycket enklare, och om man kompletterar med filburna metadata så slipper man känsligheten och plattformsproblematiken.
Det Spotlight gör då det tillåter godtycklig metadata att sparas för godtyckliga filtyper är att spara metadata i filsystemet. När en sån fil överförs till ett annat system så skapar Mac OS en ._-fil som innehåller den metadata som filen själv inte kan innehålla. Om båda filerna sedan kopieras tillbaka till Mac OS så kan systemet reversera processen och bygga ihop dem igen. Kopieras bara själva filen är all metadata oåterkallerligt förlorad
Spotlight har ju dessutom "Importers", som vet hur man återskapar metadata från olika filtyper. Det är så metadata från exempelvis en PDF-fil plockas ut om man kopierar den till Mac OS från någon annan källa.
Detta påverkar dock inte vad som tidigare sagts om kMDItemProjects. Jag kollade lite i dokumentationen och har inte lyckats hitta någon funktion i varesig Cocoa eller Carbon som kan ändra metadata på godtyckliga filer. Jag antar att man kan skriva en Spotlight importer för public.*-typen, men det känns som en mycket lång omväg att gå om man vill skriva ett litet verktyg för att sätta en ynka metadata-tag för godtyckliga filer.
/Erik
OK, tack för förklaringen. Då antar jag att epostfiler från Mail.app har stöd för kMDItemProjects eller att pluggen mailTags.mdimporter sköter om det.
Och om det är så behöver jag inte anstränga mig. Då kan jag antingen använda SpotMeta eller skapa något med Automator/AppleScript.
Tack igen!
Michael
Här är en quick-and-dirty-variant. Den funkar så att när man droppar filer på den så får man en fråga om vilket/vilka projekt filerna ska tillhöra. Det skrivs sedan in i Finder-kommentaren och blir omedelbart tillgängligt för Spotlightsökning
Om projektnamnen innehåller mellanslag (som dessa gör) så måste man inleda spotlightsökningen med ett citattecken, i stil med "Projekt 1"
För att redigera projektlistan så dubbelklickar man på programmet och skriver in projektnamnen, ett per rad, i dialogrutan som visas.
OBS! I detta utkast så skrivs befintliga Finder-kommentarer över, så var medveten om det...
oops! Det var ett litet fel i den varianten, här kommer en ny
Richard, du är en pärla. Funkar perfekt.
Om jag däremot kopierar en fil med Finder-kommentar (Spotlight Comment) till vår server (OS X 10.4) så verkar inte kommentaren följa med. Det gör inte heller metadata som program som SpotMeta skrivit in i egendefinierade attribut.
Finder-kommentarer ska följa med. Vilket filsystem används på enheten? Vilket protokoll ansluter du med, samt har du spotlight-indexering aktiverat på servervolymen?
På A svarar vi HFS+, på B AFP och på C är svaret Ja.
Är det förresten möjligt att få ditt lilla program i olåst version. Inte alla här på jobb pratar svenska, så jag behöver ändra det till engelsk text...
Michael
Nej, jag hade fel. Indexeringen var avstängd på servern (måste vara det default, för jag har inte stängt av den). Har dragit igång den nu, och återkommer när jag kollat om det funkar igen...
Nu har jag dragit igång indexering, sett till att den indexerat från scratch och flyttat nya preparerade filer till servern, men det är tomt i fältet Spotlight Comments när man flyttat den och sedan väljer visa Info på filen på servern (lokalt på servern alltså). Om jag däremot väljer Visa info på min dator för filen som ligger på servern finns metadatan där. Alltid något, men om jag kollar det från en annan dator finns det inget i spotlight-fältet...