AppleScript Itunes歌词发现者

tell application "iTunes"
	if player state is playing then
		set artist_name to artist of current track
		set track_name to name of current track
	else
		set artist_name to the artist of selection of browser window 1
		set track_name to the name of selection of browser window 1
	end if
end tell

set the artist_name to replace_chars(artist_name, " ", "+")
set the track_name to replace_chars(track_name, " ", "+")

tell application "Safari"
	activate
	set the URL of the front document to ¬
		"http://search.lyrics.astraweb.com/?word=" & artist_name & "+" & track_name & ""
end tell


on replace_chars(this_text, search_string, replacement_string)
	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 ""
	return this_text
end replace_chars

AppleScript 在Finder中显示(并隐藏)隐藏文件

defaults write com.apple.finder AppleShowAllFiles -bool TRUE
killall Finder

defaults write com.apple.finder AppleShowAllFiles -bool FALSE
killall Finder

AppleScript 用Hazel和Acrobat自动化OCR的脚本

try
   tell application "Adobe Acrobat Professional"
      activate
      open theFile
      tell application "System Events"
         tell process "Acrobat"
            tell menu bar 1
               tell menu "Document"
                  tell menu item "OCR Text Recognition"
                     tell menu 1
                        click menu item "Recognize Text Using OCR..."
                     end tell
                  end tell
               end tell
               
            end tell
            keystroke return
         end tell
      end tell
      save the front document
      close the front document
   end tell
end try

AppleScript MacScripter /显示隐藏文件

Open this Scriplet in your Editor:

display alert "Would you like to show or hide the hidden files?" buttons {"Hide", "Show"} default button "Hide" as warning
if button returned of result is "Hide" then
   
   do shell script "defaults write com.apple.finder AppleShowAllFiles -bool false ; killall Finder"
else
   
   do shell script "defaults write com.apple.finder AppleShowAllFiles -bool true ; killall Finder"
end if

AppleScript Mac:平铺最前端应用程序的所有Windows

--tile windows of frontmost applications in a grid
--this script is useful for
--multiple window chatting
--working side by side of several windows of the same app

--make need to make it as a stay open application later
--for now assume that it is opened and closed per invokation

property horizontalSpacing : 10 -- sets the horizontal spacing between windows
property verticalSpacing : 10 -- sets the vertical spacing between windows
property maxRows : 2
property maxCols : 2

on run {}
	local a
	set userscreen to my getUserScreen()
	
	--display dialog (getFrntApp() as string)
	try
		set applist to getFrntApp()
		if length of applist = 0 then
			return
		end if
		set a to item 1 of getFrntApp()
	on error the error_message number the error_number
		display dialog "Error: " & the error_number & ". " & the error_message buttons {"OK"} default button 1
	end try
	
	try
		tileScriptable(a, userscreen)
	on error the error_message number the error_number
		--display dialog "Error: " & the error_number & ". " & the error_message buttons {"OK"} default button 1
		try
			tileUnscriptable(a, userscreen)
		on error the error_message number the error_number
			display dialog "Error: " & the error_number & ". " & the error_message buttons {"OK"} default button 1
		end try
	end try
	
end run

on tileScriptable(a, screen)
	local i, c
	set i to 1
	tell application named a
		set theWindows to every window of application a whose visible is true and floating is false and ¬
			modal is false -- and miniaturized is false
		set c to count theWindows
		if c = 0 then
			return
		end if
		set tiles to calTileBounds(c, screen, 1)
		repeat with theWindow in theWindows
			my tileScriptableWindow(a, theWindow, item i of tiles)
			set i to i + 1
		end repeat
	end tell
end tileScriptable

on tileUnscriptable(a, screeninfo)
	-- unscriptable app
	local i, c
	set i to 1
	tell application "System Events"
		set theWindows to (every window of application process a)
		--set theWindows to my filterUnscriptableInvisible(theWindows)
		
		set c to count theWindows
		
		if c = 0 then
			return
		end if
		
		--display dialog screeninfo as string giving up after 5
		set tiles to my calTileBounds(c, screeninfo, 1)
		repeat with theWindow in theWindows
			--display dialog (class of visible of theWindow)
			my tileUnScriptableWindow(a, theWindow, item i of tiles)
			set i to i + 1
		end repeat
		
	end tell
end tileUnscriptable

on filterUnscriptableInvisible(ws)
	-- filter out from ws windows that are docked 
	set newws to {}
	set docklist to getNamesDocked()
	--display dialog (docklist as string)
	repeat with theWindow in ws
		if name of theWindow is not in docklist then
			set end of newws to theWindow
		end if
	end repeat
	
	--display dialog (count newws)
	return newws
end filterUnscriptableInvisible

on getNamesDocked()
	tell application "System Events" to tell process "Dock"'s list 1
		set l to name of UI elements whose subrole is "AXMinimizedWindowDockItem"
	end tell
	
	return l
end getNamesDocked

on tileScriptableWindow(a, w, bound)
	tell application a
		set bounds of w to bound
	end tell
end tileScriptableWindow

on tileUnScriptableWindow(a, w, bound)
	tell application "System Events"
		--display dialog (count position of w)
		set AppleScript's text item delimiters to " "
		
		set position of w to {(item 1 of bound), (item 2 of bound)}
		
		-- why the -5?
		set size of w to {(item 3 of bound) - (item 1 of bound) - 5, ¬
			(item 4 of bound) - (item 2 of bound) - 5}
		--display dialog (count properties of w)
	end tell
end tileUnScriptableWindow

on calTileBounds(nWindows, screen, direction)
	-- return a list of lists of window bounds
	-- a simple tile algo that tiles along direction (current only 1=horizontal)
	
	local nRows, nColumns, irow, icolumn, nSpacingWidth, nSpacingHeight, nWindowWidth, nWindowHeight
	set {x0, y0, availScreenWidth, availScreenHeight} to screen
	set ret to {}
	
	set nRows to (nWindows div maxCols)
	if (nWindows mod maxCols) � 0 then
		set nRows to nRows + 1
	end if
	
	if nRows < maxRows then
		set nSpacingHeight to (nRows - 1) * verticalSpacing
		set nWindowHeight to (availScreenHeight - nSpacingHeight) / nRows
	else
		set nSpacingHeight to (maxRows - 1) * verticalSpacing
		set nWindowHeight to (availScreenHeight - nSpacingHeight) / maxRows
	end if
	
	repeat with irow from 0 to nRows - 1
		if nRows � maxRows and irow = nRows - 1 then
			set nColumns to nWindows - irow * maxCols
		else
			set nColumns to maxCols
		end if
		set nSpacingWidth to (nColumns - 1) * horizontalSpacing
		set nWindowWidth to (availScreenWidth - nSpacingWidth) / nColumns
		set nTop to y0 + (irow mod maxRows) * (verticalSpacing + nWindowHeight)
		--display dialog "Top: " & nTop buttons {"OK"} default button 1
		repeat with icolumn from 0 to nColumns - 1
			set nLeft to x0 + (icolumn) * (horizontalSpacing + nWindowWidth)
			set itile to {¬
				nLeft, ¬
				nTop, ¬
				nLeft + nWindowWidth, ¬
				nTop + nWindowHeight}
			set end of ret to itile
			--display dialog item 3 of itile as string
			--set itile to {x0 + (icolumn - 1) * wgrid, y0, wgrid, hgrid}
			--set item 3 of itile to ((item 1 of itile) + (item 3 of itile))
			--set item 4 of itile to ((item 2 of itile) + (item 4 of itile))
		end repeat
	end repeat
	
	return ret
end calTileBounds



on getFrntApp()
	tell application "System Events" to set frntProc to ¬
		name of every process whose frontmost is true and visible � false
	return frntProc
end getFrntApp

on getUserScreen()
	-- size of the menubar
	tell application "System Events"
		set {menuBarWidth, menuBarHeight} to size of UI element 1 of application process "SystemUIServer"
		--display dialog "Menubar width: " & menubarWidth & ", height: " & menubarHeight
		set dockApp to (application process "Dock")
		set {dockWidth, dockHeight} to size of UI element 1 of dockApp
		--display dialog "Dock width: " & dockWidth & ", height: " & dockHeight
		set dockPos to position of UI element 1 of dockApp
		--display dialog "Dock x: " & (item 1 of dockPos) & ", y: " & (item 2 of dockPos)
	end tell
	
	-- size of the full screen
	(*
{word 3 of (do shell script "defaults read /Library/Preferences/com.apple.windowserver | grep -w Width") as number, ¬
word 3 of (do shell script "defaults read /Library/Preferences/com.apple.windowserver | grep -w Height") as number}
*)
	tell application "Finder"
		set screenSize to bounds of window of desktop
		set screenWidth to item 3 of screenSize
		set screenHeight to item 4 of screenSize
	end tell
	--display dialog "Screen width: " & screenWidth & ", height: " & screenHeight
	
	-- by default, set the available screen size to the full screen size
	set availableWidth to screenWidth
	set availableHeight to screenHeight - menuBarHeight
	set availableX to 0
	set availableY to menuBarHeight
	
	--determine the userscreen origin and size
	
	-- case 0: hidden dock
	-- if (item 1 of dockPos < 0 or item 1 of dockPos � screenHeight) then
	-- no need to change anything
	-- end if
	
	-- case 1: bottom dock
	if ((item 2 of dockPos) + dockHeight = screenHeight) then
		set availableHeight to availableHeight - dockHeight
	end if
	
	-- case 2: left dock
	if (item 1 of dockPos = 0) then
		set availableWidth to availableWidth - dockWidth
		set availableX to dockWidth
	end if
	
	-- case 3: right dock
	if ((item 1 of dockPos) + dockWidth = screenWidth) then
		set availableWidth to availableWidth - dockWidth
	end if
	
	return {availableX, availableY, availableWidth, availableHeight}
end getUserScreen

AppleScript TextExpander bit.ly

set the ClipURL to (the clipboard as string)

ignoring case
	if ((characters 1 through 4 of ClipURL as string) is not "http") then
		return "Malformed URL."
	else
		set curlCMD to ¬
			"curl --stderr /dev/null \"http://bit.ly/api?url=" & ClipURL & "&login=[replace_with_bitly_username]&apiKey=[replace_with_bitly_api_key]" & "\""
		
		-- Run the script and get the result:
		set tinyURL to (do shell script curlCMD)
		
		return tinyURL
	end if
end ignoring

AppleScript 将.dmg文件转换为.iso

hdiutil convert  /Users/file.dmg -format UDTO -o  /Users/file.iso

AppleScript 用于检查应用程序菜单项是否存在的Applescript函数

-- brandonjp 201103211048
-- applescript function to check if a menu item exists?
-- returns true or false

if menuItemExists({"timeEdition", "Extras", "Start Recording"}) then
	display dialog "hoda"
end if


on menuItemExists({appName, menuName1, menuItem1})
	
	tell application "System Events"
		
		tell application process appName
			
			if menu item menuItem1 of menu 1 of menu bar item menuName1 of menu bar 1 exists then
				return true
			else
				return false
			end if
			
		end tell
		
	end tell
	
end menuItemExists

AppleScript 使用特定编辑器在Finder中打开所选文件的Applescript

tell application "Finder"
  activate
  set filePath to (POSIX path of (target of front window as alias))
  set fileAlias to the selection as alias
  set fileName to name of fileAlias
  do shell script "~/bin/subl " & filePath & fileName
end tell

AppleScript 咆哮的通知

tell application "System Events"
	set isRunning to (count of (every process whose bundle identifier is "com.Growl.GrowlHelperApp")) > 0
end tell

if isRunning then
	tell application id "com.Growl.GrowlHelperApp"
		-- Make a list of all the notification types 
		-- that this script will ever send:
		set the allNotificationsList to ¬
			{"Test Notification", "Another Test Notification"}
		
		-- Make a list of the notifications 
		-- that will be enabled by default.      
		-- Those not enabled by default can be enabled later 
		-- in the 'Applications' tab of the Growl preferences.
		set the enabledNotificationsList to ¬
			{"Test Notification"}
		
		-- Register our script with growl.
		-- You can optionally (as here) set a default icon 
		-- for this script's notifications.
		register as application ¬
			"Growl AppleScript Sample" all notifications allNotificationsList ¬
			default notifications enabledNotificationsList ¬
			icon of application "Script Editor"
		
		--       Send a Notification...
		notify with name ¬
			"Test Notification" title ¬
			"Test Notification" description ¬
			"This is a test AppleScript notification." application name "Growl AppleScript Sample"
		
		notify with name ¬
			"Another Test Notification" title ¬
			"Another Test Notification :) " description ¬
			"Alas — you won't see me until you enable me..." application name "Growl AppleScript Sample"
		
	end tell
end if