0 votos

Obtener bad URL de Safari en la ficha actual con Applescript

El sitio web my.yahoo.com tiene un irritante bug (me sorprende es que funciona) cuando haga 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, se puede ver que "http://sports.yahoo.com" se repite dos veces. Quería encontrar la manera más fácil de corregir estas direcciones Url, mientras que el surf. Tristemente, ni siquiera puedo realizar la primera acción necesaria, que es tirar la URL de la barra de título de la pestaña actual. Se podría pensar de enviar el siguiente comando para Safari en un Applescript funcionaría:

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

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

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

Existe alguna otra manera de la que puedo coaxial Safari para darme el contenido del área de dirección URL de la ficha actual para, a continuación, proceso en el Applescript, que, a continuación, intente configurar la ficha actual de la URL a 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 crédito extra, lo que podría ser la forma más fácil de iniciar esta secuencia de comandos cuando se enfrentan a una mala dirección URL al navegar en Safari?

1voto

user3439894 Puntos 5883

He intentado numerosas veces para reproducir el problema, sin embargo no podía. Así que esta solución fue probado por la introducción manual de una dirección URL estándar dos veces, a través de copiar y pegar, e ir de allí. También he usado la mala dirección URL que has mostrado en tu pregunta.

En Safari, básicamente, se trata de construir una dirección URL válida a partir de la doble dirección URL usando AppleScript que se ejecute como un Automator Servicio al presionar B y establece el documento actual (ventana o pestaña) a la URL correcta.

Crear un Automator Servicio con la configuración como se muestra en la imagen a continuación y guárdelo como:
Corregir la Mala URL

A continuación, en Preferencias del Sistema > Teclado > accesos directos > Servicios, desplácese hacia abajo a lo General, seleccione
Corregir la Mala dirección URL, haga clic en Agregar acceso directo y tipo: B

Fix Bad URL Automator Service


AppleScript código para el Automator Servicio:

on badURL()
    try
        --    # Put the bad URL on the Clipboard.
        tell application "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 mientras he probado esto en OS X 10.8.5 y macOS 10.12 y funcionó bajo mis condiciones de prueba, sin embargo puede que no funcione correctamente cada vez que bajo cualquier condición y por lo tanto, por la try y on error declaraciones están siendo utilizadas en el código. Esperemos que este interceptar cualquier error(s) con salida correspondiente para luego mejorar el código para controlar cualquier error(s) que no se producen durante mis pruebas.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X