2012-03-14 13 views
0

yt:accessControlsを変更したい(特にコメントのモデレート)YouTubeにアップロードしたビデオがあります。私はYouTube APIリファレンスherehereを見てきましたが、正しく更新されていないようです。YouTube-API Javaでyt:accessControlを正しく適用する方法

//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();をやってみることもできますが、どちらもうまくいきません。どんな助けでも大歓迎です!ありがとう!

ああ、最後の1つです。私は、atomXmlが複数のもの(ビデオレスポンス、評価など)へのアクセスコントロールを設定できるようにしたいと思います。私はあなたにちょうどより多くのyt:accessControlタグを追加することを推測しているが、それについてのヒントがあれば答えるには、私はそれを感謝します。再度、感謝します。

編集:xmlのURLの空白を削除しました。これは出力の変更を引き起こしました(また更新されました)。これは理にかなっていますが、望ましい解決策ではありません。

+0

問題は解決しましたが、私は34の評判ポイントしか持っていませんが、後で回答を投稿します。 – kentcdodds

答えて

2

私が元々xmlでスペースの問題を抱えていなかったのであれば、この質問を投稿する必要はありませんでした。ビデオをアップロードした直後にyt:accessControlを更新できないことが分かります。だから代わりに私はそれらをアップロードし、それらがすべて終わったら、それぞれのyt:accessControlを更新するつもりです。これが後の方に役立つことを願っています。

ああ、ところで、私はあなたが一度にいくつかのyt:accessControlsを提出できると確信しています。ハッピーコーディング!

関連する問題