Obtenga una URL incorrecta de la pestaña actual de Safari con Applescript

0

El sitio web my.yahoo.com tiene un error irritante (me sorprende que funcione) donde hacer clic en uno de sus enlaces a veces produce una URL como la siguiente:

http://sports.yahoo.comhttps//sports.yahoo.com/news/rested-kings-ready-host-not-rested-hurricanes-082033171--nhl.html

En el ejemplo, puedes ver que " enlace " se repite dos veces. Quería encontrar la forma más fácil de corregir estas URL mientras navegaba. Lamentablemente, ni siquiera puedo realizar la primera acción necesaria, que consiste en extraer la URL de la barra de título de la pestaña actual. Usted pensaría que el siguiente comando a Safari en un Applecript funcionaría:

set thisTabUrl to the URL of the current tab in window 1

Lamentablemente, al parecer, si la URL no es válida, obtengo:

file:///Applications/Safari.app/Contents/Resources/

¿Hay alguna otra manera en que pueda convencer a Safari para que me brinde el contenido del área de URL de la pestaña actual para luego procesarla en Applescript, que luego intentará establecer la URL de la pestaña actual en la url correcta y abrir esa página? ? Estoy bastante seguro de que tengo el resto del código necesario para abrir la URL correcta en esa misma pestaña.

Para obtener crédito adicional, ¿cuál podría ser la forma más fácil de iniciar este script cuando se encuentra con una URL tan mala mientras navega en Safari?

    
pregunta wtfk 10.12.2016 - 00:35

1 respuesta

1

He intentado varias veces reproducir el problema, pero no pude. Entonces, esta solución se probó ingresando manualmente una URL estándar dos veces, a través de copiar y pegar, y desde allí. También utilicé la URL incorrecta que has mostrado en tu pregunta.

En Safari, esto esencialmente intenta construir una URL válida a partir de la doble URL utilizando AppleScript ejecutado como un Servicio de Automatismo al presionar B y establece el documento actual ( ventana, pestaña) a la URL apropiada.

Cree un servicio de Automator con la configuración como se muestra en la imagen a continuación y guárdelo como:
Corregir URL incorrecta

Luego, en Preferencias del sistema > Teclado > Accesos directos > Servicios, desplácese hasta General, seleccione
Corregir URL incorrecta, haga clic en Agregar acceso directo y escriba: bdB

AppleScriptcódigoparaelServicioAutomator:

onbadURL()try--#PutthebadURLontheClipboard.tellapplication"Safari"
            activate
            delay 0.5
            tell application "System Events"
                key code 37 using {command down} # ⌘L
                delay 0.5
                key code 8 using {command down} # ⌘C
                delay 0.5
            end tell
        end tell
        --    # Retrieve the bad URL from the Clipboard.
        set theBadURL to get (the clipboard)
        --    # Trim the first eight characters off of 'theBadURL'.
        --    # This is done because the bad URL can have an occurrence of both 'http' and 'https' in the string in either
        --    # order and by trimming off, it lessens the amount of logic necessary to build a good URL from the bad URL.
        --    # The good URL, after all, is going to be built from what's after the second occurrence of either one. 
        --    # Test first for 'https' then 'http', as that makes more sense logically to do so.            
        set theBadURL to do shell script "awk 'BEGIN { print substr(\"" & theBadURL & "\", 9) }'"
        --    # Build the good URL from the bad URL.
        set theGoodURL to do shell script "awk -F 'https.*//' '{print $2}'<<<" & quoted form of theBadURL
        if theGoodURL is not equal to "" then
            set theGoodURL to "https://" & theGoodURL
        else
            set theGoodURL to do shell script "awk -F 'http.*//' '{print $2}'<<<" & quoted form of theBadURL
            if theGoodURL is not equal to "" then
                set theGoodURL to "http://" & theGoodURL
            end if
        end if
        return theGoodURL
    on error eStr number eNum
        display dialog eStr & " number " & eNum buttons {"OK"} default button 1 with icon caution
        return
    end try
end badURL

on run
    try
        tell application "Safari"
            activate
            set thisTabsURL to (get URL of current tab of window 1)
            --    # Check for bad URL and if found, build a good URL from it.
            tell current application
                if thisTabsURL contains "file:" then
                    set theGoodURL to my badURL()
                    tell application "Safari" to set the URL of the front document to theGoodURL
                end if
            end tell
        end tell
    on error eStr number eNum
        display dialog eStr & " number " & eNum buttons {"OK"} default button 1 with icon caution
        return
    end try
end run

Tenga en cuenta que si bien probé esto bajo OS X 10.8.5 y macOS 10.12 y funcionó bajo mis condiciones de prueba, no obstante, es posible que no funcione correctamente cada vez que esté bajo cada condición y, por lo tanto, ¿por qué try y on error < em> enunciados se están utilizando en el código . Esperamos que esto atrape cualquier error (s) con la salida apropiada para luego mejorar el código para manejar cualquier error (s) que no ocurrió durante mi prueba.

    
respondido por el user3439894 11.12.2016 - 03:05

Lea otras preguntas en las etiquetas