AppleScript - Jak przekonwertować tekst linku YouTube na osadzony tekst HTML?

0

Chcę przekonwertować „tekst linku YouTube (ze schowka)” na „tytuł YouTube i osadzić tekst HTML” i skopiować do schowka

Z Jabłkiem


na przykład,

  1. Kopiuję

    https://www.youtube.com/watch?v=QBGaO89cBMI

do schowka

  1. uruchom skrypt jabłkowy
  2. następnie tekst (Title and EmbedHTML)

    Radiohead - Lift<p><iframe width="640" height="360" src="https://www.youtube.com/embed/QBGaO89cBMI?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>

skopiowane do schowka

rhrudxo
źródło
Czy moja odpowiedź była dla ciebie pomocna?
user3439894,

Odpowiedzi:

1

Ten pierwszy skrypt AppleScript działa w oparciu o kroki opisane w pytaniu.

tell current application
    set theURL to the clipboard
    if theURL contains "youtube" then
        try
            set theVideoID to do shell script "sed -e 's#.*=##'<<<" & the quoted form of theURL
            set theVideoTitle to do shell script "curl -s " & theURL & " | grep 'eow-title' | sed -e 's#.*title=\"##' -e 's#\">.*##'"
            set theEmbedLinkSeg1 to "<p><iframe width=\"640\" height=\"360\" src=\"https://www.youtube.com/embed/"
            set theEmbedLinkSeg2 to "el=0&amp;showinfo=0\" frameborder=\"0\" allowfullscreen></iframe>"
            set the clipboard to theVideoTitle & theEmbedLinkSeg1 & theVideoID & theEmbedLinkSeg2
        on error
            display dialog "An error occured during processing. Check the URL and or Script Code." buttons {"OK"} ¬
                default button 1 with title "Processing Error"
            return
        end try
    else
        display dialog "The URL on the Clipboard did not contain a YouTube URL in the expected format." buttons {"OK"} ¬
            default button 1 with title "Processing Error"
        return
    end if
end tell

Zakładając, że nie wystąpił błąd , Schowek zawiera teraz informacje o dołączonym łączu.


Jeśli przez przypadek robisz to w Safari , i są na YouTube stronie i ma przetwarzać, bez konieczności najpierw skopiować docelowy adres URL do schowka , a następnie przy użyciu szybciej curl, podobnie jak w pierwszym scenariuszu , aby uzyskać tytuł ( theVideoTitle) , a następnie poniższy skrypt AppleScript jest inną drogą.

tell application "Safari"
    tell document 1
        set theURL to (get URL)
        set theVideoTitle to do JavaScript "document.getElementById('eow-title').innerText;"
    end tell
end tell

tell current application
    if theURL contains "youtube" then
        try
            set embedLinkSeg1 to "<p><iframe width=\"640\" height=\"360\" src=\"https://www.youtube.com/embed/"
            set embedLinkSeg2 to "el=0&amp;showinfo=0\" frameborder=\"0\" allowfullscreen></iframe>"
            set theVideoID to my getVideoID(theURL)
            set the clipboard to theVideoTitle & embedLinkSeg1 & theVideoID & embedLinkSeg2
        on error
            display dialog "Please verify Safari's current tab is at YouTube with the expected URL format." buttons {"OK"} ¬
                default button 1 with title "Processing Error"
            return
        end try
    else
        display dialog "Safari's current tab is not at YouTube." & linefeed & linefeed & ¬
            "Please select the correct tab and try again." buttons {"OK"} default button 1 with title "Processing Error"
        return
    end if
end tell

on getVideoID(theTextString)
    set TID to AppleScript's text item delimiters
    set AppleScript's text item delimiters to {"="}
    set theTextString to text item 2 of theTextString
    set AppleScript's text item delimiters to TID
    return theTextString
end getVideoID

Zakładając, że nie wystąpił błąd , Schowek zawiera teraz informacje o łączu do osadzenia.


Jeśli używasz Google Chrome , zmień następujące wiersze w drugim skrypcie AppleScript w następujący sposób:

Zmiana:

tell application "Safari"
    tell document 1
    set theVideoTitle to do JavaScript "document.getElementById('eow-title').innerText;"

Do:

tell application "Google Chrome"
    tell active tab of window 1
    set theVideoTitle to execute javascript "document.getElementById('eow-title').innerText;"

Zmienić również Safari'sw display dialog poleceniach do:Google Chrome's


Uwaga: W pierwszej AppleScript skryptu , uzyskanie wartości w zmiennej theVideoID od wartości w zmiennej theURL w schowku odbywa się za pomocą do shell script polecenia a sedjednak można to zrobić za pomocą getVideoID programu obsługi wykorzystywanego w drugim AppleScript scenariusz , jak w poniższym przykładzie:

tell current application
    set theURL to the clipboard
    if theURL contains "youtube" then
        try
            set theVideoID to my getVideoID(theURL)
            set theVideoTitle to do shell script "curl -s " & theURL & " | grep 'eow-title' | sed -e 's#.*title=\"##' -e 's#\">.*##'"
            set theEmbedLinkSeg1 to "<p><iframe width=\"640\" height=\"360\" src=\"https://www.youtube.com/embed/"
            set theEmbedLinkSeg2 to "el=0&amp;showinfo=0\" frameborder=\"0\" allowfullscreen></iframe>"
            set the clipboard to theVideoTitle & theEmbedLinkSeg1 & theVideoID & theEmbedLinkSeg2
        on error
            display dialog "An error occured during processing. Check the URL and or Script Code." buttons {"OK"} ¬
                default button 1 with title "Processing Error"
            return
        end try
    else
        display dialog "The URL on the Clipboard did not contain a YouTube URL in the expected format." buttons {"OK"} ¬
            default button 1 with title "Processing Error"
        return
    end if
end tell

on getVideoID(theTextString)
    set TID to AppleScript's text item delimiters
    set AppleScript's text item delimiters to {"="}
    set theTextString to text item 2 of theTextString
    set AppleScript's text item delimiters to TID
    return theTextString
end getVideoID

Zakładając, że nie wystąpił błąd , Schowek zawiera teraz informacje o dołączonym łączu.

użytkownik3439894
źródło
0

Spróbuj tego. Nie zawiera on początkowego bitu z tytułem (nie jestem pewien, jak najlepiej go wykorzystać), ale poza tym powinien działać świetnie.

set video_id to trimText(the clipboard, "https://www.youtube.com/watch?v=", "beginning")
set the clipboard to ("<p><iframe width=\"640\" height=\"360\" src=\"https://www.youtube.com/embed/" & (video_id) & "?rel=0&amp;showinfo=0\" frameborder=\"0\" allowfullscreen></iframe>")
display dialog (the clipboard)

on trimText(theText, theCharactersToTrim, theTrimDirection)
    set theTrimLength to length of theCharactersToTrim
    if theTrimDirection is in {"beginning", "both"} then
        repeat while theText begins with theCharactersToTrim
            try
                set theText to characters (theTrimLength + 1) thru -1 of theText as string
            on error
                -- text contains nothing but trim characters
                return ""
            end try
        end repeat
    end if
    if theTrimDirection is in {"end", "both"} then
        repeat while theText ends with theCharactersToTrim
            try
                set theText to characters 1 thru -(theTrimLength + 1) of theText as string
            on error
                -- text contains nothing but trim characters
                return ""
            end try
        end repeat
    end if
    return theText
end trimText

Jeśli nie chcesz, aby za każdym razem pojawiało się okno dialogowe, po prostu usuń trzeci wiersz.

JMY1000
źródło