2011-09-26 9 views
5

Basta iniziare a scavare nell'API PHP di YouTube e ottenere il funzionamento dello script di caricamento Zend basato su browser. Tuttavia, non riesco a trovare alcuna documentazione su come recuperare lo stato del video dopo che è stato caricato. Il motivo principale per cui avrei bisogno è la gestione degli errori: devo sapere se il video è stato approvato da YouTube, dal momento che qualcuno potrebbe caricare tecnicamente un'immagine o un file troppo grande. Devo sapere che il video è stato approvato in modo da sapere quale messaggio visualizzare all'utente finale quando ritorna al sito (ad es. "Il tuo video è in diretta" o "Caricamento video non riuscito").YouTube PHP API - Ottieni lo stato del video caricato in precedenza?

Il caricamento basato su browser PHP di YouTube restituisce uno stato dei parametri URL di 200 anche se il formato o la dimensione non è corretto, il che ovviamente non è utile. Qualche idea su come altro ottenere queste informazioni dall'oggetto YT?

Nel complesso, quando un utente ritorna al sito, voglio poter creare un oggetto YT in base al suo specifico ID video e voglio essere in grado di confermare che non è stato rifiutato. Sto utilizzando ClientLogin di avviare l'obj YouTube:

$authenticationURL= 'https://www.google.com/accounts/ClientLogin'; 
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
       $username = '[email protected]', 
       $password = 'mypassword', 
       $service = 'youtube', 
       $client = null, 
       $source = 'MySource', // a short string identifying your application 
       $loginToken = null, 
       $loginCaptcha = null, 
       $authenticationURL); 

Qualche idea?

+0

Perché non è possibile controllare che l'utente non stia caricando un file troppo grande prima di inviarlo a YouTube? – Olli

+3

Perché quella non è la domanda che sto chiedendo :) – MindSculpt

+0

sì, non è così. Ma non sarebbe più semplice controllare se il file è troppo grande? – Olli

risposta

4

Whew, finalmente trovato la risposta a questo dopo aver cercato in giro e mettendo insieme il codice per gli ultimi giorni. Dopo aver creato l'oggetto $yt, utilizzare il seguente per controllare lo stato:

$yt->setMajorProtocolVersion(2); 
$youtubeEntry = $yt->getVideoEntry('YOUR_YOUTUBE_VID_ID', null, true); 

if ($youtubeEntry->getControl()){ 
    $control = $youtubeEntry->getControl(); 
    $state = $control->getState()->getName(); 
} 

Facendo eco fuori $state visualizza la stringa 'failed' se il video non è stato approvato per qualsiasi motivo. Altrimenti è vuoto, il che significa che è stato approvato ed è valido (Indovinare gli altri nomi di stato potrebbe essere: elaborazione, rifiutato, non riuscito, limitato, come suggerito da Mient-jan Stelling sopra).

Pazzo di quanto questa risposta fosse difficile da mettere insieme per le API di YouTube per la prima volta. Risolto! (Pats self on back)

1

Avete un CallToken se è così facile.

Per questo esempio utilizzo Zend_Gdata_Youtube con Zend AuthSub.

QUANDO il caricamento del video è avvenuto con un CallToken, con questo token di chiamata è possibile accedere allo stato del video.

$authenticationURL= 'https://www.google.com/accounts/ClientLogin'; 
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
      $username = '[email protected]', 
      $password = 'mypassword', 
      $service = 'youtube', 
      $client = null, 
      $source = 'MySource', // a short string identifying your application 
      $loginToken = null, 
      $loginCaptcha = null, 
      $authenticationURL); 

$youtube = new Zend_Gdata_YouTube($httpClient, '', NULL, YOUTUBE_DEVELOPER_KEY); 

$youtubeEntry = $youtube->getFullVideoEntry('ID_OF_YOUTUBE_MOVIE'); 
// its the 11 digit id all youtube video's have 

a $ youtubeEntry tutti i dati sul video è presente

$state = $youtubeEntry->getVideoState(); 

se lo stato è nullo allora il video è disponibile altro fanno di stato una stringa come Questo.

(string) $state->getName(); 

Ci sono circa 4 nomi di stato importanti. (elaborazione, rifiutato, non riuscito, limitato)

+0

Non sono sicuro di poter usare qui un calltoken, sto permettendo agli utenti di pubblicare tramite web upload su uno specifico account di canale YouTube. , solo un upload su un canale Pensieri – MindSculpt

+0

Se aiuta, sto usando ClientLogin per avviare l'oggetto Ho aggiunto il codice nella domanda originale sopra – MindSculpt

+0

Ok, allora ci sei quasi. Hai un httpclient ottenere lo stato del tuo video è abbastanza semplice ora ho fatto una modifica in alto, quindi spero che ti sia d'aiuto. –

Problemi correlati