Willkommen auf der Blog-Seite von hubionmac.com!
Alles rund um AppleScript und was mich sonst noch so interessiert ;-)!

Ich muss mir immer wieder Daten aus Dokumenten ziehen, die so eigentlich nicht zu parsen sind. Bestes Beispielt war heute eine .doc-Datei, die einen Zeitplan beinhaltete und dieses Word-Konstrukt sollte nun in eine Datenbank eingefügt werden.
Kurz, das automatisch einzulesen war utopisch und jedes Feld nun via Copy&Paste zu befüllen kostet echt Zeit... Nun, ich bin zu einem Kompromiss gekommen, der mit das Leben in Zukunft auch etwas leichter machen:

Das Skript überwacht einmal gestartet die Zwischenablage. Am Anfang kann man noch eingeben wieviele Spalten die Tabelle haben soll und von da an wird jeder neue Inhalt in der Zischenablage zur Tabelle hinzugefügt. Tabelle heißt in diesem Fall eine tab-separierte Textdatei. Damit man beim Kopieren auch etwas Feedback erhält, wird jede Aktion von einem Ton begleitet und zudem sieht man in einem Terminal-Fenster, wie die Text-Datei anwächst...

Zu theoretisch? Ok, hier ein

und natürlich der Quellcode:


#Clipboard to Data Table 2016-08-19 © hubionmac.com
#Copies the clipboard contents to a text file, to make tables
# script ends as soon as you have the string "ende" in you clipboard

##Settings
set data_file_name to "clipboard_data_" & (do shell script "date '+%s'" & ".txt")
set columcount to (text returned of (display dialog "Count of Data Columns" default answer 2)) as integer
do shell script "touch ~/Desktop/" & quoted form of data_file_name
tell application "Finder" to set data_file to ((item data_file_name of desktop) as alias) as string
#show what happens to the file while the script is adding data
tell application "Terminal"
    do script "tail -f ~/Desktop/" & quoted form of data_file_name
end tell

set ccb to the clipboard
set column_pointer to 0
set theline to {}
#### OMG repeat for ever!!! ;-)
repeat until 1 is 0
    delay 1
    if ccb as text ≠ (get the clipboard) as text then
        set ccb to the clipboard as text
        ##remove newline characters from clipboard
        set tmp to my replace_chars(ccb, "\n", "")
        set tmp to my replace_chars(tmp, "\r", "")
        set theline to theline & {tmp}

        #play some feedback sound
        do shell script "afplay /System/Library/Sounds/Tink.aiff"
        if ccb is "ende" then
            # when the clipboard = ende then quit the script
            say "ende"
            exit repeat
        else
            set column_pointer to column_pointer + 1
            # when the line is full of data, write it to file and start over
            if column_pointer = columcount then
                ##join theline to tap delimited line
                set AppleScript's text item delimiters to tab
                set theline to theline as text
                set AppleScript's text item delimiters to ""
                ##write theline to file
                my write_to_file(theline & "\n", data_file, true)
                do shell script "afplay /System/Library/Sounds/Blow.aiff"
                ## reset vars for next run
                set column_pointer to 0
                set theline to {}
            end if
        end if
    end if
end repeat

on replace_chars(this_text, search_string, replacement_string)
    if this_text contains the search_string then
        set od to AppleScript's text item delimiters
        set AppleScript's text item delimiters to the search_string
        set the item_list to every text item of this_text
        set AppleScript's text item delimiters to the replacement_string
        set this_text to the item_list as string
        set AppleScript's text item delimiters to od
    end if
    return this_text
end replace_chars

on write_to_file(this_data, target_file, append_data)
    ##slightly tweaked routine from http://www.macosxautomation.com/applescript/sbrt/sbrt-09.html which now writes utf-8 text files =)
    try
        set the target_file to the target_file as string
        set the open_target_file to open for access file target_file with write permission
        if append_data is false then set eof of the open_target_file to 0
        write this_data to the open_target_file starting at eof as «class utf8»
        close access the open_target_file
        return true
    on error
        try
            close access file target_file
        end try
        return false
    end try
end write_to_file

Weiterlesen...

Clearfix

css

Frei nach dem Motto wer floatet muss auch clearen =) einfach ein Div mit der Klasse clearfix einfügen, wenn man alles fertig gefloatet hat und vergessen.

.clearfix {
  zoom: 1;
}
.clearfix:before,
.clearfix:after {
  content: "";
  display: table;
}
.clearfix:after {
  clear: both;
}

Weiterlesen...

Tja, jetzt ist es mal wieder soweit. Seit fast einem Jahr habe ich auf der Seite so gut wie gar nichts gemacht und logge mich dann ein und sehe, dass sich zahllose Updates u.a auch kritischer Natur in der Warteschleife befinden.

Ich habe nun schon länger damit geliebäugelt, die Seit auf ein anderes CMS umzustellen und Wordpress endlich eine Abfuhr zu erteilen. Und jetzt ist es soweit. GRAV ist nun das neue CMS hinter dieser Seite. Schlank, schnell und doch ziemlich mächtig. Mal sehen, wann ich den Nerv finde auch mal ein schönes Theme zu bauen ;-)

Ich habe seit 2007 eine recht überschaubare Sammlung von 300 Postings auf der Wordpress-Seite. Diese werde ich leider von Hand migrieren müssen, da ich auch auf Grund von Wordpress einiges an custom-code in den einzelnen Postings einbauen musste. Damit ist dann nach der kompletten Umstellung aber hoffentlich Schluss und sauberer Markdown-Code ist dann die Basis für alle Postings die da noch kommen mögen ;-)

Ich lasse die alte Seite aber nach wie vor online... werde nur die comments schließen und von der Startseite nun auf Grav umleiten =)

Weiterlesen...

Ich muss öfter einzelne Objekte aus Photoshop-Dateien kopieren und separat speichern. Da ein Rechtsklick auf die Ebene, Ebene kopieren in neues Dokument, Menü bearbeiten -> zuschneiden -> Menü fürs Web Speichern, auf Dauer ganz schön aufwendig ist.:

--© hubionmac.com 25.03.2015
tell application "Adobe Photoshop CS6"
  set orig to current document

  tell orig
    set x to width
    set y to height
    set currentlayert to current layer
  end tell
  set newdoc to make new document with properties {width:x, height:y}
  set current document to orig
  tell current document
    duplicate current layer to newdoc
  end tell
  set current document to newdoc
  tell newdoc
    delete last layer
  end tell
  trim newdoc basing trim on transparent pixels
  set current document to newdoc
  activate
  tell application "System Events"
    keystroke "s" using {command down, shift down, option down}
  end tell

end tell

Weiterlesen...

Ich hatte ein paar defekte MP3-Dateien, die von einer Naim-Audio Station kopiert hatte. Diese Dateien ließen sich zwar über Quicktime abspielen, aber nicht in iTunes importieren. Auch die Vorschau unter OSX spielte die Titel zwar ab, zeigte aber u.a. das hinterlegte Album-Cover nicht an. Unter OSX ist das reparieren von beschädigten mp3-Dateien mit kostenpflichtigen Lösungen sicher möglich, nur nach einer leicht zu nutzenden und vor allen Dingen kostenfreien Lösung sucht man vergebens. Anders unter Windows oder Linux, wo u.a. MP3 Diags wahre Wunder wirkt.

Ich habe aber noch ein andere Tool gefunden, Quelloffen, klein und einfach zu kompilieren. mp3val lässt sich auch einfach in ein AppleScript implementieren uns so ist dieses Droplet entstanden mit dem sich defekte mp3-Dateien (Fehler mpeg-stream) einfach reparieren lassen.

mp3val 1.0

Weiterlesen...