Come posso verificare se un file è disponibile per il download?

2

Il codice seguente genera un collegamento per scaricare il file HD da un sito ogni giorno, ma non sa come determinare se il link è valido o meno. Come posso verificare la validità del link?

set z to ""
set d to tid(tid(short date string of (current date), "/"), "")
set w to weekday of (current date)
set r to 10

if d > 20000000 then
    set Prefix to d as text
else
    set Prefix to (d + 20000000) as text
end if

on tid(input, delim)
    set {oldTID, my text item delimiters} to {my text item delimiters, delim}
    if class of input is list then
        set output to input as text
    else
        set output to text items of input
    end if
    set my text item delimiters to oldTID
    return output
end tid

set x to 1
set y to ((characters 1 thru 4 of Prefix) as string)

repeat with i from 1 to r

    if i < 10 then
        set x to "0" & i
    else
        set x to i
    end if

    set c to "http://streaming.hkjc.edgesuite.net/hdflash/racingfocus/" & y & "/" & Prefix & "/" & x & "/" & "chi/racingfocus_" & Prefix & "_" & x & "" & "_chi_2500kbps.mp4"

    set z to z & c & "" & return & return
    set i to i + 1

end repeat

display dialog z
    
posta Varela Margarita 01.11.2018 - 03:11
fonte

3 risposte

4

Di solito controllo il codice HTTP e poi esco da lì. Poiché questo è etichettato AppleScript, ecco un esempio di gestore che ho scritto:

use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions

set foundMP4 to my checkStream(c)

on checkStream(passedStream)
    try
        set serverCommand to "curl -o /dev/null -Iw '%{http_code}' " & passedStream
        set serverResult to do shell script serverCommand
        if serverResult does not start with "2" then
            return false
        else
            return true
        end if
    on error serverResult
        display dialog "Ran into issue checking server status, with error: " & serverResult with title "Server Check"
    end try
end checkStream

Dopo aver controllato il codice HTTP, puoi scrivere per lo script per scaricare il file.

    
risposta data 01.11.2018 - 14:41
fonte
0

Se il server lo supporta, dovresti essere in grado di fare qualcosa del genere:

curl -sfLS --head http://www,whatever.tld/this/path/here.ext

(Dovrebbe essere due - prima di head anche se è stato trasformato in un em-dash!)

E poi vuoi controllare il codice di stato HTTP .

Qualcosa del genere funzionerebbe:

URL="http://streaming.hkjc.edgesuite.net/hdflash/racingfocus/2018/20181101/01/chi/racingfocus_20181101_01_chi_2500kbps.mp4"

    # the 'tail -1' means "If there are more than one, just give me the last one"
    # which you'll need in case of redirects.
CODE=$(curl -sL --head "$URL" | awk -F' ' '/^HTTP/{print $2}' | tail -1)

case "$CODE" in
    404)
        echo "Not found: $URL"
    ;;

    200)
        echo "Found! $URL"
    ;;

    *)
        echo "Unknown Response ($CODE) for $URL"
    ;;

esac
    
risposta data 01.11.2018 - 14:27
fonte
-1

Non puoi sapere se esiste un file remoto a meno che tu non provi ad accedervi. Quindi in pratica è necessario provare a scaricare il file e quindi verificare la presenza di eventuali codici di errore restituiti.

    
risposta data 01.11.2018 - 07:14
fonte

Leggi altre domande sui tag