2012-01-01 3 views
0

У меня есть проект для клиента, который будет использовать поток комментариев YouTube как тип «чата». Я делаю аутентифицированный звонок на YouTube, используя API-интерфейсы GData с Zend Framework. Я ищу способ запустить скрипт, который вытащит поток комментариев с помощью кнопки обновления, чтобы пользователям не приходилось обновлять страницу, чтобы увидеть их комментарий или любые новые комментарии, которые появляются. Я считаю, что это может быть достигнуто с помощью JQuery, но после поиска я действительно не нашел хорошего объяснения относительно того, как. Вот несколько краткого snippits моего кода, чтобы дать вам некоторое представление о том, что я смотрю на:Получите комментарии Youtube с jQuery

$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey); 
$_SESSION['yt'] = serialize($yt); 

/***************** Adds a comment if applicable *****************/ 

if(isset($_POST['btn_submit'])) 
{ 
$videoEntry = $yt->getVideoEntry('QQoFLrZ5C3M'); 

$newComment = $yt->newCommentEntry(); 
$newComment->content = $yt->newContent()->setText($_POST['comment']); 

// post the comment to the comments feed URL for the video 
$commentFeedPostUrl = $videoEntry->getVideoCommentFeedUrl(); 
$updatedVideoEntry = $yt->insertEntry($newComment, $commentFeedPostUrl, 
'Zend_Gdata_YouTube_CommentEntry'); 
} 

         /****************************************************************/ 


<div id="coments"> 

$commentFeed = $yt->getVideoCommentFeed('QQoFLrZ5C3M'); 

echo '<div id="refresh"><a href="#" style="margin-right: 15px; border: 0;"><img src="../common/img/refresh.png" alt="refresh" border="0" /></a></div>'; 

foreach ($commentFeed as $commentEntry) { 
echo '<div class="comment">'; 
echo '<a href="http://youtube.com/user/' . utf8_decode(utf8_encode($commentEntry->author[0]->name->text)) . '" target="_blank" class="youtube_user">' . utf8_decode(utf8_encode($commentEntry->author[0]->name->text)) . '</a><br />'; 

echo '<span style="font-size: 14px;">' . utf8_decode(utf8_encode($commentEntry->content->text)) . '</span><br />'; 

// Format time 
$timeAgoObject = new convertToAgo; 
$ts = strtotime($commentEntry->updated->text); 
$timestamp = ($timeAgoObject -> makeAgo($ts)); // Then convert to ago time 

echo '<div class="yt_timestamp">' . $timestamp . '</div>'; 
echo '</div>'; 
} 
?> 
</div> 

Обратите внимание, что класс YouTube не всегда новый (отсюда сериализации в переменный сеансе) Я просто раздел утверждение if для легкого чтения.

+0

Просьба приложить дополнительные усилия для объяснения точной проблемы, которую вы пытаетесь решить. Например. исправить заголовок и объяснить связь между вопросом и образцом кода. Это сделает вопрос и его ответы более полезными для будущих читателей. –

ответ

1

Я создал пример для вас. В нем используется JUON API Youtube, несколько подробно описанный здесь: http://code.google.com/apis/youtube/2.0/reference.html#Comments_Feeds

Insead of XML Я использую JSON.

Чтобы получить «данные» ваше видео с JSON, используйте http://gdata.youtube.com/feeds/api/videos/YOURVIDEOID/comments

Пример: http://jsfiddle.net/A32H2/2/

//"The Dark Knight Rises trailer, sweded" comments 
//http://www.youtube.com/watch?v=KrmEyPkgDf8 

    <div id="comments"></div> 

    $.ajax({ 
     url: "http://gdata.youtube.com/feeds/api/videos/KrmEyPkgDf8/comments?v=2&alt=json&max-results=50", 
     //gets the max first 50 results. To get the 'next' 50, use &start-index=50 
     dataType: "jsonp", 
     success: function(data){ 
      $.each(data.feed.entry, function(key, val) { 

       comment = $("<div class='comment'></div>"); 

       author = $("<a target='_blank' class='youtube_user'></a>"); 
       author.attr("href", "http://youtube.com/user/" + val.author[0].name.$t); 
       author.html(val.author[0].name.$t); 

       content = $("<div style='font-size: 14px;' class='content'></div>"); 
       content.html(val.content.$t); 

       comment.append(author).append(content); 
       $('#comments').append(comment); 
      }); 
     } 
    }); 

Кроме того, я бы рекомендовал изменить название вашего вопроса на более описательный, такие как "Получить Youtube комментарии с JQuery"

+0

Ну, в связи с изменением названия вопроса, я также планирую публиковать комментарии, используя JQuery, и я надеюсь, что в случае, если кто-то, кто прочитал мой вопрос, был незнаком с API-интерфейсами GData, они все равно могли бы указать мне в правильном направлении с помощью JQuery. Спасибо за помощь! – drewwyatt

+0

Также - простите мое невежество здесь, но как я могу привязать это к кнопке обновления? Я предполагаю, что это будет функция onclick, но я действительно не разбираюсь в чем-либо, кроме PHP, честно. Не могли бы вы держать меня за руку? – drewwyatt

+0

Имеет смысл! Вы можете оставлять комментарии, используя API javascript. Ознакомьтесь с разделом «Добавление комментария» здесь. Вы отправили бы POST на тот же URL-адрес, что и выше, с описанием: http://code.google.com/apis/youtube/2.0/developers_guide_protocol.html#Comments – Vigrond

2

Вот основная идея:

  1. Представьте форму комментария пользователю
  2. Используйте jQuery, чтобы подключить событие отправки формы.()
  3. Отправьте форму через AJAX на ваш внутренний сценарий. (docs)
  4. Вставьте запись в вашу базу данных, как обычно.
  5. Эхо HTML для нового комментария.
  6. После завершения запроса jQuery вернет любой HTML-код, который вы выбрали. Осталось только добавить/добавить новый HTML-код в свой список комментариев. (docs)
+0

Большое спасибо за документацию, это очень помогло. – drewwyatt

Смежные вопросы