Webkit / Safari / Firefox / API: Могу ли я программно читать / извлекать URL-адреса нескольких вкладок? - PullRequest
4 голосов
/ 18 ноября 2008

Тема: Программно управлять веб-браузером в OS X 10.4.x + Tiger / Leopard. Темы: Webkit, Safari, Firefox, API, Applescript, Automator, Javascript, Ruby, Ruby on Rails, OS X, Tiger Цель: собрать / прочитать / извлечь URL-адреса из Safari в текстовый файл (код Ruby on Rails). Примечание: решение, в котором используется FF, также будет высоко оценено. Я использую Safari (v. 3.x, OS X 10.4.x) все больше и больше предпочитаю решение, которое работает в Safari.

Иногда я использую веб-браузер для поиска / отображения нескольких страниц сайта, которые я 1) хочу позже посетить снова и 2) URL-адреса которых я хочу сгруппировать в текстовом файле для а) будущей ссылки и / или б) программно манипулировать.

Например: в сегодняшнем Нью-Йорк Таймсе я нахожу семь статей Нью-Йорк Таймса, которые я хочу опубликовать в своем del.icio.us acct. и отправлять по электронной почте в формате «для печати» задолго до того, как они будут опубликованы в онлайн-издании того дня. Я открываю каждый в кране окна браузера, а затем Presto! их URL-адреса автоматически помещаются в файл, в котором (пользовательское) приложение Ruby on Rails отправляет URL-адреса версий для печати на адреса электронной почты и в мой Del.icio.us acct.

Я полагаю, что есть способ сделать шаг извлечения URL из ОС, используя Applescript или Automator. Я полагаю, что МОЖЕТ быть способ сделать это с помощью Javascript.

Мой вопрос: как прочитать поле расположения вкладок веб-браузера и сопоставить эти строки в текстовый файл (либо в моей ОС, либо через проводную связь с веб-приложением)?

Очень ценится.

Ответы [ 5 ]

2 голосов
/ 19 ноября 2008

Для Safari это было бы довольно тривиально с Applescript. Я бы предложил начать с чего-то вроде Добавить все закладки в закладки , чтобы получить базовую логику захвата вкладок, которая вам понадобится, и, возможно, объединить ее со старыми Джона Грубера * Сохранить и восстановить URL Safari скрипт для сохранения URL-адресов в виде списка в текстовый файл.

Там также могут быть лучшие решения Applescript; они были только первыми, которые я нашел через Google, и оба довольно устарели.

Для получения дополнительной помощи и ресурсов, касающихся Applescript, я предлагаю форумы MacScripter .

Удачи!

1 голос
/ 18 ноября 2008

Если вы хотите сделать это Firefox, вам придется изучить и использовать XUL. Вкладки не видны для javascript (вопросы безопасности / конфиденциальности), и нет API для такого рода информации за пределами Firefox.

Начало работы с XUL-разработкой - хороший ресурс для начала программирования на XUL.

У IBM есть приличное учебное пособие для вашего первого кода XUL.

Вот обработчик в XUL , чтобы дать вам представление о том, как работать с вкладками.

Краткое руководство , демонстрирующее смешение XUL, javascript и других технологий для обновления сайта.

Наконец, вот хороший lifehacker учебник по расширениям / дополнениям Firefox , который показывает вам многое из вышеперечисленного для простого примера, а затем, как упаковать его как .xpi, чтобы другие могли легко добавить и управлять им из своего firefox.

Я не имею никакого представления о Safari, но он основан на webkit, и должны быть некоторые ресурсы по его настройке, аналогично тому, как вы использовали бы XUL в Firefox.

Удачи!

-Adam

0 голосов
/ 27 июля 2011

Вот скрипт для AppleScript, который должен помочь вам (этот скрипт для Safari) ...

property these_URLs : {}
set the text item delimeters of AppleScript to ""
----------------------------------------------------------------------------------
--Initialize the program
set the action to the button returned of (display dialog "Create or view a list of favorites..." buttons{"Cancel","View","Create"} default button 3)
if the action is "Create" then
    create_text_file()
else
    open_favorites()
end if

---------------------------------SUBROUTINES--------------------------------------

on create_text_file()
    --get the URL of every tab of every window
    tell application "Safari"
        set theWindows to (get every document) as list
        repeat with i from 1 to the count of theWindows
            set this_Window to item i of theWindows
            set theTabs to (get every tab of this_Window) as list
            repeat with x from 1 to the count of theTabs
                set this_Tab to item x of theTabs
                set this_URL to (the URL of this_tab) as string
                set the end of these_URLs to this_URL
            end repeat
        end repeat
    end tell

    --put the URLs into a text document
    set newFile to (choose file name with prompt "Choose a name and location for the new file:" default location (path to desktop folder))
    try
        open for access newFile with write permission
        set the text item delimiters of AppleScript to return
        set the_URLs to these_URLs as string
        write the_URLS to file newFile
        close access newFile
    on error
        try
            close access newFile
        end try
    end try
    set the text item delimiters of AppleScript to ""
end create_text_file()

on open_favorites()
   --Verify whether you have saved any favorites with this script
   if these_URLs is {} then display dialog "You have not added any favorites with this script." with icon note buttons{"Cancel"}
   --there are favorites so open all the URLs you stored in the text file
   repeat with i from 1 to the count of these_URLs
       set this_URL to item i of these_URLs
       tell application "Safari" to make new tab at the end of tabs of document 1 with properties {URL:this_URL}
   end repeat
end open_favorites

Если у вас есть какие-либо вопросы, просто спросите. :)

0 голосов
/ 02 сентября 2009

Вы можете изменить этот бит-0-код, чтобы начать работу. Я использовал это, чтобы создать свой собственный плагин для закладок для одной вкладки. Вы можете открыть список URL в окне XUL, а затем выбрать те, которые вы хотите опубликовать / присвоить в одном месте.

function getGetDocData(){
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
               .getService(Components.interfaces.nsIWindowMediator);
var mainWindow = wm.getMostRecentWindow("navigator:browser");
var tab  = mainWindow.getBrowser().selectedTab;
titleDG = tab.label;
for(var i = 0; i < window.opener.length; i++){
    var doc = window.opener[i].document;
    if(doc.title == tab.label){
        hrefToDG = doc.location.href;
    }
}

}

0 голосов
/ 19 ноября 2008

Самым простым решением в Firefox является «Закладка всех открытых вкладок» (в меню закладок). Дайте этой «папке закладок» конкретное имя. Затем вы можете зайти в свой профиль (http://support.mozilla.com/en-US/kb/Profiles) и открыть файл «bookmarks.html», в котором содержится вся необходимая информация, а затем некоторая.

Если вы хотите использовать пользовательский интерфейс, проверьте Табу и «Sitzungs-Manager» (возможно, Session-Manager). Оба для Firefox 3.0 +

Taboo позволяет сохранить вкладку для «последующего чтения» (вроде как меню закладок, но всего одним щелчком мыши; также будет сохранен скриншот страницы).

Плагин диспетчера сеансов позволяет сохранять открытые в данный момент вкладки и окна и восстанавливать их позже.

...