AppleScript Reste-Eintopf II

9/12/2011

Add to Login-Items

--03.09.2008 hubionmac.com

--asks for an app and adds it to login items

addtologin(choose file of type {"APPL"})

on addtologin(thisApp) -- adds an item to login items

set appPath to POSIX path of thisApp

tell application "System Events"

set appName to name of thisApp

set shortName to (characters 1 through ((get offset of ".app" in appName) - 1) of appName) as text

if shortName is not in (name of every login item) then

make login item at end with properties {path:appPath}

end if

end tell

end addtologin

Nach Datei-Endungen sortieren

Das hatte ich mal als Ordner-Aktion für meinen Download-Ordner erdacht... seitdem es Spotlight gibt, hat der Drang Downloads zu sortieren deutlich nachgelassen ;-)

--19.11.2006 hubionmac.com

--Ordneraktion die Dateien an Hand Ihrer Datei-Endung in Unter-Ordner sortiert

on adding folder items to derOrdner after receiving added_items

-- die Liste kann man gut erweitern

set endungmitordner to {".jpg;JPEGS", ".mov;Movies"}

repeat with k in endungmitordner

--damit kann man die Einträge aus der Liste gut in Ihre Bestandteile zerlegen

--Ist auch super um in Strings Teile zu ersetzen =)

set AppleScript's text item delimiters to ";"

set endung to text item 1 of k

set ordnername to text item 2 of k

set AppleScript's text item delimiters to ""

tell application "Finder"

set inhalt to every item of derOrdner

set itemcount to count of every item of inhalt

-- wenn in dem Ordner nix drin ist, soll er auch nix machen... lohnt ja nicht

if itemcount > 1 then

repeat with aitem in inhalt

--Die Anzahl der Buchstabe einer definierten Endung... damit ich am Ende auch weiß ob ich nach

-- .tiff oder .mov suchen muss

set endcount to (-1 * (count of every character of endung))

set itemname to name of aitem

if (characters endcount through -1 of itemname) as text = endung then

--wenn es den ordner schon gibt den fehler ignorieren und weiter im Text

try

make folder at derOrdner with properties {name:ordnername}

end try

--wir basteln uns einen Alias zu einem Verzeichnis

set workingdir to ((derOrdner as string) & ordnername & ":") as alias

--tja und dieser teil bewegt die Datei in den Ordner... und bennent sie um, sofern der

--Name bereits im Zielordner existiert

-- man könnte statt des counters auch die uhrzeit bzw. das datum nehmen...

-- oh ich neheme die Uhrzeit =).

try

move aitem to workingdir as alias

on error

set no_error to false

repeat until no_error = true

set counter to (time of (current date))

try

set name of aitem to (counter & "##" & itemname) as string

move aitem to workingdir as alias

set no_error to true

exit repeat

on error

set no_error to false

end try

end repeat

end try

end if

end repeat

end if

end tell

end repeat

end adding folder items to

Safari Bookmark Saver

Man nehme den Titel und die URL der aktuellen Seite und speichere sie via Skript in einer kleinen HTML-Datei (meta-refresh)... fertig ist das Platform-übergreifende Bookmark-File

--18.01.2005

--Safari Bookmark safer

-- it's not a boookmark but a tiny html file that redirects to the saved URL

set html_text01 to "<html><meta http-equiv=\"refresh\" content=\"0; URL="

set html_text02 to "\"></html>"


tell application "Safari" to set windowcount to count of every window

if windowcount ≥ 1 then

tell application "Safari" to set theurl to URL of document 1

tell application "Safari" to set thename to name of document 1

display dialog "Filename" default answer thename

set thename to text returned of the result

set thetext to html_text01 & theurl & html_text02 as text

do shell script "echo " & quoted form of thetext & "|cat >~/Desktop/" & quoted form of thename & ".html"

end if

Folder-List

Erstelle eine Art Folder-Map... keine Ahnung wofür ich das mal brauchte...

-- 18.3.2007 hubionmac.com.com

-- creates a table of contents (tree structure) of  a folder that was dropped onto the script and saves it into a text file

global theroottxt, thefolder_unix, tabcount

on open thefolder

if (count of thefolder) > 1 then

display dialog "Please put ONE Folder onto the script"

end if

set thefolder to thefolder as alias

set thefolder_unix to POSIX path of thefolder

set theroottxt to thefolder as text

tell application "Finder"

set these_folders to every folder of thefolder

end tell

set tabcount to 0

repeat with this_folder in these_folders

set folderstring to get_folderstring(this_folder)

do shell script ("echo " & quoted form of folderstring & "|cat>> " & quoted form of thefolder_unix & "folder_list.txt") as text

do_folder(this_folder)

end repeat

end open




on do_folder(this_folder)

set tabcount to tabcount + 1

tell application "Finder"

set these_folders to every folder of this_folder

end tell

repeat with this_folder in these_folders

set folderstring to get_folderstring(this_folder)

do shell script ("echo " & quoted form of folderstring & "|cat>> " & quoted form of thefolder_unix & "folder_list.txt") as text

do_folder(this_folder)

end repeat

set tabcount to tabcount - 1

end do_folder



on get_folderstring(this_folder)

tell application "Finder"

set FolderName to name of this_folder

end tell

repeat with i from 1 to tabcount

set FolderName to tab & FolderName

end repeat

return FolderName as text

end get_folderstring

Rekursions-Beispiel

Würde ich heute ehr mit find -type d lösen, aber geht auch so

--12.10.2005 hubionmac.com

--Beispiel zum Thema Rekursion

global folderkind


set thisfolder to choose folder

display dialog "deepcount=" default answer "0"

set deepcount to text returned of the result as integer

if deepcount = 0 then

process_item(thisfolder)

else

process_folder(thisfolder, deepcount)

end if


on process_folder(this_item, deepcount)

tell application "Finder"

set these_items to every folder of this_item

set deepcount to deepcount - 1

end tell

repeat with this_item in these_items

if deepcount = 0 then

process_item(this_item)

else

process_folder(this_item, deepcount)

end if

end repeat

end process_folder


on process_item(this_item)

tell application "Finder"

set itemname to name of this_item

display dialog itemname

end tell

end process_item

No Comments

AppleScript in Google Chrome

6/11/2010
Bei meiner Arbeit nutze ich oft AppleScript in Verbindung mit JavaScript. Viele meiner täglichen Aufgaben müssen über Webseiten abgewickelt werden und wenn es z.B. darum geht ein Web-Formular mit Daten aus Excel oder einem anderen Programm zu füttern oder Daten aus Webseiten zu extrahieren, dann kann so eine AppleScript-JavaScript-Lösung einem schon wirklich einiges an Zeit ersparen. Bisher war hierfür eigentlich nur Safari geeignet, da nur Safari das Ausführen längere JavaScripts via AppleScript unterstützte.
Code zum markieren einmal anklicken Code im Skript-Editor öffnen

tell application "Safari"

tell document 1

do JavaScript "document.links.length"

end tell

end tell

Aber jetzt hat auch Google Chrome eine Schnittstelle für AppleScript erhalten und kann (wenn auch noch etwas rudimentär) JavaScript-Befehle über AppleScript ausführen.
Code zum markieren einmal anklicken Code im Skript-Editor öffnen

tell application "Google Chrome"

tell window 1

tell tab 1

execute javascript "document.links.length"

end tell

end tell

end tell

Das Problem was dabei aber noch besteht: Der Aufruf führt das angegeben JavaScript zwar aus, gibt aber an AppleScript nichts aus. Stattdessen erscheint nach dem Ausführen des obigen Codes nur missing value in der Ausgabe. Zur Zeit behelfe ich mir noch damit den Rückgabewert in den Titel des Dokuments zu schreiben und diesen dann via AppleScript auszulesen:
Code zum markieren einmal anklicken Code im Skript-Editor öffnen

tell application "Google Chrome"

tell window 1

tell tab 1

execute javascript "document.title = document.links.length + 1"

delay 1

get title

end tell

end tell

end tell

Etwas unschön zumal ein delay mit rein muss, da der Titel sich nicht unmittelbar aktualisiert, aber zumindest schon mal ein Anfang, wenn Chrome der auserwählte Web-Browser sein sollte.Kleiner Nachtrag... statt tab 1 kann man auch active tab nutzen
No Comments

Safari: Öffne alle JavaScript Links

5/05/2010
Kann recht praktisch sein, wenn man sich mal alle JavaScript-Dateien zu einer Website anzeigen lassen möchte...
Code zum markieren einmal anklicken Code im Skript-Editor öffnen

tell application "Safari"

tell document 1

--set mybaseURL to do JavaScript "document.URL.slice(0, document.URL.lastIndexOf('/')+1)"

set jslinks to do JavaScript "var jssrcarray = new Array()

for (var i=0;i<document.getElementsByTagName('script').length;i++)

{

jssrcarray.push(document.getElementsByTagName('script')[i].src)

}

jssrcarray

"

repeat with jslink in jslinks

open location jslink

end repeat

end tell

end tell

No Comments

Safari XY

13/12/2009
compass-copy.pngIch habe in letzter Zeit etwas mit JavaScript-Befehlen in Safari herumgespielt. Dabei bin ich dann auch auf die Idee gekommen mal die Fenster darüber zu verschieben und in der Größe zu verändern.Am Ende ist es doch aber recht dumm, wenn man über irgendwelche Formeln Fenster genau aufteilt, jeder hat da seine eigene praktische Anordnung, warum also diese nicht einmal einrichten und dann immer wieder aufrufen können.Das Skript kommt nun also vollkommen ohne Java-Script aus und funktioniert wie folgt:
Wenn man es das erste Mal mit einer bestimmten Anzahl an offenen Safari-Fenstern öffnet, speichert es deren Position ab.Ruft man das Skript nun später wieder auf, kennt es ja für diese Anzahl an Fenstern deren Position und stellt diese wieder her. Man kann diese Einstellung natürlich auch überschreiben, das bietet der Dialog auch an.So kann man sich für jede x-beliebige Anzahl an Safari-Fenstern, deren Position speichern und wieder herstellen =)Hier also Hubi's Safari XY Skript =) DOWNLOAD
Safari XY v.1.0
(227 hits)
HA, hier ist wohl die bessere Lösung
No Comments

super Anleitung zum deaktivieren der nervigen Top Sites in Safari

6/10/2009
von roderick.dk

So groß ist der Safari cache

Code zum markieren einmal anklicken
du -h ~/Library/Caches/com.apple.Safari/Webpage\ Previews

Das einfach löschen:

cd ~/Library/Caches/com.apple.Safari/Webpage\ Previews;rm *

und nun Safari diese Unart austreiben:

defaults write com.apple.Safari DebugSnapshotsUpdatePolicy -int 2
tested with 10.6.1
No Comments

Ausgewählten Text aus Safari als Email senden

19/09/2009
Mit cmd+i kann man ja in Safari die Website als HTML-Email verschicken. Mit dem Skript wird eine Email des ausgewählten Textes erstellt und an eine neue Email eingetragen:
Code zum markieren einmal anklicken

tell application "Safari"

tell document 1

set selected_text to do JavaScript "var txt = '';

if (window.getSelection)

{

    txt = window.getSelection();

}

else if (document.getSelection)

{

    txt = document.getSelection();

}

else if (document.selection)

{

    txt = document.selection.createRange().text;

}

else return;

"

set siteURL to URL

end tell

end tell

tell application "Mail"

activate

make new outgoing message with properties {visible:true, subject:"Something Interesting", content:"" & siteURL & return & return & selected_text}

end tell


No Comments

Safari: Cool shortcut

10/09/2009
select a word on a website, press cmd + shift + L and a new window/tab with a corresponding google search shows up =)
No Comments

So schön Firefox 3.5 auch sein mag…

27/06/2009
verliert er leider bei dem Test doch gegen Safari 4. Gerade wenn man Dauerfeuer gibt, läuft Safari flüssig weiter, FireFox kommt dagegen doch ins stocken. Mal sehen wie sich eine der
angepassten Versionen schlägt (nervt mich aber schon etwas, dass man für die wahre Performance auf solche inoffiziellen Versionen zurückgreifen muss :-/ )
1 Comment

Praktische Safari defaults hacks

26/06/2009
http://www.macpicks.de/safari-4-versteckte-optionen-aktivieren/
No Comments