-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathApplescript.hs
78 lines (69 loc) · 3.01 KB
/
Applescript.hs
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
{-# OPTIONS -cpp #-}
-- Adapted from Bery Rinaldo's "Export Playlist to M3U" script. The original copyright
-- information for this script is as follows:
-- Export Playlist to M3U
--
-- This AppleScript is used to output the current iTunes playlist into an M3U format file suitable for use with the AudioTron.
-- Copyright (C) 2002 Bery Rinaldo
--
-- This program is free software; you can redistribute it and/or modify it under the terms
-- of the GNU General Public License as published by the Free Software Foundation; either
-- version 2 of the License, or (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
-- without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-- See the GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License along with this program; if not,
-- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-- Script written by Bery Rinaldo beryrinaldo@mac.com on 18-March-2002
--
module Applescript where
playlistScript :: String -> FilePath -> String
playlistScript in_name out_name =
"#!/usr/bin/osascript\nproperty |linefeed| : ASCII character 10\non run\ntry\n\
with timeout of 1800 seconds\n\
tell application \"iTunes\"\n\
set the playlist_text to \"\"\n\
set the playlist_name to \"" ++ in_name ++ "\"" ++
"\nset the target_file to POSIX file \"" ++ out_name ++ "\" as Unicode text" ++
"\ntell playlist playlist_name\n\
\nset the track_count to the count of tracks\n\
\nend tell\n\
\nrepeat with z from 1 to the track_count\n\
\n\n\
\ntell track z of playlist playlist_name\n\
\ncopy {location} to {loc}\n\
\nend tell\n\
\nset the posixloc to POSIX path of loc\
\nset the playlist_text to the playlist_text & posixloc & |linefeed|\n\
\nend repeat\n\
\n end tell\n\
\nset this_result to my write_to_file(playlist_text, target_file)\n\
\nif this_result is not true then\n\
\nerror this_result -- \"There was a problem writing the playlist file.\"\n\
\nend if\n\
\nend timeout\n\
\non error error_message number error_number\n\
\ntell application \"iTunes\"\n\
\nif the error_number is not -128 then\n\
\nbeep\n\
\ndisplay dialog error_message buttons {\"Cancel\"} default button 1\n\
\nend if\n\
\nend tell\n\
\nend try\nend run\n" ++
"on write_to_file(this_data, target_file)\n\
try\n\
set the target_file to the target_file as Unicode text\n\
set the open_target_file to open for access file target_file with write permission\n\
set eof open_target_file to 0\n\
write this_data to the open_target_file\n\
close access the open_target_file\n\
return true\n\
on error error_message\n\
try\n\
close access file target_file\n\
end try\n\
return error_message\n\
end try\n\
end write_to_file\n"