Скриптом можно:
tell application "Safari"
set urls to URL of every tab of every window
end tell
при выполнении получить все URL-адреса каждой вкладки каждого окна (двумерный список)
Result:
{{"http://domain1", "http://domain2", ...}, {"http://domain3", "http://domain4", ...}, {...}}
Но возможно ли это с:
tell application "Safari"
set (urls & name) to URL of every tab of every window
end tell
чтобы получить запись вместо списка:
Result:
{{{url: "http://domain1", name: "domain1 - foo"}, {url: "http://domain2", name: "domain2 - bar2"}, {...}}, {{url: "http://domain3", name: "domain3 - foo3"}, {url: "http://domain4", name: "domain4 - bar4"}, {...}}}
Возможно ли это, или я должен использовать только repeat
?
Невозможно получить запись с одним спецификатором объекта, но можно получить список:
tell application "Safari"
{URL, name} of tabs of windows
end tell
-- {{{"http://url1", "title 1"}, {"http://url2", "title 2"}}}
Для записи можно использовать цикл повтора:
set r to {}
tell application "Safari"
repeat with t in tabs of windows
set end of r to {|url|:URL of t, |name|:name of t}
end repeat
end tell
r
-- {{|url|:"http://url1", |name|:"title 1"}, {|url|:"http://url2", |name|:"title 2"}}
статический
{|safari|: {{|window_1|: {|url|: "http://url1", |name|: "title 1"}, {|url|:"http://url2", |name|:"title 2"}},{|window_2|: {|url|: "http://url3", |name|: "title 3"}, {|url|:"http://url4", |name|:"title 4"}}}}
? Чтобы я мог преобразовать запись в json (например, с помощьюJSON Helper
) и при этом иметь структуру окон сафари? Я написал скрипт для всего этого, чтобы получить строку на основе (не на основе записей/списков, что я хотел бы иметь), и это около 200 строк кода с 3 подпрограммами, и это выглядит некрасиво даже для менястатический
{|safari|: {|window1|: {{|url1|: "http1", |name1|: "title1"},{|url2|: "http2", |name2|: "title2"},{|url3|: "http3", |name3|: "title3"}}}} & {|safari|: {|window2|: {{|url1|: "http1", |name1|: "title1"},{|url2|: "http2", |name2|: "title2"},{|url3|: "http3", |name3|: "title3"}}}}
он возвращает только:{safari:{window1:{{url1:"http1", name1:"title1"}, {url2:"http2", name2:"title2"}, {url3:"http3", name3:"title3"}}}}
а не объединенный вариант, где есть списокwindows
статический
{|safari|: -->{{<-- |window1|: ...
не вносят никаких измененийстатический
set end of w_l to {|window & "_" & window_i :t_l}
?