Applescript ile Safari'nin şu anki sekmesinden hatalı URL al


0

My.yahoo.com web sitesinde sinir bozucu bir hata var (hiç işe yarayacağına şaşırdım), bağlantılarından birine tıklamak bazen aşağıdaki gibi bir URL üretir:

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

Örnekte, " http://sports.yahoo.com " un iki kez tekrarlandığını görebilirsiniz . Gezinirken bu URL'leri düzeltmenin en kolay yolunu bulmak istedim. Maalesef, URL'yi geçerli sekmenin başlık çubuğundan çekmek için gerekli olan ilk işlemi bile yapamıyorum . Bir Applescript'te aşağıdaki komutu Safari'ye göndermenin işe yarayacağını düşünürsünüz:

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

Ne yazık ki, görünüşe göre, URL geçersizse, alıyorum:

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

Geçerli sekmenin URL alanının içeriğini Applescript’te işlemek için kullanacağım, bu durumda geçerli sekmenin URL’sini doğru URL’ye ayarlayıp o sayfayı açmaya çalışacak başka bir yöntem var mı? Aynı sekmede doğru URL'yi açmak için gerekli kodun geri kalanına sahip olduğumdan eminim.

Ekstra kredi için, Safari’de gezinirken çok kötü bir URL’yle karşılaştığınızda bu senaryoyu başlatmanın en kolay yolu ne olabilir?


Safari Eklentileri'ne bakmalısınız.
LH16

Hava durumunu bilmiyorum veya görmedim, gönderdiğim yanıtı görmedim, ancak sildim, çünkü yazdıktan sonra, örneğinizdeki URL’nin yalnızca iki kat URL’nin değil, kök URL’nin ve bağlanan URL’nin (I tahmin etmenin en iyi yolu budur). Yani kullandığım mantık düzgün çalışmayacaktı. Biraz daha test yapacağım ve neyle sonuçlanacağımı seversem, cevabı düzenler ve geri alırım.
user3439894,

Sen örnekte, bunu görebiliyorum" dedi "http://sports.yahoo.com"ve örnek olduğu gibi bu doğru değildir http://, birinci ve ardından https//not, sikincisi ilk değil ve ikinci eksik :. Ne gönderdiniz Yani eğer Bir yazım hatası yaparken, lütfen sorunuzu Safari’den aldığınızda tam olarak kötü bir URL göndererek
düzeltin

Tamam, nihayet bu soruya tekrar bakma ve sildiğim orijinal cevabı değiştirme şansım oldu. Umarım bu sizin için işe yarayacak.
user3439894

Yanıtlar:


1

Sorunu yeniden oluşturmak için defalarca denedim, ancak yapamadım. Dolayısıyla bu çözüm, standart bir URL’yi iki kez elle girerek, kopyalayıp yapıştırıp oradan çıkarak test edildi. Sorunuzda gösterdiğiniz kötü URL'yi de kullandım.

Safari'de bu B, geçerli belgeye (pencere, sekme) basıldığında ve uygun URL'ye ayarlandığında, AppleScript çalıştırmak için AppleScript çalıştırmasını kullanarak çift URL'den geçerli bir URL oluşturmaya çalışır .

Aşağıdaki resimde gösterilen ayarlarla bir Automator Hizmeti oluşturun ve aşağıdaki şekilde kaydedin:
Kötü URL'yi Onar

Ardından, Sistem Tercihleri> Klavye> Kısayollar> Hizmetler bölümünde, Genel'e gidin,
Kötü URL'yi Düzelt'i seçin , Kısayol Ekle'yi tıklayın ve yazın:B

Kötü URL Otomator Hizmetini Onar


Automator Hizmeti için AppleScript kodu :

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

Bunu OS X 10.8.5 ve macOS 10.12 altında test ederken ve test şartlarım altında çalıştığım halde, her koşulda her zaman düzgün çalışmayabilir ve bu nedenle tryve on error ifadelerinin neden kodda kullanıldığını unutmayın . Umarım bu, herhangi bir hatayı uygun çıktıyla hapsedecek ve daha sonra testim sırasında gerçekleşmemiş herhangi bir hatayı düzeltecek kodu geliştirecektir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.