我在YouTube上有一个我上传的视频,我希望更改yt:accessControls(尤其是评论调节)。我查看了YouTube API参考号here和here,但似乎无法正确更新它。这里是我的代码:如何在YouTube-API中正确应用yt:accessControl Java
//Strings declared beforehand: appName, developerId, username, password, and vidId.
YouTubeService service = new YouTubeService(appName, developerId);
service.setUserCredentials(username, password);
String videoEntryUrl = "http://gdata.youtube.com/feeds/api/users/default/uploads/" + vidId;
VideoEntry createdEntry = service.getEntry(new URL(videoEntryUrl), VideoEntry.class);
String originalXMLBlob = createdEntry.getXmlBlob().getBlob();
String atomXml = "<?xml version='1.0'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' gd:fields='yt:accessControl' xmlns:yt='http://gdata.youtube.com/schemas/2007'><yt:accessControl action='comment' permission='moderated'/></entry>";
GDataRequest request = service.createPatchRequest(new URL(createdEntry.getEditLink().getHref()));
request.getRequestStream().write(atomXml.getBytes("UTF-8"));
request.execute();
createdEntry = service.parseResponseData(request, VideoEntry.class);
String newXMLBlob = createdEntry.getXmlBlob().getBlob().substring(49);
//The substring(49) is because after you do a service.parseResponseData... it attaches a timestamp to the xmlBlob. To properly compare whether these are the same in the printlns I substring it.
System.out.println(newXMLBlob.equals(originalXMLBlob));
System.out.println(originalXMLBlob);
System.out.println(newXMLBlob);
createdEntry.update();
createdEntry.update();
newXMLBlob = createdEntry.getXmlBlob().getBlob().substring(49);
System.out.println(newXMLBlob.equals(originalXMLBlob));
System.out.println(originalXMLBlob);
System.out.println(newXMLBlob);
System.out.println("Done");
输出是:
false
<yt:accessControl permission='allowed' action='comment'/><yt:accessControl permission='allowed' action='commentVote'/><yt:accessControl permission='moderated' action='videoRespond'/><yt:accessControl permission='allowed' action='rate'/><yt:accessControl permission='allowed' action='embed'/><yt:accessControl permission='allowed' action='list'/><yt:accessControl permission='allowed' action='autoPlay'/><yt:accessControl permission='allowed' action='syndicate'/>
<yt:accessControl permission='moderated' action='comment'/><yt:accessControl permission='allowed' action='commentVote'/><yt:accessControl permission='moderated' action='videoRespond'/><yt:accessControl permission='allowed' action='rate'/><yt:accessControl permission='allowed' action='embed'/><yt:accessControl permission='allowed' action='list'/><yt:accessControl permission='allowed' action='autoPlay'/><yt:accessControl permission='allowed' action='syndicate'/>
false
<yt:accessControl permission='allowed' action='comment'/><yt:accessControl permission='allowed' action='commentVote'/><yt:accessControl permission='moderated' action='videoRespond'/><yt:accessControl permission='allowed' action='rate'/><yt:accessControl permission='allowed' action='embed'/><yt:accessControl permission='allowed' action='list'/><yt:accessControl permission='allowed' action='autoPlay'/><yt:accessControl permission='allowed' action='syndicate'/>
<yt:accessControl permission='moderated' action='comment'/><yt:accessControl permission='allowed' action='commentVote'/><yt:accessControl permission='moderated' action='videoRespond'/><yt:accessControl permission='allowed' action='rate'/><yt:accessControl permission='allowed' action='embed'/><yt:accessControl permission='allowed' action='list'/><yt:accessControl permission='allowed' action='autoPlay'/><yt:accessControl permission='allowed' action='syndicate'/>
Done
重要的是,从开始改变到结束没有。你可以看到我甚至试图做createdEntry.update();
,但这也不起作用。任何帮助将不胜感激!谢谢!
哦,还有最后一件事。我希望我的atomXml能够将访问控制设置为多种事物(视频响应,评分等)。我猜你只需添加更多yt:accessControl
标签,但在回答时,如果您有任何关于此的提示,我将不胜感激。再次感谢。
编辑:删除xml中的URL中的空间。这导致了产量变化(也进行了更新),这更有意义,但这不是理想的解决方案。
问题解决了,我只有34个声望点,所以我稍后会发布答案。 – kentcdodds 2012-03-14 17:14:35