2011-09-26 20 views
5

Acabo de empezar a profundizar en la API de PHP de YouTube y obtuve el script de carga Zend basado en navegador funcionando. Sin embargo, no encuentro ninguna documentación sobre cómo recuperar el estado del video una vez que se ha cargado. La razón principal por la que necesitaría esto es por el manejo de errores: necesito saber si el video fue aprobado por YouTube, ya que alguien podría subir técnicamente una imagen o un archivo demasiado grande. Necesito saber que la videograbadora fue aprobada para que sepa qué mensaje mostrar al usuario final cuando vuelva al sitio (es decir, 'Su video está en vivo' o 'Error al cargar video').YouTube PHP API - ¿Obtiene el estado del video subido anteriormente?

La carga basada en el explorador PHP de YouTube devuelve un estado de parámetro de URL de 200, incluso si el formato o tamaño es incorrecto, lo que por supuesto no es útil. ¿Alguna idea sobre cómo obtener esta información del objeto YT?

Con todo, cuando un usuario regrese al sitio, quiero poder crear un objeto YT basado en su ID de video específico, y quiero poder confirmar que no fue rechazado. Estoy usando ClientLogin para iniciar el obj de 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); 

¿Alguna idea?

+0

¿Por qué no puedes verificar que el usuario no está cargando un archivo demasiado grande antes de enviarlo a YouTube? – Olli

+3

Porque esa no es la pregunta que estoy preguntando :) – MindSculpt

+0

sí que no es eso. ¿Pero no sería más fácil simplemente verificar si el archivo es demasiado grande? – Olli

Respuesta

4

Whew, finalmente encontró la respuesta a esto después de buscar y juntar el código de los últimos días. Después de crear el objeto $yt, utilice el siguiente para comprobar el estado:

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

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

Haciendo eco a cabo $state muestra la cadena 'failed' si el vídeo no fue aprobado por la razón que sea. De lo contrario, está vacío, lo que significa que fue aprobado y está listo para continuar (Adivinando que los otros nombres de estado serían: procesamiento, rechazado, fallado, restringido, como sugirió Mient-jan Stelling más arriba).

Qué locura fue esta respuesta para armar para los principiantes de API de YouTube. Resuelto (Pats en la parte de atrás)

1

¿Tiene un CallToken si es tan fácil?

Para este ejemplo, uso Zend_Gdata_Youtube con Zend AuthSub.

Al cargar su video tiene un CallToken, con este token de llamada puede acceder al estado 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 

en $ youtubeEntry todos sus datos sobre el vídeo está presente

$state = $youtubeEntry->getVideoState(); 

si el estado es nulo, el vídeo está disponible si no, que del estado de una cadena como esta.

(string) $state->getName(); 

Hay cerca de 4 nombres de estados importantes. (procesamiento, rechazado, fallado, restringido)

+0

) No estoy seguro si puedo usar una calltoken aquí, estoy permitiendo que los usuarios publiquen a través de la carga web en una cuenta específica de un canal de YouTube. No se usa autenticación de inicio de sesión o de usuario. , solo una carga en un canal. Pensamientos? – MindSculpt

+0

Si es útil, estoy usando ClientLogin para iniciar el objeto. He agregado el código en la pregunta original anterior. – MindSculpt

+0

Bien, entonces está casi allí. Tiene un httpclient para obtener el estado de su video es bastante fácil ahora. He hecho una edición arriba, así que espero que ayude. –

Cuestiones relacionadas