2012-01-01 90 views
0

我有一个客户端项目将使用YouTube评论流作为一种“聊天”。我正在使用带有Zend Framework的GData API对YouTube进行认证。我正在寻找一种方法来运行脚本,该脚本将使用刷新按钮提取评论流,以便用户不必刷新页面以查看他们的评论或出现的任何新评论。我相信这可以用JQuery来完成,但是经过一番搜索后,我还没有真正找到一个很好的解释。下面是我的代码一些简短snippits给你什么,我看一些想法:使用jQuery获取Youtube评论

$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

请些精力在解释你正在试图解决的确切问题。例如。修正题目并解释问题与代码示例之间的关系。这将使问题及其答案对未来的读者更有用。 – 2012-01-01 20:15:34

回答

1

我创建了一个例子供您使用。它利用Youtube的JSON API这里较详细:http://code.google.com/apis/youtube/2.0/reference.html#Comments_Feeds我使用JSON XML的

欧洲工商管理学院。

为了让使用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); 
      }); 
     } 
    }); 

此外,我会建议改变你的问题的标题更具说明性,如“使用jQuery获取Youtube评论”

+0

那么,关于更改问题标题,我也计划使用JQuery发布评论,我希望在阅读我的问题的人不熟悉GData API时,他们可能仍然能够指向我在JQuery的正确方向。感谢您的帮助! – drewwyatt 2012-01-01 22:02:34

+0

另外 - 原谅我在这里的无知,但我怎么能绑定到刷新按钮?我假设它是一个onclick函数,但我真的不熟悉PHP以外的其他任何东西。你介意握住我的手多一点? – drewwyatt 2012-01-01 22:11:00

+0

有道理!您也可以使用JavaScript API发布评论。查看这里的“添加评论”部分。您将张贴到与上述相同的网址,其中描述的内容为:http://code.google.com/apis/youtube/2.0/developers_guide_protocol.html#Comments – Vigrond 2012-01-01 22:15:52

2

以下是基本思路:

  1. 目前评论的形式向用户
  2. 使用jQuery挂钩表单提交事件。 ()
  3. 通过AJAX提交表单到后端脚本。 (docs
  4. 正常情况下将记录插入数据库。
  5. 回应新评论的HTML。
  6. 请求完成后,jQuery将返回任何HTML回显。剩下的就是在评论列表中添加/添加新的HTML。 (docs
+0

非常感谢你的文档,这非常有帮助。 – drewwyatt 2012-01-01 22:12:46