1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Dateien taggen

Dieses Thema im Forum "AppleScript" wurde erstellt von Zettt, 01.09.08.

  1. Zettt

    Zettt Doppelter Melonenapfel

    Dabei seit:
    16.10.05
    Beiträge:
    3.374
    Hi,

    Ich habe mal wieder ein Problem mit diesem schoenen AppleScript. :p

    Mich wuerde gerne Dateien taggen per AppleScript. Eines schaffe ich schon. Naemlich Dateien zu taggen! Tags werden einfach per vorausgehendem "&" in den Spotlight Kommentaren gespeichert.

    Ich mach das mit folgendem Script:

    Code:
    -- ==================
    -- = Script written by Zettt
    -- = email: info@xxx.de
    -- = web: www.zettt.de
    -- ==================
    
    tell application "Finder"
    	activate
    	set thisItem to selection as alias
    	
    	set the_result to display dialog ¬
    		"Please Enter Tags" default answer ¬
    		"" with icon 1 ¬
    		buttons {"Cancel", "OK"} ¬
    		default button "OK"
    	set button_pressed to button returned of the_result
    	set text_typed to text returned of the_result
    	set text_typed to "&" & text_typed
    	if button_pressed is "OK" then
    		if comment of thisItem = "" then
    			set the comment of thisItem to text_typed
    		else
    			set text_typed to (comment of thisItem) & " " & text_typed
    			set the comment of thisItem to text_typed
    		end if
    	else
    		return
    	end if
    	
    end tell
    Nun wuerde ich gerne die Tags wieder entfernen koennen. Dazu habe ich mir gedacht, man macht einfach einen Text replace. Und da hab ich folgende Funktion gefunden

    Code:
    on ReplaceText(theString, fString, rString)
    	set current_Delimiters to AppleScript's text item delimiter
    	set AppleScript's text item delimiters to fString
    	set sList to every text item of theString
    	set AppleScript's text item delimiters to rString
    	set newString to sList as string
    	set AppleScript's text item delimiters to current_Delimiters
    	return newString
    end ReplaceText
    Und jetzt verzwirbelts mir leider die Gehirngaenge so sehr, dass ich nicht weiss wie ich das dann einbinden soll.
     
    #1 Zettt, 01.09.08
    Zuletzt von einem Moderator bearbeitet: 11.12.08
  2. bezierkurve

    bezierkurve Danziger Kant

    Dabei seit:
    12.06.05
    Beiträge:
    3.861
    In deiner ReplaceText-Methode scheint ein Fehler zu sein… mit der Variante von Mutti (ganz unten auf der Seite) sollte es dann klappen.

    PS: Mit deinem obigen Code kann man momentan noch Tags mehrfach setzen, das solltest du evtl. noch abfangen.
     
  3. JeaBea

    JeaBea Adams Apfel

    Dabei seit:
    01.04.07
    Beiträge:
    511
    Hallo!

    Ich habe eine grundsätzliche Frage zum Taggen von Dateien, und zwar: Wie geht das? ;)
    Ich würde zum Beispiel eine Datei gern so mit einem "Kürzel" oder ähnlichem versehen, dass Spotlight sie gleich als Top-Treffer anzeigt, wenn ich dieses Kürzel eingebe. Ich habe jetzt schon mehrmals gelesen, dass man eine Datei einfach so taggt, indem man im Info-Fenster etwas in "Spotlight-Kommentare" eingibt. Aber so richtig läuft das nicht, wie ich mir das vorstelle. Ich habe z.B. eine Datei, bei der ich unter "Informationen" bei den Spotlight Kommentaren "*d" eingebe. Wenn ich das dann in Spotlight suche, findet der gar nichts...

    Würd mich freuen über Infos zum Taggen von Dateien in Bezug auf Spotlight.
    Liebe Grüße.
     
  4. LittlePixel

    LittlePixel Strauwalds neue Goldparmäne

    Dabei seit:
    09.07.08
    Beiträge:
    641
    Hallo,

    so könnte das aussehen:

    Code:
    set tmp to display alert "Was möchtest Du tun?" buttons {"Abbrechen", "Tags setzen", "Tags entfernen"} default button "Abbrechen"
    
    if ((button returned of tmp) is equal to "Tags setzen") then
        my tagsSetzen()
    else if ((button returned of tmp) is equal to "Tags entfernen") then
        my tagsErsetzen()
    end if
    
    
    -- Tags ersetzen
    on tagsErsetzen()
        tell application "Finder"
            activate
            
            set sel to selection
            
            if (sel is not {}) then
                
                set nDatei to item 1 of sel
                
                set tmp to display dialog "Suchen:" default answer "" with icon 1 buttons {"Abbrechen", "OK"} default button "Abbrechen"
                set tmp2 to display dialog "Ersetzen:" default answer "" with icon 1 buttons {"Abbrechen", "OK"} default button "Abbrechen"
                
                if ((button returned of tmp) is equal to "OK") then set comment of nDatei to my ersetzenFunktion((comment of nDatei), "&" & (text returned of tmp), "&" & (text returned of tmp2))
                
            else
                display alert "Achtung" as warning message "Bitte markiere die gewünschte Datei"
            end if
            
        end tell
    end tagsErsetzen
    
    
    -- Tags auf alle markierten Dateien anwenden
    on tagsSetzen()
        tell application "Finder"
            activate
            
            set sel to selection
            
            if (sel is not {}) then
                
                set nDatei to item 1 of sel
                
                set tmp to display dialog "Tag hinzufügen:" default answer "" with icon 1 buttons {"Abbrechen", "OK"} default button "Abbrechen"
                
                set txt to "&" & (text returned of tmp)
                
                if ((button returned of tmp) is equal to "OK") then -- Wenn OK-Button gedrückt
                    
                    if ((comment of nDatei) is equal to "") then
                        set comment of nDatei to txt
                    else
                        set comment of nDatei to ((comment of nDatei) & " " & txt)
                    end if
                    
                end if
                
            else
                display alert "Achtung" as warning message "Bitte markiere die gewünschte Datei"
            end if
            
        end tell
    end tagsSetzen
    
    
    -- Suchen und Ersetzen
    on ersetzenFunktion(txt, suchenText, ersetzenText)
        
        -- suchen
        set AppleScript's text item delimiters to suchenText
        set txt to every text item of txt as list
        
        -- ersetzen
        set AppleScript's text item delimiters to ersetzenText
        
        return (txt as string)
        
    end ersetzenFunktion

    Viele Grüße
     
  5. LittlePixel

    LittlePixel Strauwalds neue Goldparmäne

    Dabei seit:
    09.07.08
    Beiträge:
    641
    Du Schwindler :) Ganz im Gegenteil ;)

    Code:
    set thisItem to selection as alias
    So etwas darfst Du niemals machen! "selection" liefert Dir bezogen auf den Finder immer eine Liste mit Aliasen zurück.

    Viele Grüße
     
  6. JeaBea

    JeaBea Adams Apfel

    Dabei seit:
    01.04.07
    Beiträge:
    511
    nochmal Fragen zum Dateien taggen

    Super Script, danke. Mir war nicht ganz klar, wie ich das mit dem "&" in die Spotlight Kommentare einfüge (was Zettt ja schon geschrieben hat), habe jetzt gesehen, dass es also ohne Leerzeichen geschehen muss.
    Dennoch zwei Fragen:
    1. funktioniert das Taggen scheinbar nicht mit allen Zeichen, oder? Wenn ich z.B. eine Datei mit "*d" tagge (auch mit dem Script), klappt das nicht, sprich Spotlight findet da nichts. Wieso nicht? Das würde mich noch sehr interessieren.
    2. listet Spotlight die getaggte Datei nicht als Top-Treffer auf. Geht das überhaupt mit dem Taggen oder richtet sich das einfach z.B. nach Häufigkeit des Öffnens einer Datei? (Als Beispiel: Wenn ich in Spotlight "it" eingebe, wird als Top-Treffer iTunes angezeigt. Ich möchte gern, dass wenn ich eine Datei mit "it" tagge, dass dann die Datei als Top-Treffer angezeigt wird. Geht das?)

    Danke trotzdem. Und ich hoffe auf weitere Tipps. :)
    Liebe Grüße
     

Diese Seite empfehlen