Report abuse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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 the EncodedClipURL to urlencode(ClipURL) of me
      set curlCMD to ¬
        "curl --stderr /dev/null \"http://bit.ly/api?url=" & EncodedClipURL & "\""

      -- Run the script and get the result:
      set tinyURL to (do shell script curlCMD)

      return tinyURL
    end if
  end ignoring


on urlencode(theText)
  set theTextEnc to ""
  repeat with eachChar in characters of theText
    set useChar to eachChar
    set eachCharNum to ASCII number of eachChar
    if eachCharNum = 32 then
      set useChar to "+"
    else if (eachCharNum ≠ 42) and (eachCharNum ≠ 95) and (eachCharNum < 45 or eachCharNum > 46) and (eachCharNum < 48 or eachCharNum > 57) and (eachCharNum < 65 or eachCharNum > 90) and (eachCharNum < 97 or eachCharNum > 122) then
      set firstDig to round (eachCharNum / 16) rounding down
      set secondDig to eachCharNum mod 16
      if firstDig > 9 then
        set aNum to firstDig + 55
        set firstDig to ASCII character aNum
      end if
      if secondDig > 9 then
        set aNum to secondDig + 55
        set secondDig to ASCII character aNum
      end if
      set numHex to ("%" & (firstDig as string) & (secondDig as string)) as string
      set useChar to numHex
    end if
    set theTextEnc to theTextEnc & useChar as string
  end repeat
  return theTextEnc
end urlencode