Voglio creare un programma con Automator e youtube-dl

-3

Voglio creare un'app con Automator su macOS Sierra (MacBook Pro 2012) che recupera gli URL di tutte le pagine aperte in Google Chrome e li aggiungo a una funzione che ho creato in base a youtube-dl.

La funzione chiama go:

function go {
    youtube-dl "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$16" "$17"
}

Gli URL delle pagine dovrebbero sostituire le variabili $ 1 $ 2 .....

    
posta simoowolf 14.06.2017 - 01:32
fonte

1 risposta

2

Il codice di AppleScript , mostrato sotto, ha il seguente aspetto:

  • Se Google Chrome è in esecuzione, crea un elenco di ogni scheda di ogni finestra .
  • Cerca "YouTube" nel titolo di ogni scheda di ogni finestra nell'elenco .
  • Se il titolo di una scheda contiene "YouTube", aggiunge l' URL di quella scheda a un elenco di URL .
  • Se la lista di URL non è vuota, cambia directory nella cartella Download e poi scarica il video di ciascun URL nel elenco di URL , uno alla volta.
  • Se la lista di URL non è vuota, visualizza una notifica all'avvio del download e, al termine, una volta completata.
on run
    tell application "Google Chrome"
        if running then
            set theseURLs to {}
            set theSearchString to "YouTube"
            set theWindowList to every window
            repeat with thisWindow in theWindowList
                set theTabList to every tab of thisWindow
                repeat with thisTab in theTabList
                    if theSearchString is in (title of thisTab as string) then
                        set end of theseURLs to (URL of thisTab as string)
                    end if
                end repeat
            end repeat
        else
            tell current application
                display notification "Google Chrome is not open!"
                return
            end tell
        end if
    end tell
    tell current application
        if theseURLs is not {} then
            display notification "Downloading YouTube Video..."
            repeat with thisURL in theseURLs
                do shell script "cd \"$HOME/Downloads\"; ./youtube-dl -q --no-warnings " & quoted form of thisURL
            end repeat
            display notification "YouTube Video Downloading Finished."
        end if
    end tell
end run

Questo codice AppleScript può essere utilizzato in un'applicazione AppleScript o in Esegui AppleScript azione in un'applicazione Automator .

Nota: l'esempio precedente code non impiega tutte le possibili forme di gestione degli errori e intende solo mostrare uno dei molti modi in cui per raggiungere un obiettivo come il download di un video YouTube da ciascuna scheda YouTube in Google Chrome utilizzando youtube-dl . L'onere è sempre sull'utente di aggiungere / utilizzare la gestione degli errori appropriata come necessario / voluto. Ciò includerebbe l'utilizzo di try istruzioni e on error gestori come / ove appropriato. Anche se, come attualmente codificato, dovrebbe funzionare senza quel livello di gestione degli errori .

Se questo codice non è accettabile al posto della tua funzione go , puoi modificare il codice se necessario / voluto l'obiettivo finale di scaricare ogni video di YouTube di ogni scheda di ogni finestra in Google Chrome che ha "YouTube" nel titolo ( che questo codice già fa ).

Il PATH passato a do shell script comando è /usr/bin:/bin:/usr/sbin:/sbin , e se youtube-dl non è in quel PATH , quindi includi il nome percorso completo em> al eseguibile . Come codificato nell'esempio code , ce l'ho nella mia cartella Download e poiché prima ho cambiato la directory , tutto ciò che dovevo fare era premettalo con: ./

Anche come codificato, perché sta cercando il titolo di ogni scheda per "YouTube", se l' URL non è sotto forma di , per esempio https://www.youtube.com/watch?v= , scaricherà tutti i video su quella pagina YouTube . In altre parole, se è nella forma di ad es. https://www.youtube.com/results?search_query= , quindi eseguirà molto download da quella pagina.

Se questo è un problema, cambia le seguenti righe di codice come mostrato:

  • Modifica: set theSearchString to "YouTube"

  • A: set theSearchString to "youtube.com/watch"

  • Modifica: if theSearchString is in (title of thisTab as string) then

  • A: if theSearchString is in (URL of thisTab as string) then

Quindi solo gli URL in quella forma dell'URL vengono aggiunti alla lista di URL per essere scaricato.

    
risposta data 14.06.2017 - 03:54
fonte

Leggi altre domande sui tag