POST /2/media/upload
per caricare un video, il che richiede un flusso di lavoro diverso rispetto al caricamento di una singola immagine.
Per i caricamenti di video o segmentati, è necessario:
- Inizializzare il caricamento con il comando
INIT
- Caricare ogni segmento di byte con il comando
APPEND
- Completare il caricamento con il comando
FINALIZE
Nota: Consulta questo esempio di codice per un esempio scritto in Python.
Autenticazione
CONSUMER_KEY
, CONSUMER_SECRET
, ACCESS_KEY
e ACCESS_TOKEN
nella vostra App all’interno del vostro Project, nella dashboard del developer portal.
Passaggio 1: POST media/upload (INIT)
INIT
avvia una sessione di caricamento del file. Restituisce un media_id
che deve essere utilizzato per tutte le richieste successive. Il passo successivo dopo una risposta positiva al comando INIT
è il comando APPEND
.
Consulta le Best Practices per i vincoli e i requisiti sui file multimediali.
Esempio di richiesta
Nota: Quando si inviano richieste HTTP raw, la richiesta deve utilizzare il metodo POST con formato
multipart/form-data
o application/x-www-form-urlencoded
.id
(stringa) e media_key
(stringa). L’intero file deve essere caricato entro expires_after_secs
secondi.
Passaggio 2: POST media/upload (APPEND)
APPEND
viene utilizzato per caricare un blocco (intervallo consecutivo di byte) del file multimediale. Ad esempio, un file da 3 MB può essere suddiviso in 3 blocchi da 1 MB ciascuno e caricato tramite 3 richieste del comando APPEND
. Dopo che l’intero file è stato caricato, il passo successivo è chiamare il comando FINALIZE
.
Caricare un file multimediale in piccoli blocchi offre numerosi vantaggi:
- Maggiore affidabilità e percentuali di successo in condizioni di rete a bassa larghezza di banda
- I caricamenti possono essere messi in pausa e ripresi
- I singoli blocchi possono essere ritentati
- Possibilità di regolare le dimensioni dei blocchi in base alle condizioni di rete variabili, ad esempio su client mobili
segment_index
è l’indice ordinato del chunk del file. Deve essere compreso tra 0 e 999 inclusi. Il primo segmento ha indice 0, il secondo ha indice 1 e così via. Continua a caricare i chunk del file finché tutti i chunk non sono stati caricati.
Nota: Quando si effettuano richieste HTTP grezze, la richiesta deve essere in formato POST
multipart/form-data
.Nota: In caso di caricamento riuscito, verrà restituito un codice HTTP 2XX con un corpo della risposta vuoto.
Passaggio 3: POST media/upload (FINALIZE)
FINALIZE
va eseguito dopo che l’intero file multimediale è stato caricato tramite i comandi APPEND
. Se e solo se la risposta del comando FINALIZE
contiene un campo processing_info
, potrebbe essere necessario usare anche il comando STATUS
e attendere che restituisca esito positivo prima di procedere alla creazione del Post.
Esempio di richiesta
Nota: Quando si inviano richieste HTTP raw, la richiesta deve utilizzare il formato POST
multipart/form-data
oppure application/x-www-form-urlencoded
.media_id
(intero a 64 bit) e media_id_string
(stringa). Usa media_id_string
fornito nella risposta dell’API da JavaScript e da altri linguaggi che non possono rappresentare con precisione un intero lungo.
Il media_id
restituito è valido solo per expires_after_secs
secondi. Qualsiasi tentativo di usare mediaId dopo questo intervallo nelle altre chiamate API comporterà una risposta Bad Request (HTTP 4xx).
Se la risposta contiene un campo processing_info
, usa il comando STATUS
per effettuare il polling dello stato dell’operazione FINALIZE
. L’approccio di finalizzazione asincrona viene utilizzato nei casi in cui l’elaborazione dei media richiede più tempo. In futuro, l’elaborazione di video e GIF animate sarà supportata esclusivamente tramite finalizzazione asincrona. Questo comportamento è abilitato se una sessione di upload è stata initialized con il parametro media_category
, e quando il tipo di media è video o GIF animata.
Nota:
Se nella risposta NON è presente un campo
processing_info
, allora media_id
è pronto per essere utilizzato negli altri endpoint API.Passaggio 4: GET media/upload (STATUS)
STATUS
viene usato per verificare periodicamente l’avanzamento dell’elaborazione dei media. Una volta che la risposta del comando STATUS
restituisce succeeded
, puoi passare al passaggio successivo, che di solito consiste nel creare un Post con media_id
.
Nota:
Il comando STATUS va utilizzato se e (solo se) la risposta del comando
FINALIZE
o di un precedente comando STATUS contiene un campo processing_info
.Esempio di richiesta
Esempio di risposta
processing_info
, che fornisce informazioni sullo stato corrente dell’operazione di elaborazione dei media. Include un campo state
che segue il flusso di transizione: pending
-> in_progress
-> [failed
| succeeded
]. Non è possibile utilizzare il media_id
per creare Post o altre entità finché il campo state
non è impostato su succeeded
.
Passaggio 5: Pubblicare un Tweet con contenuti multimediali
POST /2/tweets
, includendo il media_id
per conto di un utente autenticato.
Esempio di richiesta